DAX (Data Analysis Expressions) ist eine Analysesprache mit der Daten aus tabellarischen Modellen abgerufen (ähnlich SQL) werden können. Ebenso ist es möglich, „Measures“ (=Berechnungen) als Teil einer Abfrage zu integrieren.
DAX ist eine Bibliothek mit Funktionen, Operatoren und Konstanten, die kombiniert werden können, um Formeln und Ausdrücke in Power Pivot für Excel zu erstellen.
DAX-Funktionen sind den Ihnen bekannten Excel-Tabellenfunktionen sehr ähnlich. Um eine DAX-Funktion zu erstellen geben Sie
- ein Gleichheitszeichen
- gefolgt von einem Funktionsnamen oder Ausdruck sowie
- den erforderlichen Werten oder Argumenten ein.
Wie Excel stellt DAX eine Vielzahl von Funktionen bereit, die Ihnen ermöglichen, mit Zeichenfolgen zu arbeiten, Berechnungen mit Datums- und Uhrzeitangaben durchzuführen und bedingte Werte zu erstellen. Ein großer Teil der Excel-Tabellenfunktion ist hier integriert.
Ein DAX Query liefert Daten in Tabellenform und wird als Analysesprache in
- Power Pivot für Excel,
- Power BI sowie
- im tabularen Modell des SQL Server Analysis Services (SSAS) verwendet.
Allerdings ist der Umgang mit den DAX-Funktionen etwas gewöhnungsbedürftig, da sie sich in folgenden Punkten von Excel-Funktionen unterscheiden:
Besonderheiten DAX-Funktionen
- Eine DAX-Funktion verweist immer auf eine ganze Spalte oder eine ganze Tabelle. Möchten Sie einen Teil der Werte einer Tabelle oder Spalte verwenden, müssen Sie innerhalb der Funktion mit Filtern arbeiten (ähnlich der Funktion SUMMEWENN). Es werden keine Zellbereiche oder Bereiche als Verweise akzeptiert.
- Stellen Sie sich vor, sie würden eine Excel-Tabelle über Autofilter auf die gewünschten Zeilen reduzieren und davon eine Summe berechnen. Das ist die Arbeitsweise von DAX-Funktionen! Erst die Filterkriterien „abarbeiten“, dann das gewünschte Ergebnis berechnen!
- Einige DAX-Funktionen ermöglichen der im Reporting beliebten Zeitvergleich zum Wert des Vormonats, Vorquartals, Vorjahres usw…
- DAX-Datums- und Uhrzeitfunktionen geben einen datetime-Datentyp zurück und keine serielle Zahl.
- Für die Daten in einer Spalte wird immer derselbe Datentyp erwartet. Wenn die Daten nicht vom gleichen Typ sind, wird in DAX die gesamte Spalte in den Datentyp geändert, der am besten zu allen Werten passt.
- Einige DAX-Funktionen geben eine Tabelle statt eines Skalars (Vektor) zurück und müssen in eine Funktion eingeschlossen werden, die die Tabelle auswertet und einen Skalar zurückgibt. Lediglich, wenn die Tabelle eine einzelne Spalte (einzelne Zeilentabelle) ist, wird sie als Skalarwert behandelt.
DAX-Funktionen liefern oft unerwartete Ergebnisse. Das hat etwas damit zu tun, in welcher Reihenfolge DAX-Funktionen auf bestimmte Angaben reagieren. DAX wendet 4 Schritte an, um zum gewünschten Ergebnis pro Zelle zu gelangen.
- Filter in der Pivot Tabelle
- Calculate Filter anwenden (falls vorhanden)
- Beziehungen anwenden (in Filterrichtung)
- Arithmetik – Berechnen des Resultats gemäß Formel
Die Schreibweise von DAX-Funktionen unterscheidet sich ebenfalls von der der Tabellenfunktionen, ist ebenfalls gewöhnungsbedürftig. Es handelt sich eben nicht um Excel-Funktionen, auch wenn man glaubt, in Excel zu arbeiten!
- Eine DAX-Formel beginnt immer mit einem Gleichheitszeichen (=).
- Nach dem Gleichheitszeichen können Sie einen beliebigen Ausdruck angeben, der einen Skalar ergibt, oder einen Ausdruck, der in einen Skalar konvertiert werden kann (+, -, *, / , >= , &&,).
- Verweise sind immer Tabellen und Spalten als Eingaben für Funktionen, nie ein Array oder einen beliebigen Satz von Werten.
- Die meisten DAX-Funktionen erfordern mindestens ein Argument, dabei kann es sich um Tabellen, Spalten, Ausdrücke und Werte handeln. Sie können auch Funktionen innerhalb anderer Funktionen schachteln.
Warum DAX-Funktionen?
Mit DAX-Funktionen können Sie sog. Measures erstellen. Ein Measure ist eine Formel, die speziell für die Verwendung in einer Pivot-Tabelle (entspricht einem berechneten Feld) auf der Basis eines PowerPivot-Datenmodells (=lokaler OLAP-Cube) erstellt wird. Ein Measure wird im Wertebereich einer Pivot-Tabelle verwendet. Bei einer berechneten Spalte oder einer herkömmlichen Pivot-Tabelle werden bei jeder Veränderung (z.B. Auswahlfilter) alle Berechnungen aktualisiert. Das ist bei größeren Datenmengen sehr unperfomant. Berechnungsergebnisse werden durch Measures im Cube gespeichert und nur neu Berechnet, wenn die Datenquelle durch den Cube aktualisiert werden. Also einmal ein u.U. längere Aktualisierung der Daten und Berechnung und nicht eine permanente, lang andauernde Aktualisierung. Measures sind daher berechneten Spalten immer vorzuziehen, da sie performanter sind.
Wenn Sie das Measure hinzugefügt haben, wird die Formel für jede Zelle im Wertebereich der PivotTable ausgewertet. Da ein Ergebnis für jede Kombination von Zeilen- und Spaltenüberschriften erstellt wurde, kann das Ergebnis für das Measure in jeder Zelle abweichen.
Mehr dazu im BLOG-Beitrag zu Business Intelligence.