Power BI: Umsatz-Buckets mit DAX SWITCH erstellen
Eine berechnete Spalte ordnet jeden Positionsumsatz einer festen Klasse zu. SWITCH(TRUE()) hält die Grenzwerte lesbar; eine zweite Zahlenspalte sorgt dafür, dass Power BI die Klassen nicht alphabetisch sortiert.
DAX · eindeutige Grenzen · 5 Minuten
Oliver Nagel · Dokumentation geprüft am
Bucket-Spalte anlegen
Abschnitt betitelt „Bucket-Spalte anlegen“In Power BI Desktop die Tabelle Auftragspositionen auswählen und über Modellierung → Neue Spalte diese berechnete Spalte anlegen. Tabellen- und Spaltennamen werden an das eigene Modell angepasst.
Umsatzklasse =VAR Umsatz = 'Auftragspositionen'[PosUmsatz]RETURN SWITCH ( TRUE (), ISBLANK ( Umsatz ), "Ohne Wert", Umsatz <= 0, "≤ 0", Umsatz <= 50, "0–50", Umsatz <= 100, "50–100", Umsatz <= 200, "100–200", Umsatz <= 500, "200–500", Umsatz <= 1000, "500–1.000", "> 1.000" )Die Variable verhindert, dass versehentlich zwei verschiedene Umsatzfelder gemischt werden. SWITCH(TRUE()) gibt das Ergebnis der ersten zutreffenden Bedingung zurück. Deshalb stehen die engeren, kleineren Grenzen zuerst.
Grenzen explizit prüfen
Abschnitt betitelt „Grenzen explizit prüfen“Mit der Formel oben gelten diese Zuordnungen:
BLANK()→ „Ohne Wert“-1und0→ „≤ 0“0,01bis50→ „0–50“50,01bis100→ „50–100“100,01bis200→ „100–200“200,01bis500→ „200–500“500,01bis1.000→ „500–1.000“- alles darüber → „> 1.000“
Eine Tabellenvisualisierung mit PosUmsatz und Umsatzklasse macht Fehler an den Grenzwerten sofort sichtbar. Besonders 0, 50, 100 und 1.000 einzeln prüfen.
Textklassen numerisch sortieren
Abschnitt betitelt „Textklassen numerisch sortieren“Ohne Hilfsspalte sortiert Power BI die Bezeichnungen alphabetisch. Deshalb eine zweite berechnete Spalte mit derselben Logik anlegen:
UmsatzklasseSort =VAR Umsatz = 'Auftragspositionen'[PosUmsatz]RETURN SWITCH ( TRUE (), ISBLANK ( Umsatz ), 0, Umsatz <= 0, 1, Umsatz <= 50, 2, Umsatz <= 100, 3, Umsatz <= 200, 4, Umsatz <= 500, 5, Umsatz <= 1000, 6, 7 )Danach Umsatzklasse markieren und Spaltentools → Nach Spalte sortieren → UmsatzklasseSort wählen. Beide Spalten liegen auf derselben Granularität; jeder Klassenname hat genau einen Sortierwert.
Berechnete Spalte oder Measure?
Abschnitt betitelt „Berechnete Spalte oder Measure?“Für Achsen, Slicer und Filter auf Ebene einer Auftragsposition ist die berechnete Spalte richtig: Die Klasse wird beim Datenrefresh je Zeile gespeichert. Ein Measure ist sinnvoll, wenn zuerst im aktuellen Filterkontext aggregiert und erst danach klassifiziert werden soll.
Ein Measure kann jedoch nicht wie eine normale Modellspalte als stabile Kategorieachse dienen. Vor dem Schreiben der Formel deshalb entscheiden, ob die Klasse eine einzelne Position oder einen dynamischen Gesamtumsatz beschreibt.
Fehlerbehebung
Abschnitt betitelt „Fehlerbehebung“Eine Klasse bleibt leer
Abschnitt betitelt „Eine Klasse bleibt leer“Prüfen, ob die Quellspalte numerisch ist und ob der DAX-Ausdruck überall exakt dieselbe Spaltenreferenz verwendet. Gemischte Referenzen auf ein Measure und eine Spalte liefern kontextabhängige Ergebnisse.
„50–100“ erscheint vor „0–50“
Abschnitt betitelt „„50–100“ erscheint vor „0–50““Die Kategorie ist noch alphabetisch sortiert. Umsatzklasse markieren und die Eigenschaft Nach Spalte sortieren auf UmsatzklasseSort setzen.
Power BI lehnt die Sortierspalte ab
Abschnitt betitelt „Power BI lehnt die Sortierspalte ab“Jeder eindeutige Textwert muss genau einem Sortierwert entsprechen. Kategorie- und Sortierspalte müssen dieselbe Granularität haben und mit denselben Grenzbedingungen berechnet werden.
Eine höhere Klasse wird nie erreicht
Abschnitt betitelt „Eine höhere Klasse wird nie erreicht“Die Bedingungen stehen wahrscheinlich in der falschen Reihenfolge. Bei SWITCH(TRUE()) beendet der erste Treffer die Auswertung; eine allgemeine Bedingung wie Umsatz < 1.000 darf nicht vor engeren Grenzen stehen.
Rollback
Abschnitt betitelt „Rollback“Die beiden berechneten Spalten Umsatzklasse und UmsatzklasseSort aus dem Modell entfernen und betroffene Visuals auf das ursprüngliche Feld zurückstellen. Die Quelldaten werden durch berechnete Spalten nicht verändert.