Límite para Percentil.exc

Un usuario Pregunto ✅

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.

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

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!

Deja un comentario

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