¿Cómo realizar cálculos ponderados en Power BI con DAX?

Muy probablemente a lo largo de todos los posibles cálculos a los que nos podemos enfrentar a la hora de preparar nuestros indicadores en un reporte en Power Bi, nos hayamos topado con un escenario en el cual debamos calcular un indicador ponderándolo por el peso al que le corresponde, obteniendo un indicador general corregido, para contextualizar un poco mas el escenario presentaremos la siguiente data de ejemplo:

En estos datos tenemos el valor de un indicador por país, a su vez que contamos con la población de cada uno de estos, para poder calcular un valor de indicador a nivel general deberíamos entonces ponderar la población de cada país con respecto a la población total de los mismos.
Para esto entonces deberíamos calcular el % Poblacional de cada país con respecto a la población de todos los países. Para esto utilizaremos las Medidas:

Poblacion = SUM(TablaEjemplo[Población])

Total Poblacion = CALCULATE(SUM(TablaEjemplo[Población]);ALL(TablaEjemplo[País]))

Con la medida “Total Poblacion” calculamos la sumatoria calculamos el valor de población para todos los países.

Una vez tenemos esto calculado podemos procedes a calcular el % Poblacional de cada país con respecto al total, utilizando la siguiente medida:

% Poblacion total Paises = DIVIDE([Poblacion];[Total Poblacion];BLANK())

Finalmente, con esto podremos calcular el indicador corregido y realizar la sumatoria del mismo, para esto utilizaremos las funciones:

Indicador_Measure = SUM(TablaEjemplo[Valor Indicador])

Indicador Corregido = [% Poblacion total Paises]*[Indicador_Measure]

Indicador Global = CALCULATE(SUMX(ALL(TablaEjemplo[País]);[Indicador Corregido]))

Como podemos darnos cuenta con la medida “Indicador Global” se realizar la suma de cada uno de los valores que toma la medida “Indicador Corregido” para los países, esto lo logramos a través de la función SUMX la cual realiza la suma después de evaluar registro a registro en la tabla “TablaEjemplo” el cálculo de la expresión definida.

Vale la pena mencionar que, si reemplazamos la función ALL por ALLSELECTED en las medidas “Indicador Global” y “Total Poblacion”, obtendremos un resultado más dinámico, que se recalcula de acuerdo con el tamaño de la población de los países seleccionados en un filtro, por ejemplo:

comments powered by Disqus