DAX ALLEXCEPT do sumy według kategorii z wielu tabel wymiarów
Chciałbym obliczyć sumę według kategorii. Kategoria znajduje się w tabeli wymiarów.
Tutaj jest przykładowy plik: DAX ALLEXCEPT total by category.pbix
Mam następujący model:
Takie są moje oczekiwane wyniki. Total by Color:
Myślałem, że mogę osiągnąć oczekiwane wyniki za pomocą następującego środka:
ALLEXCEPT_color =CALCULATE ( , ALLEXCEPT ( FactTable, -- surprisingly 'dim1' table in that place gives wrong results dim1 ))
Albo alternatywnie za pomocą metody sugerowanej przez 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 ) )
Oba te środki działają i zwracają prawidłowe wyniki. Jednak mnożą one wyświetlane wyniki tworząc iloczyn kartezjański wszystkich wymiarów. Dlaczego tak się dzieje? Jak temu zapobiec?
Osiągam oczekiwane wyniki za pomocą działania:
Expected_Results_Color =IF ( ISBLANK ( ), BLANK (), )
Prawdopodobnie brakuje mi czegoś w funkcji ALLEXCEPT
, więc nie dostaję tego, co chcę za pierwszym razem. Jaka jest logika używania funkcji ALLEXCEPT z wieloma tabelami, szczególnie z odległymi wymiarami, z dala od centrum schematu gwiazdy.
Jakiego wzoru użyć? Tutaj znalazłem obiecujące rozwiązanie, które wygląda tak:
ByCategories =CALCULATE ( SUM ( FactTable ), ALLEXCEPT ( dim1, dim1 ), ALLEXCEPT ( dim2, dim2 ), ALLEXCEPT ( dim3, dim3 ))
Ale jak testowałem to wcześniej nie działa. Nie agreguje według wymiarów, ale produkuje tak jak są.
Więc dowiedziałem się, że to jest poprawny kierunek:
ByCategories =CALCULATE ( SUM ( FactTable ), ALLEXCEPT ( FactTable, -- here be difference dim1, dim2, dim3 ))
Spekuluję, że może być też inny sposób.
Measure = var MyTableVariable = ADDCOLUMNS ( VALUES ( dim1 ), "GroupedSales", ) RETURN ...
Jeśli tylko moglibyśmy pobrać pojedynczą wartość skalarną GroupedSales z MyTableVariable i dopasować ją do odpowiedniego koloru w tabeli wizualnej.
Będę bardzo wdzięczny za wszelkie dalsze spostrzeżenia dotyczące obliczania sumy dla kategorii.