DAX ALLEXCEPT til at summere efter kategori af flere dimensionstabeller
Jeg vil gerne beregne totalen efter kategori. Kategorien er i dimensionstabellen.
Her er en prøvefil: DAX ALLEXCEPT total efter kategori.pbix
Jeg har følgende model:
Dette er mine forventede resultater: DAX ALLEXCEPT total efter kategori.pbix
Dette er mine forventede resultater. Total efter farve:
Jeg troede, at jeg kunne opnå de forventede resultater ved følgende foranstaltning:
ALLEXCEPT_color =CALCULATE ( , ALLEXCEPT ( FactTable, -- surprisingly 'dim1' table in that place gives wrong results dim1 ))
Og alternativt ved hjælp af metode foreslået af 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 ) )
Både disse foranstaltninger virker og giver korrekte resultater. Men de multiplicerer de viste resultater ved at lave et kartesisk produkt af alle dimensionerne. Hvorfor? Hvordan kan man forhindre det?
Jeg opnår de forventede resultater med foranstaltning:
Expected_Results_Color =IF ( ISBLANK ( ), BLANK (), )
Sandsynligvis mangler jeg noget om ALLEXCEPT
-funktionen, så jeg får ikke det, jeg ønsker for første skud. Hvad er logikken bag at bruge ALLEXCEPT-funktionen med flere tabeller, især med langt fra dimensioner, væk fra centrum af stjerneskemaet.
Hvilket mønster skal man bruge? Her fandt jeg lovende løsning, som ser sådan ud:
ByCategories =CALCULATE ( SUM ( FactTable ), ALLEXCEPT ( dim1, dim1 ), ALLEXCEPT ( dim2, dim2 ), ALLEXCEPT ( dim3, dim3 ))
Men som jeg testede det før, virker det ikke. Det aggregerer ikke efter dimensioner, men producerer som de er.
Så jeg fandt ud af, at dette er den rigtige retning:
ByCategories =CALCULATE ( SUM ( FactTable ), ALLEXCEPT ( FactTable, -- here be difference dim1, dim2, dim3 ))
Jeg spekulerer på, at der også kan være en anden måde.
Measure = var MyTableVariable = ADDCOLUMNS ( VALUES ( dim1 ), "GroupedSales", ) RETURN ...
Hvis vi bare kunne hente enkelt skalarværdi af GroupedSales fra MyTableVariable og matche den med passende farve i tabellen visuel.
Jeg ville være meget taknemmelig for yderligere indsigt i beregning af total for kategori.