¿Porcentaje del total de filas con DAX?
Hola, hola …
Hacía ya un buen tiempo que no escribía para el Blog (No quiere decir yo no se haya generado contenido, al contrario, el Canal de YouTube ha sido el recipiente de los últimos contenidos)
Y es que con los lanzamientos en dos momentos consecutivos del curso Cuadros de mando con Power BI, repartidos así:
.
PARTE I: Cuadros de Mando con Power BI (Enfoque de Inteligencia de Negocios)
PARTE II: Cuadros de Mando con Power BI (Enfoque Cuadros de Mando)
.
Ha aportado a la baja producción de contenido escrito en EFB.
Tenía ganas de hacer algo con la palabra escrita, así que aquí vamos.
En artículos y vídeos anteriores hemos hablado de como calcular el porcentaje de total general, dicho con otras palabras, calcular la participación respecto al total general.
Sin embargo, qué sucede si lo que queremos es el porcentaje del total fila, ejemplo:
.
.
¿Cómo lo hacemos?
.
- Tú: Con una hermosa expresión DAX
- Yo (Miguel): Así es.
- Sloth: Para qué tanto lío si con funcionalidad clásica sale más rápido
- Yo (Miguel): Porque las medidas implícitas encierran una filosofía más devastadora que el anillo de mordor
.
Nota: Ahora aparcera un «compañero», un heater de DAX quien buscara soluciones alternas (Mayormente enrevesadas) a DAX alegando que es complejo y feo, cuando en realidad es de una belleza picassiana que nos lleva a una frecuencia suprema.
.
Expresión Aritmética para el Cálculo DAX
Para hacer más sustancioso este artículo dejemos 100% claro cuál es la operación aritmética que debemos seguir:
Simple, ¿verdad?: (Valor Celda Acual) / (Total Fila Actual)
Divide y Vencerás
Hemos de inculcar ahora la filosofía divide y vencerás.
Resolver un problema difícil, dividiéndolo en partes más simples tantas veces como se necesario, hasta que la resolución de cada parte sea obvia o por lo menos de una complejidad menor. .
- Sloth: Lo ven, ya ha mostrado sus garras DAX
- Tú: En realidad es un problema sencillo
- Yo (Miguel): En efecto, y como estamos trabajando en una metodología para la resolución de problemas en DAX e alta complejidad queremos ir introduciendo poco a poco la metodología con problemas sencillos
.
En este caso lo dividimos así: [Númerador] y [Denominador]
.
Numerador de la Expresión DAX
¿Cómo conocemos el valor de la celda actual en la tabla dinámica?
En este caso dependerá del tipo de cálculo, como corresponde a la suma tan solo sería:
Suma de Plan :=
SUM ( Customers[Plan] )
.
En resumidas cuentas, por el contexto que rodea la celda de la tabla dinámica la tabla internamente se filtra dejando el valor correspondiente
Es decir, por contextos.
NOTA: Todo lo concerniente a contexto esta extensamente explicado en el Master en DX y Power Pivot.
Denominador Expresión DAX
¿Cómo hacemos para el total de fila?
- Tú: Esta claro que algo del estilo ALL(Customers) no funciona
- Yo (Miguel): Excelente, ignora todo filtro por lo que sería el total general
- Tú: ¿Existe alguna manera de ignorar solo el filtro de País
- Yo (Miguel): No olvidemos que DAX nos proporciona tantas posibilidads que claro, es posible.
Te doy la receta
Total Fila :=
CALCULATE ( [Suma de Plan]; ALL ( Customers[País] ) )
La Solución Completa
% TFila Especifico :=
DIVIDE (
SUM ( Customers[Plan] );
CALCULATE ( [Suma de Plan]; ALL ( Customers[País] ) )
)
En concreto, muy similar a la solución del porcentaje del total general, no obstante, lo que hacemos es indicar en ALL el campo que queremos ignorar y listos.
Bueno espero que estudien y apliquen este pequeño artículo
– Hasta la Próxima Oportunidad