
DAX Funktion sumx
Welche Bedeutung hat die Funktion sumx?
SUMX in Power BI: Der Schlüssel zu dynamischen Berechnungen
Wenn du in Power BI mit DAX arbeitest, wirst du früher oder später über SUMX stolpern – und das ist auch gut so. Denn SUMX gehört zu den leistungsstärksten Funktionen im Power BI-Universum. In diesem Artikel erfährst du, was SUMX ist, wann du sie brauchst und wie du sie richtig einsetzt. Mit praktischen Beispielen und Profi-Tipps für deinen Power BI-Alltag.
Was ist SUMX?
Die DAX-Funktion SUMX gehört zu den sogenannten Iterator-Funktionen. Im Gegensatz zur einfachen SUM-Funktion, die lediglich eine Spalte summiert, geht SUMX einen Schritt weiter:
👉 SUMX durchläuft zeilenweise eine Tabelle, berechnet für jede Zeile einen Ausdruck und summiert das Ergebnis.
Das ermöglicht dir, Berechnungen in Abhängigkeit anderer Spaltenwerte vorzunehmen – und zwar dynamisch und kontextsensitiv.
Syntax von SUMX
dax
KopierenBearbeiten
SUMX(<Tabelle>, <Ausdruck>)
<Tabelle>: Eine DAX-Tabelle (z. B. eine physische Tabelle oder eine gefilterte virtuelle Tabelle).
<Ausdruck>: Ein Ausdruck, der für jede Zeile ausgewertet wird. Häufig eine Berechnung mit Spaltenwerten.
Einfaches Beispiel: Umsatz berechnen
Stell dir vor, du hast eine Tabelle Sales mit den Spalten Menge und Preis.
dax
KopierenBearbeiten
Gesamtumsatz = SUMX(Sales, Sales[Menge] * Sales[Preis])
✅ SUMX berechnet für jede Zeile den Umsatz (Menge * Preis) und summiert anschließend alle Zeilen auf.
Im Gegensatz dazu würde ein einfacher SUM(Sales[Menge] * Sales[Preis]) nicht funktionieren – weil SUM keine Ausdrücke über mehrere Spalten akzeptiert.
SUMX vs. SUM – Wo liegt der Unterschied?
Funktion
Was sie tut
Wann einsetzen
SUM
Summiert eine Spalte direkt.
Wenn du einfach Werte aufsummieren willst.
SUMX
Summiert das Ergebnis eines Ausdrucks pro Zeile.
Wenn du berechnete Werte pro Zeile brauchst.
Beispiel:
dax
KopierenBearbeiten
SUM(Sales[Umsatz]) // OK, wenn Spalte vorhanden SUMX(Sales, Sales[Menge]*Sales[Preis]) // Wenn Umsatz nicht als Spalte existiert
Typische Anwendungsfälle für SUMX
💡 1. Dynamischer Umsatz mit Rabatten
dax
KopierenBearbeiten
UmsatzNachRabatt = SUMX(Sales, Sales[Menge] * Sales[Preis] * (1 - Sales[Rabatt]))
💡 2. Lagerwert pro Produkt
dax
KopierenBearbeiten
Lagerwert = SUMX(Products, Products[Lagerbestand] * Products[Einkaufspreis])
💡 3. Berechnung mit Filtern
dax
KopierenBearbeiten
VerkaufPremium = SUMX( FILTER(Sales, Sales[Produktgruppe] = "Premium"), Sales[Menge] * Sales[Preis] )
Hier wird zunächst mit FILTER eine virtuelle Tabelle erstellt – SUMX iteriert dann nur über diese gefilterten Zeilen.
Performance-Hinweise zu SUMX
SUMX ist mächtig, aber auch performancekritisch – besonders bei großen Datenmodellen.
Tipps:
Vermeide unnötige Berechnungen in der Zeile – z. B. komplexe IF/LOOKUPs.
Reduziere Filterkomplexität, wenn möglich.
Nutze CALCULATE nur wenn nötig – oft kann man SUMX mit einfachen Ausdrücken effizienter halten.
Prüfe deine Measures mit dem Performance Analyzer in Power BI Desktop.
SUMX mit RELATED: Daten aus verknüpften Tabellen nutzen
dax
KopierenBearbeiten
UmsatzMitKundendaten = SUMX( Sales, Sales[Menge] * Sales[Preis] * RELATED(Customers[Rabattfaktor]) )
🔗 Mit RELATED greifst du auf Felder aus einer verknüpften Tabelle zu – perfekt bei normalisierten Datenmodellen.
Typische Fehler bei SUMX (und wie du sie vermeidest)
Fehler
Erklärung
Lösung
Ausdruck ergibt leere Werte
Nullwerte in Berechnung
IF(ISBLANK(), 0, ...) verwenden
Rechenfehler durch falschen Kontext
SUMX ignoriert Kontextfilter nicht automatisch
Kontext mit CALCULATE oder REMOVEFILTERS steuern
Schlechte Performance
SUMX auf großen Tabellen mit teuren Berechnungen
Vorab aggregieren, evtl. über Power Query
Fazit: Wann solltest du SUMX verwenden?
✅ Verwende SUMX, wenn du:
Berechnungen zeilenweise durchführen willst.
Spaltenwerte miteinander multiplizieren oder kombinieren willst.
Nur virtuell berechnete Werte summieren möchtest.
Komplexe Logik pro Zeile abbilden willst.
Vermeide SUMX, wenn eine einfache SUM ausreicht – du sparst Performance und Komplexität.
Bonus: SUMX kombiniert mit CALCULATE
Du kannst SUMX auch mit CALCULATE kombinieren, um den Kontext noch stärker zu steuern:
dax
KopierenBearbeiten
SUMX( FILTER(Sales, Sales[Region] = "Süd"), CALCULATE(Sales[Menge] * Sales[Preis]) )
Dies macht Sinn, wenn du innerhalb von SUMX auf einen modifizierten Filterkontext zugreifen möchtest.