DAX ALLEXCEPT para soma por categoria das tabelas de múltiplas dimensões
I gostaria de calcular o total por categoria. A categoria está na tabela de dimensões.
Aqui está o arquivo de amostra: DAX ALLEXCEPT total por categoria.pbix
Eu tenho o seguinte modelo:
Estes são os meus resultados esperados. Total por Cor:
Pensei que poderia alcançar os resultados esperados pela seguinte medida:
ALLEXCEPT_color =CALCULATE ( , ALLEXCEPT ( FactTable, -- surprisingly 'dim1' table in that place gives wrong results dim1 ))
Or alternativamente usando o 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 ) )
Bambas estas medidas funcionam e retornam os resultados apropriados. No entanto, eles multiplicam os resultados exibidos tornando o produto cartesiano de todas as dimensões. Porquê? Como prevenir?
A atingir os resultados esperados com a medida:
Expected_Results_Color =IF ( ISBLANK ( ), BLANK (), )
Provavelmente estou a perder algo sobre a função ALLEXCEPT
para não obter o que quero para a primeira foto. Qual é a lógica por trás do uso da função ALLEXCEPT com múltiplas tabelas, especialmente com dimensões distantes, longe do centro do esquema estelar.
Que padrão usar? Aqui encontrei uma solução promissora que se parece com isto:
ByCategories =CALCULATE ( SUM ( FactTable ), ALLEXCEPT ( dim1, dim1 ), ALLEXCEPT ( dim2, dim2 ), ALLEXCEPT ( dim3, dim3 ))
Mas como eu testei antes não funciona. Ele não agrega por dimensões, mas produz como elas são.
Então eu descobri que esta é a direção correta:
ByCategories =CALCULATE ( SUM ( FactTable ), ALLEXCEPT ( FactTable, -- here be difference dim1, dim2, dim3 ))
Especulo que também possa haver outra forma.
Measure = var MyTableVariable = ADDCOLUMNS ( VALUES ( dim1 ), "GroupedSales", ) RETURN ...
Se apenas pudéssemos recuperar um único valor escalar de GroupedSales do MyTableVariable e combiná-lo com a cor apropriada na tabela visual.
Estaria muito grato por qualquer outra forma de calcular o total para a categoria.