micky123
Hola a todos,
Estoy tratando de crear una tabla de percentiles en Powerbi pero tengo problemas para hacerlo.
La siguiente captura de pantalla muestra la versión de Excel:
A partir de esto, podemos ver que mi percentil pasa de aumentar en 0.01 en 0.05 a 0.05 en 0.10.
Así que creé una tabla «Ingresar datos» en PowerBi y pegué los valores de esta columna:
Esto me permitió crear una tabla en PowerBi con los valores de percentiles que quería usar, pero encontré un problema después de este paso.
Tengo 2 mesas,
tabla de estadísticas: contiene la venta total y el costo
tabla de tallas – donde tengo el tamaño del lugar
Estas 2 tablas tienen relación.
Ahora no sé cómo usar PERCENTILE.INC para crear una tabla según la primera captura de pantalla.
Espero que mi descripción sea clara, si no, hágamelo saber.
Gracias por tu tiempo.
Saludos cordiales,
Rahul
micky123
En respuesta a McCow
@McCow Gracias por la explicación, he intentado seguir los mismos pasos para los datos de producción y parece haber un problema.
¿Podría señalar qué estoy haciendo mal, por favor? Aquí está el archivo pbi actualizado: https://1drv.ms/u/s!Aghc93erq8rBcUhH5N_y1X_MXN8
He creado 3 tablas nuevas exactamente en la misma estructura:
size_prod, stats_prod, Persentille_prod
Gracias de nuevo por tu tiempo, paciencia. ¡Estoy aprendiendo mucho de ti!
Saludos cordiales
Greg_Deckler
No, lo siento, no está claro. ¿Cuál es el problema que encontró? ¿Cuál es el resultado final que busca lograr? ¿Puede publicar datos de muestra de su segunda tabla? ¿Cómo se relacionan las tablas?
micky123
En respuesta a Greg_Deckler
Hola @Greg_Deckler,
El resultado final que busco lograr es el siguiente:
tabla 1
Fecha | IDENTIFICACIÓN | Ventas | Costo |
01/01/2017 | 40505 | 114 | 357 |
01/02/2017 | 72878 | 901 | 416 |
01/03/2017 | 36370 | 463 | 3810 |
01/04/2017 | 41006 | 740 | 2805 |
01/05/2017 | 57904 | 987 | 3220 |
01/06/2017 | 45632 | 157 | 2348 |
01/07/2017 | 33843 | 856 | 2135 |
01/08/2017 | 71400 | 537 | 2159 |
01/09/2017 | 74717 | 289 | 1483 |
01/10/2017 | 77747 | 973 | 1922 |
01/11/2017 | 60239 | 830 | 2107 |
01/12/2017 | 65054 | 633 | 3405 |
13/01/2017 | 44939 | 326 | 1584 |
14/01/2017 | 71789 | 655 | 1328 |
15/01/2017 | 40704 | 558 | 3636 |
16/01/2017 | 68804 | 668 | 3165 |
17/01/2017 | 41137 | 99 | 138 |
18/01/2017 | 47474 | 759 | 516 |
19/01/2017 | 46244 | 748 | 1534 |
20/01/2017 | 26707 | 797 | 3943 |
21/01/2017 | 45512 | 427 | 1924 |
22/01/2017 | 74276 | 639 | 2995 |
23/01/2017 | 75824 | 605 | 390 |
24/01/2017 | 47363 | 495 | 3676 |
25/01/2017 | 72470 | 685 | 3021 |
26/01/2017 | 48808 | 94 | 2736 |
27/01/2017 | 32450 | 66 | 1238 |
28/01/2017 | 48837 | 213 | 921 |
29/01/2017 | 46723 | 857 | 378 |
30/01/2017 | 56503 | 776 | 2414 |
31/01/2017 | 50555 | 530 | 3044 |
Tabla 2
IDENTIFICACIÓN | Tamaño |
40505 | 980 |
72878 | 7600 |
36370 | 420 |
41006 | 19000 |
57904 | 2100 |
45632 | 610 |
33843 | 2600 |
71400 | 420 |
23441 | 150 |
23471 | 5800 |
23478 | 4500 |
23488 | 3100 |
23554 | 800 |
23568 | 12000 |
23576 | 950 |
23586 | 2100 |
23607 | 7300 |
23662 | 90 |
23678 | 200 |
23702 | 1200 |
23715 | 5500 |
23751 | 430 |
23764 | 2900 |
23941 | 3800 |
24013 | 520 |
24224 | 620 |
24227 | 11000 |
24244 | 1800 |
24318 | 960 |
24333 | 120000 |
24334 | 370 |
24456 | 530 |
24487 | 2500 |
24498 | 410 |
La relación está en las columnas de ID.
Gracias por tu tiempo.
Saludos cordiales.
micky123
En respuesta a micky123
Investigué un poco y descubrí que este es el dax que necesito usar para calcular el percentil, pero no estoy seguro de cómo adaptarlo para cada grupo de percentiles: = PERCENTILEX.INC (
,¿Alguien sabe cómo puedo tener un valor dinámico para «k»?
Gracias
McCow
En respuesta a micky123
Hola @ micky123,
para construir una columna como su ejemplo, puede crear una tabla DAX (por ejemplo, PersentilleT):
PersentilleT = UNION(GENERATESERIES(0;0,05;0,01);GENERATESERIES(0,1;0,9;0,05);GENERATESERIES(0,91;1;0,01))
Ahora tiene una tabla de una columna con la columna «Valor».
Y como segunda columna calculada puede utilizar esta fórmula:
Column = PERCENTILEX.INC(Table1;Table1[Cost];[Value])
¿Es todo lo que necesitas?
PS para el valor k dinámico que necesita para construir una medida. Es un enfoque un poco complicado.
Mejores Regs
micky123
En respuesta a McCow
@McCow Gracias, esto fue útil y creo que me estoy acercando a lo que estoy tratando de hacer.
No puedo conseguir este trabajo
Column = PERCENTILEX.INC(Table1;Table1[Cost];[Value])
He creado un archivo PowerBI de muestra usando su sugerencia. URL: https://1drv.ms/u/s!Aghc93erq8rBcLygGX6qE2p7zXY
Por favor, avíseme si esto simplifica lo que busco.
Gracias
McCow
En respuesta a micky123
Hola @ micky123
buen trabajo, estuviste bastante cerca.
Corregí su ejemplo de PBIX y lo envié de vuelta, MIRE AQUÍ:
Dos observaciones:
1) El cálculo del percentil debe ser una columna, no una medida (ver arriba)
2) El tipo de datos de origen debe ser «Decimal», no Entero (ver más abajo):
Y agregué columnas adicionales para comprender mejor sus problemas. Se puede dejar para entender mejor lo que hice. ¡Disfrutar!
Si tiene alguna pregunta, devuélvala.
Mejores regs
micky123
En respuesta a McCow
@McCow ¡Muchas gracias! Esto es realmente útil y también para explicar lo que estaba haciendo mal. Voy a poner esto en producción donde tengo un conjunto de datos bastante grande. ¡Te dejaré saber cómo va!
De nuevo, gracias por tu ayuda.
Saludos cordiales
McCow
En respuesta a micky123
@ micky123
con un placer!
micky123
En respuesta a McCow
@McCow Hay un par de problemas a los que me enfrento, por favor usted aconseja?
– La selección de fecha no afecta nada, me gustaría filtrar la tabla de porcentaje en función de diferentes rangos de fechas de las estadísticas[Date], ¿necesitamos modificar el DAX?
– El percentil de costo total es incorrecto cost_percentileC = PERCENTILEX.INC (stats, stats[Cost],[Value]) debería ser exactamente el mismo que tenemos en las estadísticas[Cost]?
– Percentil de ventas usando este sales_percentileC = PERCENTILEX.INC (stats, stats[Sales],[Value]) me da un error «Las expresiones que producen tipos de datos variantes no se pueden usar para definir columnas calculadas».
Gracias por tu tiempo, realmente agradezco tu ayuda.
Saludos cordiales
McCow
En respuesta a micky123
Hola @ micky123,
ver abajo por favor
@ micky123 escribió:
@McCow Hay un par de problemas a los que me enfrento, por favor, ¿puede aconsejarme?
– La selección de fecha no afecta nada, me gustaría filtrar la tabla de porcentaje en función de diferentes rangos de fechas de las estadísticas[Date], ¿necesitamos modificar el DAX?
Sí, pero es más complejo que nuestro ejemplo.
– El percentil de costo total es incorrecto cost_percentileC = PERCENTILEX.INC (stats, stats[Cost],[Value]) debería ser exactamente el mismo que tenemos en las estadísticas[Cost]?
Hice una página adicional para la tabla completa, mire, el resumen se explicará en la imagen a continuación (la suya [Cost] era «No resumir»):
– Percentil de ventas usando este sales_percentileC = PERCENTILEX.INC (stats, stats[Sales],[Value]) me da un error «Las expresiones que producen tipos de datos variantes no se pueden usar para definir columnas calculadas».
observe el tipo de datos para todas sus fuentes de datos, debe ser un número decimal, todos los tipos de números se pueden resumir (o no):
Por favor, revise este ENLACE, lo subí corregido a la versión de su solicitud.
Mejores regs.
micky123
En respuesta a McCow
@McCow Gracias por la explicación, he intentado seguir los mismos pasos para los datos de producción y parece haber un problema.
¿Podría señalar qué estoy haciendo mal, por favor? Aquí está el archivo pbi actualizado: https://1drv.ms/u/s!Aghc93erq8rBcUhH5N_y1X_MXN8
He creado 3 tablas nuevas exactamente en la misma estructura:
size_prod, stats_prod, Persentille_prod
Gracias de nuevo por tu tiempo, paciencia. ¡Estoy aprendiendo mucho de ti!
Saludos cordiales
McCow
En respuesta a micky123
Y @ micky123
No estoy seguro de si puede usarlo de alguna manera, pero puede intentar experimentar con esta fórmula:
cost_percentileC2 = PERCENTILEX.INC( CALCULATETABLE( stats_prod; FILTER(stats_prod;stats_prod[_Size]>0); //from min FILTER(stats_prod;stats_prod[_Size]<100000) //to max ); // filter-table stats_prod[cost];[Value] )//end PERCENTILEX.INC
donde la definición de filtro crea un borde de datos bajo y alto (mínimo y máximo) a partir de su conjunto de datos.
¡Disfrutar!
McCow
En respuesta a micky123
Hola @ micky123,
como usted sabe, percenttille es una medida estadística (y las funciones de DAX PERCENTILEX.INC y PERCENTILEX.EXC), que muestra cómo será su conjunto de datos exactamente distribuido de min a max valor unitario (y no la SUM). La más conocida es la distribución normal (Gauss).
En su caso, esta fórmula mostrará la frecuencia con la que cumplirá con este o aquel valor de «tamaño», «costo» o «venta». En su ejemplo, verá que la probabilidad de encontrar cualquier dígito mayor que cero es demasiado pequeña (valor k de «0» a «0,99»). Y encontrará solo varios dígitos con el valor máximo de «5» (consulte [sale_percentileC]) muy rara vez.
Y las tres columnas ([size_percentile_prod], [cost_percentileC] y [sale_percentileC]) son independientes. Se calcularán por separado sin ninguna relación entre estos valores en un solo registro (línea de su conjunto de datos).
La segunda dificultad es tu relación con [size] solo. Pero en su caso, no importa porque stat_prod tiene alrededor de 100K registros y size_prod solo tiene 5K. No entiendo qué tipo de estadística desea calcular basándose únicamente en size_prod. Creé la columna de relación [_Size] en stat_prod y sugiera hacer todos los cálculos en la base de la tabla más grande (como stat_prod en su caso).
Y la tarea de resumen de sus columnas es completamente otra tarea diferente.
Primera versión del cálculo de Sum de la tabla stats_prod:
SumOfCost = CALCULATE(SUM(stats_prod[cost]))
La siguiente imagen muestra por qué es imposible contar la cantidad de acuerdo con la tabla de distribuciones:
Perdón por mi inglés y espero que mi descripción brinde un poco más de claridad a tu pregunta. Si no es así, vuelva a preguntar.
Mejores regs
McCow
En respuesta a micky123
Hola @ micky123,
No veo ningún problema importante (excepto las opciones de resumen para Persentille_prod[size_percentile_prod], pero no importa).
Seré analizado y volveré más tarde.