DAX ALLEXCEPT para sumar por categoría de tablas de dimensiones múltiples
Quiero calcular el total por categoría. La categoría está en la tabla de dimensiones.
Aquí está el archivo de ejemplo: DAX ALLEXCEPT total por categoría.pbix
Tengo el siguiente modelo:
Estos son mis resultados esperados. Total por color:
Creí que podría conseguir los resultados esperados con la siguiente medida:
ALLEXCEPT_color =CALCULATE ( , ALLEXCEPT ( FactTable, -- surprisingly 'dim1' table in that place gives wrong results dim1 ))
O bien utilizando el método sugerido por Alberto Ferrari https://www.sqlbi.com/articles/using-allexcept-versus-all-and-values/:
ALL_VALUES_color = CALCULATE ( , ALL (FactTable), -- again, 'dim1' produces wrong results, has to be FactTable VALUES ( dim1 ) )
Ambas medidas funcionan y devuelven resultados adecuados. Sin embargo multiplican los resultados mostrados haciendo producto cartesiano de todas las dimensiones. ¿Por qué? ¿Cómo evitarlo?
Logro los resultados esperados con la medida:
Expected_Results_Color =IF ( ISBLANK ( ), BLANK (), )
Probablemente me falta algo en la función ALLEXCEPT
por lo que no consigo lo que quiero para la primera toma. ¿Cuál es la lógica detrás de usar la función ALLEXCEPT con múltiples tablas, especialmente con dimensiones lejanas, lejos del centro del esquema de la estrella.
¿Qué patrón usar? Aquí encontré una solución prometedora que se parece a esto:
ByCategories =CALCULATE ( SUM ( FactTable ), ALLEXCEPT ( dim1, dim1 ), ALLEXCEPT ( dim2, dim2 ), ALLEXCEPT ( dim3, dim3 ))
Pero como lo probé antes no funciona. No agrega por dimensiones sino que produce tal cual.
Así que descubrí que esta es la dirección correcta:
ByCategories =CALCULATE ( SUM ( FactTable ), ALLEXCEPT ( FactTable, -- here be difference dim1, dim2, dim3 ))
Especulo que podría haber también otra manera.
Measure = var MyTableVariable = ADDCOLUMNS ( VALUES ( dim1 ), "GroupedSales", ) RETURN ...
Si sólo pudiéramos recuperar el valor escalar único de GroupedSales de MyTableVariable y emparejarlo con el color apropiado en la tabla visual.
Estaría muy agradecido por cualquier idea adicional en el cálculo del total de la categoría.