Power Pivot – DAX-Measures erstellen und anwendenPower Pivot: Wie Sie eigene DAX-Measures entwickeln

Von der individuellen Fragestellung zum exakt passenden DAX-Measure in Power Pivot – Schritt für Schritt. Die kluge Herangehensweise für individuelle Fragestellungen.

Hintergrund: Das Problem mit dem DAX

Auch nach einem Excel-Kurs und ausführlicher Lektüre von Anleitungen, steht fast jeder Anwender irgendwann an diesem Punkt: „Ich verstehe die vorhandenen Measures – aber, wenn ich selbst eine neue Kennzahl erstellen möchte, weiß ich nicht, wo ich anfangen soll.“

Genau dafür liefert dieser Beitrag einen methodischen Leitfaden. Denn das Schreiben von DAX-Formeln ist keine Kunst, sondern das Ergebnis strukturierten Denkens über Datenkontexte, Filter und Beziehungen.

DAX (Data Analysis Expressions) ist keine klassische Programmiersprache, sondern eine Formelsprache für Aggregationen im Kontext. Deshalb muss man beachten: Jede DAX-Formel wird immer in einem Filterkontext ausgeführt.

Man kann sich das wie einen „Mini-Bericht“ vorstellen: Bevor DAX rechnet, wird die zugrunde liegende Tabelle gefiltert. Beispiel: Man filtert alle Bestellungen eines bestimmten Monats oder eines Kunden – und berechnet den gesuchten Wert nur über diese gefilterten Zeilen.

Diese Denkweise unterscheidet sich fundamental von Excel, wo Formeln zellenweise rechnen. DAX rechnet kontextbezogen über ganze Datenmengen.

Wer das versteht, hat den wichtigsten Schritt im DAX-Denken bereits gemacht.

Schritt 1: Immer vom Ergebnis her denken

Bevor Sie überhaupt eine Formel schreiben, beantworten Sie diese drei Fragen:

  1. Was genau soll berechnet werden? → zum Beispiel: „Durchschnittlicher Umsatz pro Kunde“ oder „Anteil der Online-Bestellungen am Gesamtumsatz“.
  2. Auf welcher Ebene? → je Kunde, je Monat, je Produkt oder über alles hinweg?
  3. Wie soll es dargestellt werden? → als Zahl, Prozentsatz, Vergleich zum Vorjahr, kumuliert, gerankt?

Tipp: Formulieren Sie das Ziel in einem Satz in natürlicher Sprache: „Ich möchte den Anteil jeder Produktkategorie am Gesamtumsatz anzeigen.“ Dieser Satz lässt sich dann fast wörtlich in DAX übersetzen.

Schritt 2: Das Datenmodell kennen

Ein DAX-Measure funktioniert nur, wenn Sie verstehen, wie Ihre Tabellen miteinander verbunden sind. Zum Beispiel so:

TabelleInhaltBeziehung

tbl_Bestellungen

(Faktentabelle)

BestellID, KundeID, ProduktID, Menge, BestelldatumKundeID, ProduktID, Bestelldatum

tbl_Produkte

(Dimensionstabelle)

ProduktID, Einzelpreis, Kategorieüber ProduktID

tbl_Kunden

(Dimensionstabelle)

KundeID, Regionüber KundeID

tbl_Kalender

(Kalendertabelle)

Datum, Jahr, Quartal, Monat, Kalenderwocheüber Bestelldatum

Die meisten Berechnungen beginnen in der Faktentabelle (tbl_Bestellungen), weil dort die Transaktionen liegen, über die aggregiert wird.

Die Dimensionstabellen und die Kalendertabelle (tbl_Produkte, tbl_Kunden, tbl_Kalender) dienen zur Gruppierung und Filterung.

DAX „denkt“ entlang dieser Beziehungen – der Filter fließt von den Dimensionen in die Faktentabelle. Dieses Prinzip nennt man Filterpropagation.

Schritt 3: Die richtige Funktionsfamilie wählen

DAX-Funktionen lassen sich in Funktionsfamilien einteilen – jede Familie hat ihr Einsatzgebiet:

FunktionsfamilieTypische AnwendungBeispiele
AggregationenSummen, DurchschnitteSUM, AVERAGE, COUNTROWS
IteratorenBerechnung pro ZeileSUMX, AVERAGEX, RANKX
FilterfunktionenFilter setzen, löschen, verändernCALCULATE, FILTER, ALL, KEEPFILTERS
ZeitfunktionenZeitvergleicheSAMEPERIODLASTYEAR, DATESYTD, TOTALYTD
StatistikMedian, Perzentile, VarianzMEDIANX, PERCENTILEX.INC, STDEVX.P
Text und LogikBedingungen und TextausgabeIF, SWITCH, CONCATENATEX

Tipps:

  • Wenn Sie über Zeilen iterieren, also zunächst Zeile für Zeile berechnen, verwenden Sie die X-Variante (SUMX, AVERAGEX …).
  • Wenn Sie eine ganze Spalte aggregieren, reicht die einfache Version (SUM, AVERAGE).

Schritt 4: Den Filterkontext bewusst steuern

Der Filterkontext ist das Herzstück von DAX. Er wird durch Zeilen- und Spaltenbeschriftungen, Slicer und Beziehungen bestimmt.

Beispiel:

  • In einer Pivot-Tabelle mit tbl_Kunden[Region] in den Zeilen und
  • dem Measure [Umsatz] in den Werten
  • wird automatisch der Umsatz je Region berechnet.

Möchten Sie aber den Umsatz nur für Deutschland anzeigen, müssen Sie den Filterkontext überschreiben. Dazu erstellen Sie das Measure:

Umsatz_DE :=CALCULATE([Umsatz]; tbl_Kunden[Region] = "Deutschland")

Hier setzt CALCULATE() den Filter für die Spalte Region neu. Dieses Prinzip gilt für fast alle DAX-Analysen: Man ändert, erweitert oder entfernt bestehende Filter gezielt.

Tipp: Überlegen Sie, welche Daten genau Sie aus Ihrer Faktentabelle herausfiltern wollen. Mit dem DAX-Measure CALCULATE() können Sie diesen Filter dann einstellen.

Schritt 5: Vom Einfachen zum Komplexen

Ein häufiger Fehler: Man versucht, gleich die endgültige Formel zu schreiben. DAX belohnt aber das iterative Vorgehen.

Beispiel: Sie wollen den Umsatzanteil je Produktkategorie berechnen. So gehen Sie vor:

1. Umsatz berechnen

Umsatz :=SUMX(tbl_Bestellungen; tbl_Bestellungen[Menge] * RELATED(tbl_Produkte[Einzelpreis]))

2. Gesamtumsatz ohne Filterung ermitteln

GesamtUmsatz := CALCULATE([Umsatz]; ALL(tbl_Produkte))

3. Anteil berechnen

Anteil_Kategorie :=DIVIDE([Umsatz]; [GesamtUmsatz])

Ergebnis: Sie sehen in Ihrer Pivot-Tabelle sofort den Anteil jeder Kategorie am Gesamtumsatz egal, welche Filter in der Pivot-Tabelle aktiv sind.

Lernen Sie, Formeln in kleine logische Bausteine zu zerlegen. So können Sie jeden Teil testen und verstehen.

Vergleich zu Excel – warum DAX anders „denkt“

Viele Excel-Anwender tun sich mit DAX schwer, weil Excel zeilenorientiert rechnet und DAX kontextorientiert.

ExcelDAX
Formel bezieht sich auf konkrete ZellenFormel bezieht sich auf den Filterkontext
Rechnet „von unten nach oben“Rechnet „von außen nach innen“
Jede Zelle = eigenes ErgebnisGleiche Formel liefert je Kontext anderes Ergebnis
Keine BeziehungenTabellen über Schlüssel verknüpft
Aggregation mit ZwischensummenAggregation über Filtermechanismen

DAX ist daher deklarativ: Sie sagen was berechnet werden soll, nicht wie. Das Denken in Filtern statt in Zelladressen ist der entscheidende Paradigmenwechsel.

Beispiel: Vom Gedanken zur Formel

Angenommen, Sie wollen wissen: „Wie hoch ist der durchschnittliche Bestellwert pro Kunde im Jahr 2024?“

Schritt 1: Logik in Worte

  • Zähle alle Bestellungen im Jahr 2024.
  • Addiere alle Umsätze im Jahr 2024.
  • Teile den Gesamtumsatz durch die Anzahl der Bestellungen.

Schritt 2: In DAX übersetzen

Wählen Sie die passenden DAX-Funktionen. In diesem Fall:

  • DISTINCTCOUNT() zählt die eindeutigen Bestell-IDs,
  • Umsatz ist das zuvor berechnete Measure (siehe oben),
  • CALCULATE() berechnet Umsatz und Anzahl der Bestellungen mit dem Filter für das Jahr 2024,
  • DIVIDE() teilt den berechneten und gefilterten Umsatz durch die Anzahl der Bestellungen (ohne Fehler bei Division durch 0).

Daraus stellen Sie dieses DAX-Measure zusammen: 

Durchschnitt_Bestellwerte_ 2024 :=

DIVIDE(
CALCULATE([Umsatz]; YEAR(tbl_Kalender[Datum]) = 2024); 
CALCULATE(DISTINCTCOUNT(tbl_Bestellungen[BestellID]); YEAR(tbl_Kalender[Datum]) = 2024)
)

Typische Denkfallen beim Erstellen eigener Measures

ProblemUrsacheLösung
Unerwartete WerteFilterkontext wirkt anders als gedachtPivot-Felder prüfen, ALL() oder KEEPFILTERS() testen
Fehlermeldung „Tabelle mit mehreren Werten zurückgegeben“DAX erwartet SkalarwertAggregationsfunktion hinzufügen (SUMX, MAX, etc.)
Performance langsamZu viele Filter oder IteratorenDatenmodell vereinfachen, CALCULATE() effizient nutzen
Unterschiedliche Ergebnisse bei gleichem MeasureUnterschiedliche aktive BeziehungenBeziehungsdiagramm prüfen
Ergebnis leerDivision durch Null oder fehlende WerteDIVIDE() oder COALESCE() verwenden

Die 5-Schritte-Methode für eigene DAX-Measures

Zusammengefasst gehen Sie beim Erstellen Ihrer DAX-Measures so vor:

  1. Ziel definieren – Was will ich wissen?
  2. Quellen bestimmen – Aus welchen Tabellen stammen die Daten?
  3. Kontext verstehen – Welche Filter gelten aktuell?
  4. Bausteine kombinieren – Aggregation, Filter, Berechnung.
  5. Schrittweise testen – Zwischenergebnisse prüfen, Maß verfeinern.

Tipp: Verwenden Sie für neue Measures temporäre Test-Pivot-Tabellen, in denen Sie die Logik isoliert prüfen können. So lernen Sie das Verhalten der Funktion im Kontext schneller zu verstehen.

Wie Sie ein eigenes „DAX-Denksystem“ entwickeln

Schreiben Sie DAX-Formeln nie auf Verdacht. Beginnen Sie mit dem Satz: „Ich will berechnen, dass …“ Dann übersetzen Sie den Satz in DAX-Logik.

Lernen Sie iterativ. Kleine Experimente mit CALCULATE() oder FILTER() zeigen oft mehr als stundenlanges Grübeln.

Verstehen Sie, was im Modell passiert. Nutzen Sie die Diagrammansicht, um zu sehen, wie Filter fließen.

Kommentieren Sie Ihre Measures. Beispiel: „Anteil am Gesamtumsatz, unabhängig von aktiven Produktfiltern“ – als DAX-Measure: Anteil_Kategorie :=DIVIDE([Umsatz]; CALCULATE([Umsatz]; ALL(tbl_Produkte)))

Fazit

Das Entwickeln eigener DAX-Measures ist kein Ratespiel, sondern eine Denkdisziplin: Sie kombinieren Businessverständnis, Filterlogik und DAX-Syntax.

Wenn Sie lernen, vom Ziel her rückwärts zu denken, das Datenmodell bewusst zu nutzen und Formeln schrittweise aufzubauen, dann können Sie jedes individuelle Reporting-Bedürfnis in DAX abbilden.

DAX ist kein Werkzeug zum Addieren – DAX ist eine Sprache, um Daten zu denken.

Dazu im Management-Handbuch

Vorlagen nutzen

Weitere Kapitel zum Thema