Anónimo
Hola chicos. Necesito ayuda para calcular el percentil.
Tengo un conjunto de datos con las ventas de los clientes, mes a mes. Quiero obtener un punto de referencia de ventas para cada cliente. Definí que el benchmark será el cuartil 4 de ventas (percentil de 0.75).
La función percentil en Power BI tiene la limitación de calcular percentile.exc para un conjunto de datos con 0,75 < n/ (n +1). Sé que algún cliente tendrá un conjunto de datos más pequeño que ese. Así que calculé el límite e intenté crear un cheque antes de pedir el percentil.
VAR LIMIT = N / (N + 1)
IF(LIMIT > 0.75, PERCENTILE)
Pero incluso tratando de detectar el error de esa manera, no puedo eliminar el error. ¿Puedes ayudarme por favor?
Este es mi código:
Benchmark =
VAR CURRENTPERIOD = 'BD PCA'[PERIOD]
VAR COUNTROWS = CALCULATE(COUNT('BD PCA'[VOLUME]), ALLEXCEPT('BD PCA', 'BD PCA'[NR CLIENTE]), 'BD PCA'[Period] <= CURRENTPERIOD, 'BD PCA'[ACTIVITY] = "Active")
VAR SUPERIORLIMIT = DIVIDE(COUNTROWS, (CONTROWS + 1))
VAR Q3 = CALCULATE(PERCENTILE.EXC('BD PCA'[VOLUME], 0.75), ALLEXCEPT('BD PCA', 'BD PCA'[NR CLIENTE]), 'BD PCA'[PERIOD] <= CURRENTPERIOD, 'BD PCA'[ACTIVITY] = "Active")
VAR VOLMAX = CALCULATE(MAX('BD PCA'[VOLUME]), ALLEXCEPT('BD PCA', 'BD PCA'[NR CLIENTE]), 'BD PCA'[Period] <= CURRENTPERIOD)
RETURN IF(SUPERIORLIMIT > 0.75, Q3, VOLMAX)
Aprecio tu ayuda.
v-shex-msft
Hola @Anonimo,
Tal vez pueda intentar mover su cálculo a la declaración if, evitará los cálculos en los rangos que no se ajustan a las condiciones:
Benchmark =
VAR CURRENTPERIOD = 'BD PCA'[PERIOD]
RETURN
CALCULATE (
IF (
CALCULATE ( COUNT ( 'BD PCA'[VOLUME] ), 'BD PCA'[ACTIVITY] = "Active" ) > 3,
CALCULATE (
PERCENTILE.EXC ( 'BD PCA'[VOLUME], 0.75 ),
'BD PCA'[ACTIVITY] = "Active"
),
MAX ( 'BD PCA'[VOLUME] )
),
VALUES ( 'BD PCA'[NR CLIENTE] ),
'BD PCA'[Period] <= CURRENTPERIOD
)
Si lo anterior no ayuda, comparta algunos datos ficticios para probar.
Cómo obtener una respuesta rápida a su pregunta
Saludos,
Xiaoxin-sheng
v-shex-msft
Hola @Anónimo,
Tal vez pueda intentar mover su cálculo a la declaración if, evitará los cálculos en los rangos que no se ajustan a las condiciones:
Benchmark =
VAR CURRENTPERIOD = 'BD PCA'[PERIOD]
RETURN
CALCULATE (
IF (
CALCULATE ( COUNT ( 'BD PCA'[VOLUME] ), 'BD PCA'[ACTIVITY] = "Active" ) > 3,
CALCULATE (
PERCENTILE.EXC ( 'BD PCA'[VOLUME], 0.75 ),
'BD PCA'[ACTIVITY] = "Active"
),
MAX ( 'BD PCA'[VOLUME] )
),
VALUES ( 'BD PCA'[NR CLIENTE] ),
'BD PCA'[Period] <= CURRENTPERIOD
)
Si lo anterior no ayuda, comparta algunos datos ficticios para probar.
Cómo obtener una respuesta rápida a su pregunta
Saludos,
Xiaoxin Sheng
Anónimo
En respuesta a v-shex-msft
Gracias Sheng. ¡Esto resolvió el problema!
¿Puede explicar por qué usar el cálculo dentro de la instrucción IF es diferente a usar una variable? Pensé que Power BI solo calculó la variable una vez que se indicó.
Otra duda que tengo es: ¿Cuál es la diferencia de usar estas líneas dentro de un filtro?
ALLEXCEPT('BD PCA', 'BD PCA'[NR CLIENT])
VALUES('BD PCA'[NR CLIENT])
¡Muchos gracias!