DAX ALLEXCEPT több dimenziós táblák kategóriánkénti összegzéséhez
Kategóriánkénti összegzést szeretnék végezni. A kategória a dimenziós táblában van.
Itt van a mintafájl: DAX ALLEXCEPT total by category.pbix
A következő mintám van:
Ezek a várt eredményeim. Total by Color:
A várt eredményeket a következő méréssel gondoltam elérni:
ALLEXCEPT_color =CALCULATE ( , ALLEXCEPT ( FactTable, -- surprisingly 'dim1' table in that place gives wrong results dim1 ))
Vagy alternatívaként az Alberto Ferrari https://www.sqlbi.com/articles/using-allexcept-versus-all-and-values/ által javasolt módszerrel:
ALL_VALUES_color = CALCULATE ( , ALL (FactTable), -- again, 'dim1' produces wrong results, has to be FactTable VALUES ( dim1 ) )
Mindkét intézkedés működik és megfelelő eredményeket ad. Azonban megszorozzák a megjelenített eredményeket, így az összes dimenzióból kartéziánus szorzatot képeznek. Miért? Hogyan lehet ezt megakadályozni?
A várt eredményt a következő méréssel érem el:
Expected_Results_Color =IF ( ISBLANK ( ), BLANK (), )
Vélhetően hiányzik valami a ALLEXCEPT
függvényből, ezért nem azt kapom, amit elsőre szeretnék. Mi a logika az ALLEXCEPT függvény használata mögött több tábla esetén, különösen a csillagséma középpontjától távol eső, távol eső dimenziók esetén.
Milyen mintát használjak? Itt találtam ígéretes megoldást, ami így néz ki:
ByCategories =CALCULATE ( SUM ( FactTable ), ALLEXCEPT ( dim1, dim1 ), ALLEXCEPT ( dim2, dim2 ), ALLEXCEPT ( dim3, dim3 ))
De ahogy korábban teszteltem, nem működik. Nem aggregál dimenziók szerint, hanem úgy termel, ahogy van.
Szóval rájöttem, hogy ez a helyes irány:
ByCategories =CALCULATE ( SUM ( FactTable ), ALLEXCEPT ( FactTable, -- here be difference dim1, dim2, dim3 ))
Elképzelhető, hogy van más út is.
Measure = var MyTableVariable = ADDCOLUMNS ( VALUES ( dim1 ), "GroupedSales", ) RETURN ...
Ha csak a GroupedSales egyetlen skalár értékét tudnánk lekérni a MyTableVariable-ből és a megfelelő színnel egyeztetni a táblázat vizualitásában.
Nagyon hálás lennék minden további meglátásért a kategória összértékének kiszámításában.