DAX ALLEXCEPT zur Summe nach Kategorie mehrerer Dimensionstabellen
Ich möchte die Summe nach Kategorie berechnen. Die Kategorie befindet sich in der Dimensionstabelle.
Hier ist eine Beispieldatei: DAX ALLEXCEPT Summe nach Kategorie.pbix
Ich habe das folgende Modell:
Das sind meine erwarteten Ergebnisse. Summe nach Farbe:
Ich dachte, ich könnte die erwarteten Ergebnisse mit der folgenden Maßnahme erreichen:
ALLEXCEPT_color =CALCULATE ( , ALLEXCEPT ( FactTable, -- surprisingly 'dim1' table in that place gives wrong results dim1 ))
Oder alternativ mit der von Alberto Ferrari https://www.sqlbi.com/articles/using-allexcept-versus-all-and-values/ vorgeschlagenen Methode:
ALL_VALUES_color = CALCULATE ( , ALL (FactTable), -- again, 'dim1' produces wrong results, has to be FactTable VALUES ( dim1 ) )
Beide Maßnahmen funktionieren und liefern richtige Ergebnisse. Sie multiplizieren jedoch die angezeigten Ergebnisse und bilden das kartesische Produkt aller Dimensionen. Warum? Wie kann man das verhindern?
Ich erhalte die erwarteten Ergebnisse mit measure:
Expected_Results_Color =IF ( ISBLANK ( ), BLANK (), )
Wahrscheinlich fehlt mir etwas bei der Funktion ALLEXCEPT
, so dass ich beim ersten Versuch nicht das bekomme, was ich will. Was ist die Logik hinter der Verwendung der Funktion ALLEXCEPT mit mehreren Tabellen, insbesondere mit weit entfernten Dimensionen, die nicht im Zentrum des Sternschemas liegen.
Welches Muster soll ich verwenden? Hier habe ich eine vielversprechende Lösung gefunden, die wie folgt aussieht:
ByCategories =CALCULATE ( SUM ( FactTable ), ALLEXCEPT ( dim1, dim1 ), ALLEXCEPT ( dim2, dim2 ), ALLEXCEPT ( dim3, dim3 ))
Aber so wie ich es vorher getestet habe, funktioniert es nicht. Es aggregiert nicht nach Dimensionen, sondern produziert, wie sie sind.
So habe ich herausgefunden, dass dies die richtige Richtung ist:
ByCategories =CALCULATE ( SUM ( FactTable ), ALLEXCEPT ( FactTable, -- here be difference dim1, dim2, dim3 ))
Ich spekuliere, dass es auch einen anderen Weg geben könnte.
Measure = var MyTableVariable = ADDCOLUMNS ( VALUES ( dim1 ), "GroupedSales", ) RETURN ...
Wenn wir nur einen einzelnen skalaren Wert von GroupedSales aus MyTableVariable abrufen und ihn mit der entsprechenden Farbe in der visuellen Tabelle vergleichen könnten.
Ich wäre sehr dankbar für weitere Einblicke in die Berechnung der Gesamtsumme für die Kategorie.