DAX ALLEXCEPT pentru însumarea pe categorii a tabelelor cu mai multe dimensiuni
Am dori să calculez totalul pe categorii. Categoria se află în tabelul de dimensiuni.
Iată fișierul de probă: DAX ALLEXCEPT total by category.pbix
Am următorul model:
Acestea sunt rezultatele pe care le aștept. Total în funcție de culoare:
Credeam că aș putea obține rezultatele așteptate prin următoarea măsură:
ALLEXCEPT_color =CALCULATE ( , ALLEXCEPT ( FactTable, -- surprisingly 'dim1' table in that place gives wrong results dim1 ))
Sau, alternativ, folosind metoda sugerată de 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 ) )
Ambele măsuri funcționează și dau rezultate corespunzătoare. Cu toate acestea, ele înmulțesc rezultatele afișate făcând produsul cartezian al tuturor dimensiunilor. De ce? Cum se poate preveni acest lucru?
Obțin rezultatele așteptate cu măsura:
Expected_Results_Color =IF ( ISBLANK ( ), BLANK (), )
Probabil că îmi lipsește ceva la funcția ALLEXCEPT
și de aceea nu obțin ceea ce vreau din prima încercare. Care este logica utilizării funcției ALLEXCEPT cu mai multe tabele, mai ales cu dimensiuni îndepărtate, departe de centrul schemei stea.
Ce model să folosesc? Aici am găsit o soluție promițătoare care arată așa:
ByCategories =CALCULATE ( SUM ( FactTable ), ALLEXCEPT ( dim1, dim1 ), ALLEXCEPT ( dim2, dim2 ), ALLEXCEPT ( dim3, dim3 ))
Dar, așa cum am testat-o înainte, nu funcționează. Nu agregă după dimensiuni ci produce așa cum sunt.
Așa că am aflat că aceasta este direcția corectă:
ByCategories =CALCULATE ( SUM ( FactTable ), ALLEXCEPT ( FactTable, -- here be difference dim1, dim2, dim3 ))
Speculez că ar putea exista și o altă cale.
Measure = var MyTableVariable = ADDCOLUMNS ( VALUES ( dim1 ), "GroupedSales", ) RETURN ...
Dacă am putea prelua o singură valoare scalară a GroupedSales din MyTableVariable și să o potrivim cu culoarea corespunzătoare în tabelul vizual.
Am fi foarte recunoscător pentru orice informații suplimentare în calcularea totalului pentru categorie.
.