← 17 · Cuadro de mando J7

La misma cifra, calculada por dos caminos independientes

La pregunta de esta página

¿Cómo se comprueba que el número del panel de Power BI es el correcto?

1 El problema

En Power BI las cifras de un panel salen de medidas escritas en DAX. Se calculan en el momento, cambian con cada filtro que se pulsa y no quedan guardadas en ninguna tabla. Si una medida está mal, el panel la muestra igual.

2 Por qué engaña

Una medida DAX parece una fórmula de Excel y se comporta de otra manera: su resultado depende de los filtros activos en ese momento. Dos personas pueden escribir «el ticket medio» y obtener dos cifras distintas sin que ninguna fórmula esté equivocada, porque cada una filtra otra cosa.

3 El principio

Cada medida del panel se calcula también fuera de él
Se calcula la misma cifra con un script independiente, sobre los mismos datos y con los mismos filtros escritos de forma explícita. Si las dos coinciden al céntimo, la medida hace lo que dice. Si no, una de las dos filtra algo que la otra no.

4 La solución

Escribir cada medida en los dos lenguajes, con el filtro explícito en ambos, y comparar el resultado antes de publicar el panel.

La medida en DAX
Ticket medio sin filtro =
    AVERAGE ( Ventas[importe] )

Ticket medio válido =
    CALCULATE (
        AVERAGE ( Ventas[importe] ),
        Ventas[anomalia] = 0
    )
Su gemela en Python
ticket_sin_filtro = ventas["importe"].mean()
ticket_valido     = ventas.loc[ventas["anomalia"] == 0, "importe"].mean()

5 Qué pasa con estos datos

2.443,41 €
ticket medio sin filtro
20.000 ventas registradas
2.405,41 €
ticket medio válido
19.984 ventas, sin las 16 anomalías

Las 16 ventas imposibles suben el ticket medio unos 38 €. La diferencia es pequeña y por eso pasa desapercibida en el panel, pero todos los objetivos calculados a partir de ese ticket estarían inflados.

El script de esta web da el ticket válido de la página 17. Una medida DAX que no lleve el filtro de anomalías daría el otro. La comparación con su gemela lo detecta en la primera revisión.

6 Para qué sirve

En cualquier panel que alguien vaya a usar para decidir: antes de publicarlo y cada vez que se toca una medida. Una discrepancia de pocos euros entre panel y script es la forma más sencilla de descubrir que un filtro no hace lo que se cree.

El detalle técnico

El ticket sin filtro se calcula en la página dividiendo la facturación registrada entre las ventas registradas; el válido es kpis.ticket_medio. Las medidas DAX se escriben aquí como se escribirían en el modelo: esta web no tiene fichero de Power BI.

Fuente: eda.json, campo kpis.