
DAX Funktion calculate
Welche Bedeutung hat die Funktion calculate?
DAX-Funktion CALCULATE – Das Herzstück leistungsstarker Auswertungen in Power BI
Wenn man mit Microsoft Power BI arbeitet, begegnet man früher oder später der DAX-Funktion CALCULATE(). Sie ist nicht nur eine der wichtigsten Funktionen in der DAX-Sprache, sondern auch eine der mächtigsten. In diesem Artikel erfährst du, was CALCULATE genau macht, wie sie funktioniert und wie du sie in der Praxis effektiv einsetzen kannst.
Was ist CALCULATE?
CALCULATE ist eine DAX-Funktion, die einen Ausdruck (z. B. eine Kennzahl) neu berechnet, indem sie Filterkontexte ändert oder hinzufügt. Damit ermöglicht sie es dir, Auswertungen gezielt zu steuern – zum Beispiel Umsätze nur für ein bestimmtes Jahr, eine Produktkategorie oder für bestimmte Bedingungen zu berechnen.
Die Syntax lautet:
dax
KopierenBearbeiten
CALCULATE(<Ausdruck>, <Filter1>, <Filter2>, ...)
Warum ist CALCULATE so wichtig?
CALCULATE ist die einzige Funktion in DAX, die Filterkontexte verändern kann. Das bedeutet: Während du mit einfachen Measures nur aggregieren kannst (z. B. Summe, Durchschnitt), erlaubt dir CALCULATE, diese Aggregationen unter bestimmten Bedingungen neu zu berechnen. Sie ist daher der Schlüssel für viele dynamische Berechnungen.
Ein einfaches Beispiel
Angenommen, du hast eine Tabelle Verkäufe mit folgenden Spalten:
Datum
Produkt
Kategorie
Menge
Umsatz
Du möchtest nun ein Measure definieren, das den Umsatz nur für die Kategorie "Software" berechnet – unabhängig davon, welche Kategorien im Bericht gerade gefiltert sind.
1. Standardmaß für Umsatz
dax
KopierenBearbeiten
Umsatz := SUM(Verkäufe[Umsatz])
2. Umsatz nur für "Software"
dax
KopierenBearbeiten
Umsatz Software := CALCULATE( [Umsatz], Verkäufe[Kategorie] = "Software" )
Dieses Measure überschreibt den aktuellen Filterkontext (z. B. durch einen Slicer oder eine Matrix) und wendet stattdessen den Filter Kategorie = "Software" an.
Was passiert technisch?
CALCULATE:
Evaluiert den Ausdruck (in unserem Fall [Umsatz])
Modifiziert den Filterkontext gemäß den angegebenen Bedingungen
Führt die Berechnung im neuen Kontext aus
Im Beispiel wird [Umsatz] also nur für die Zeilen berechnet, bei denen Kategorie = "Software" ist.
Beispiel mit Zeitintelligenz
CALCULATE ist auch essenziell für Zeitvergleiche wie YTD (Year-to-Date), Vorjahresvergleiche oder gleitende Durchschnitte.
Beispiel: Vorjahresumsatz
dax
KopierenBearbeiten
Umsatz Vorjahr := CALCULATE( [Umsatz], SAMEPERIODLASTYEAR(Datum[Datum]) )
Hier wird [Umsatz] für denselben Zeitraum im Vorjahr berechnet. SAMEPERIODLASTYEAR liefert einen Filter, den CALCULATE anwendet.
Mehrere Filterbedingungen
Du kannst auch mehrere Bedingungen kombinieren:
dax
KopierenBearbeiten
CALCULATE( [Umsatz], Verkäufe[Kategorie] = "Software", Verkäufe[Region] = "Süd" )
In diesem Fall wird der Umsatz nur für Software in der Region „Süd“ berechnet.
TIPP: FILTER vs. direkter Vergleich
Du kannst Filter auch mit der FILTER-Funktion setzen, was mehr Flexibilität bietet:
dax
KopierenBearbeiten
CALCULATE( [Umsatz], FILTER(Verkäufe, Verkäufe[Umsatz] > 1000) )
Das ist nötig, wenn du Bedingungen verwendest, die nicht mit einem einfachen Gleichheitszeichen ausgedrückt werden können.
Best Practices
Nutze CALCULATE, wenn du Kontext ändern oder erweitern willst.
Setze einfache Filter direkt (Spalte = "Wert"), komplexe Bedingungen über FILTER().
Vermeide zu viele Filter auf einmal – das kann zu unübersichtlichem und ineffizientem Code führen.
Verwende sprechende Namen für Measures, z. B. Umsatz Nur Software, um die Logik für andere nachvollziehbar zu machen.
Fazit
Die DAX-Funktion CALCULATE ist das Zentrum vieler fortgeschrittener Auswertungen in Power BI. Sie erlaubt es dir, Zahlen nicht nur zu berechnen, sondern gezielt zu steuern, unter welchen Bedingungen diese Zahlen gelten sollen. Sobald du dich mit der Filterlogik von CALCULATE vertraut gemacht hast, wirst du deine Power BI-Modelle auf ein ganz neues Level heben können.