Tabla de percentiles como Excel

Un usuario Pregunto ✅

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:

percentile.PNG

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:

percentile_powerbi.PNG

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

Capture.PNG
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:
percentile.PNG

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 (

, ;, k)

¿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):

2017-12-20_22-16-34.png

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»):

2017-12-21_21-14-20.png

– 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):

2017-12-21_20-56-28.png

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

Capture.PNG
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:

2017-12-23_12-12-16.png

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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *