Al asignar medidas como campos en una visualización, Power BI calcula un total basado en la expresión DAX que define la medida. A menudo, este total coincide con la suma de los valores individuales calculados en base al contexto de filtro aplicado en la visualización. Sin embargo, contrario a lo intuitivo, esto solo es cierto cuando la medida es aditiva.
Considera la siguiente matriz, segmentada por Región, la cual muestra varias medidas y sus respectivos totales. Totales_01.png78.49 KB De estas, solo Ingresos es aditiva, es decir, el ingreso total es la suma de los ingresos por región. Totales_02.png16.09 KB El resto de las medidas son no aditivas, y a primera instancia no se pueden sumar sin generar errores.
Productos calcula el número de productos vendidos por región. Si un producto se vende en más de una región, la medida lo cuenta una vez por cada región y una vez para el total.Totales_03.png20.54 KB
Productos Más 500 toma el resultado de Productos para cada región y le suma la cantidad 500. Al total se le suma 500 una vez, en lugar de sumarle 500 por cada región (ó 2500). Totales_04.png15.47 KB
Ingreso Condicional evalúa una expresión lógica, Ingresos > 1000000, y devuelve el resultado de Ingresos dependiendo si se cumple o no la condición. El total devuelve la suma total de Ingresos, en lugar de la suma de las filas devueltas por la condicional (para América del Norte, Asia, y Europa). Totales_05.png31.28 KB
Promedio Ingresos calcula la media aritmética de los ingresos por región considerando el número de transacciones para cada región. El total calcula el promedio global ponderando todas las transacciones de todas las regiones, en lugar de los ingresos promedios para cada región. Totales_06.png21.05 KB
En cada instancia, podemos ver que el total no es la agregación de los valores individuales mostrados en la visualización. En su lugar, el total es el resultado de la medida evaluada en un contexto que toma en cuenta todos los valores, sin importar la segmentación de la visualización. Esto es porque Power BI calcula los totales según la lógica del DAX, y no sumando las filas visibles. De esta manera se evitan errores como doble conteo o promedios incorrectos.
En caso de requerirse, es posible convertir una medida no aditiva en una medida aditiva mediante el uso de iteradores, tablas virtuales, y la transición del contexto. Para ello, basta con introducir una iteración (SUMX, AVERAGEX) sobre una tabla virtual con los valores del campo asignado a la visualización (Región), que evalúe la medida definida (recuento distinto, promedio, condicional, etc.) bajo tal contexto.
Nótese que, en cada caso, la expresión hace referencia a Región, el campo asignado a la visualización. De esta manera, el total se calcula iterando sobre la granularidad deseada, considerando las filas visibles.
Ahora bien, forzar aditividad modificando la medida para que el total coincida con la suma de filas visibles en la visualización no siempre es correcto, ya que puede producir resultados incorrectos o inexactos. En su lugar, si se necesita un cálculo específico, se debe primero determinar la granularidad a la que se debe evaluar la expresión y después ajustar la fórmula para iterar sobre dicha granularidad, agregando los valores después.