DAX ALLEXCEPT naar som per categorie van meerdere dimensie tabellen

Ik wil het totaal per categorie berekenen. De categorie staat in de dimensie tabel.

Hier is een voorbeeldbestand: DAX ALLEXCEPT totaal per categorie.pbix

Ik heb het volgende model:

vul hier de beschrijving van de afbeelding in

Dit zijn mijn verwachte resultaten. Totaal per kleur:

vul hier de beschrijving van de afbeelding in

Ik dacht dat ik de verwachte resultaten kon bereiken met de volgende maatregel:

ALLEXCEPT_color =CALCULATE ( , ALLEXCEPT ( FactTable, -- surprisingly 'dim1' table in that place gives wrong results dim1 ))

Of met de methode die Alberto Ferrari voorstelde 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 ) )

Beide maatregelen werken en leveren de juiste resultaten op. Maar ze vermenigvuldigen de getoonde resultaten met Cartesiaans product van alle dimensies. Waarom? Hoe kan ik dit voorkomen?

Ik krijg de verwachte resultaten met de maat:

Expected_Results_Color =IF ( ISBLANK ( ), BLANK (), )

vul hier de beschrijving van de afbeelding in

Waarschijnlijk mis ik iets in de functie ALLEXCEPT, zodat ik niet krijg wat ik wil voor de eerste poging. Wat is de logica achter het gebruik van de ALLEXCEPT-functie met meerdere tabellen, vooral met verafgelegen dimensies, weg van het centrum van het sterschema.

Wat voor patroon moet ik gebruiken? Hier vond ik een veelbelovende oplossing die er als volgt uitziet:

ByCategories =CALCULATE ( SUM ( FactTable ), ALLEXCEPT ( dim1, dim1 ), ALLEXCEPT ( dim2, dim2 ), ALLEXCEPT ( dim3, dim3 ))

Maar zoals ik het eerder heb getest werkt het niet. Het aggregeert niet per dimensie maar produceert zoals ze zijn.

Dus ik ontdekte dat dit de juiste richting:

ByCategories =CALCULATE ( SUM ( FactTable ), ALLEXCEPT ( FactTable, -- here be difference dim1, dim2, dim3 ))

Ik speculeer dat er misschien ook een andere manier.

Measure = var MyTableVariable = ADDCOLUMNS ( VALUES ( dim1 ), "GroupedSales", ) RETURN ...

Alleen als we konden ophalen enkele scalaire waarde van GroupedSales van MyTableVariable en match it met juiste kleur in tabel visueel.

Ik zou zeer dankbaar zijn voor eventuele verdere inzichten in de berekening van totaal voor categorie.