Der erste Artikel dieser Serie führt in die Thematik ein, DAX auf andere Konzepte zu übertragen („Projektion“). Damit sind Mengen-Konzepte, aber auch SQL und Objekt-orientierte Konzepte gemeint.
Der Sinn ist es, hiermit die grundsätzlichen und komplexen Verhaltensweisen von DAX aus der Sicht eines anderen Konzepts transparent zu machen.
Auf einem SQLPASS Event zur Einführung von Power BI und DAX hörte ich vom vortragendem MVP einen Hinweis, dass MDX als Sprache für den Cube von den Anwendern als so schwierig eingestuft wird, dass Microsoft sich entschlossen habe, MDX mit DAX zu ersetzen. In meiner Wahrnehmung ist allerdings DAX nicht unbedingt "einfacher" als MDX, auch nach langjähriger Beschäftigung mit DAX würde ich eher das Gegenteil behaupten.
Tatsache ist: es gibt eine große Anfangshürde bei MDX, die man kaum im Selbststudium überwindet. Hat man diese Hürde aber überwunden, ist die Sprache äußerst plausibel und effektiv anzuwenden. Dagegen scheint DAX schon bei den ersten Versuchen leichter verständlich, aber die Schwierigkeiten werden nach und nach sichtbar. Am Schluss scheint es, als ob man auch bei DAX schwer im Selbststudium zum Ziel kommt.
Gerade BI-Spezialisten erscheint die Sprache DAX inkonsequent, intransparent und es ist gerade für diese professionelle Zielgruppe nicht klar ersichtlich, auf welchem grundlegenden Konzepten DAX beruht. Die Sprache scheint eher aus einem großen Haufen von Regeln zu bestehen und es ist schwierig, die Funktionalität von einem Punkt aus zu betrachten.
Die Erfahrung beim Unterrichten zeigt, dass das Thema DAX im Unterricht schleifenartig vermittelt werden muss, so, wie es auch das Handbuch "The Definitive Guide To DAX" macht. D.h. man kommt immer wieder zu den gleichen Themen zurück, aber bei jeder Runde wird der Stoff weiter vertieft. Dies erweckt bei den Teilnehmern gern den Eindruck, dem Dozenten fehle für den DAX-Stoff ein geeigneter roter Faden "vom Leichten zum Schweren"
Die typische Zielgruppe der PowerUser wie z.B. Finanz-Analysten ist primär an schnellen Ergebnissen interessiert, nicht an den Grundlagen der Sprache. Tatsächlich genügen dieser Zielgruppe häufig einfache Erklärungen, ein Tag Einführung oder YouTube-Videos für die Erstellung einfacher KPIs. Wenn es bei den einfachen Fällen bleibt oder wenn das Layout der Berichte, für die diese KPIs erstellt wurden, nicht verändert wird, sind schnell erworbene Grundlagenkenntnisse tatsächlich der effektive Weg, um schnell KPIs zu entwickeln. Für diese Zielgruppe ist es sinnvoll, nicht den Overhead der Sprach-Grundlagen zu erlernen, um am Schluss nur einfache Fälle zu lösen.
Die Schwierigkeiten beginnen dort, wo die Umstände sich ändern:
Es existieren zwei Annahmen, die durch meine eigenen Erfahrungen mehr als deutlich widerlegt wurden:
Aus meiner jetzigen Perspektive gibt es keine einfachen DAX-Expressions bzw. einfachen DAX-Abfragen. Auch eine einfache DAX-Query muss vollständig in ihrer ganzen Komplexität verstanden sein, damit KPIs unter allen Umständen das erwartete Ergebnis zeigen. Die Funktion "CALCULATE" verbirgt - mehr oder weniger - das ganze Konzept der Sprache DAX. Oder anders ausgedrückt: wer "CALCULATE" verstanden hat, kann DAX-Code entwickeln.
Meine Serie soll dabei helfen, die Grundlagen der Sprache zu verstehen. Dabei greife ich auf verschiedene andere Konzepte zurück, um DAX verständlich zu machen („Projektion“):
Bei den Mengen-Konzepten handelt es sich dabei genau um die Konzepte, auf der die Sprache MDX beruht und das Microsoft dem Anwender offensichtlich ersparen möchte. Vermutlich aus diesem Grund werden Sie in der MSDN Online-Hilfe keine Hinweise darauf finden.
Wenn man sich vor Augen hält, dass MDX und DAX auf dem gleichen Backend, der Vertipaq-Engine, arbeiten, so ist klar, dass die Parallelen zu Mengen-Konzepten nicht nur theoretischer Art sind: MDX mit seinen Sets, Tupels und Membern ist quasi die native Sprache für den Cube, sei es in der multidimensionalen oder in der tabularen Ausprägung. DAX dagegen ist eine Sprache, die in MDX übersetzt wird.
Die Serie richtet sich an Anwender, die bereits die ersten Erfahrungen in DAX gesammelt haben und mit den Konzepten "Filter", "Context Transition" und "Filter Propagation" (s. Marco Russo) etwas anfangen können. Vorteilhaft sind darüber hinaus auch fundierte Kenntnisse in SQL und / oder einer Objekt-orientierten Sprache wie z.B. C#. Leser, die Konzepte aus anderen Bereichen als DAX nicht kennen, können die jeweiligen Abschnitte auch überspringen.
Der Gedanke des CROSSJOINs besteht darin, jedes Element von Menge 1 mit jedem Element aus Menge 2 zu verknüpfen. Das Beispiel zeigt den CROSSJOIN für zwei 1-dimensionale Sets – ein Entwickler würde sagen „Arrays“ – mit Elementen aus verschiedenen Dimensionen. set1 enthält Buchstaben, set2 enthält Zahlen. Das Ergebnis der Verknüpfung ist ein 2-dimensionales Tupelset. Ein Set wird hier syntaktisch mit „{}“ dargestellt und ein Tupel mit „()“.
set1 = { A, B }
set2 = { 1, 2, 3 }
set3 = set1 CROSSJOIN set2
Inhalt von set3: { (A, 1 ), (A, 2), (A, 3), (B, 1), (B, 2), (B, 3) }
Die CROSSJOIN-Funktion verhält sich wie in der Theorie erwartet, sie bildet das vollständige kartesische Produkt aus Region und City.
Die Syntax von SUMMARIZECOLUMNS lautet:
SUMMARIZECOLUMNS (
- <groupBy_columnName> [, < groupBy_columnName >]…,
- [<filterTable>]…
- [, <name>, <expression>]…)
Nur der erste Argument-Typ ist verpflichtend: Es müssen eine oder mehrere Gruppierungsspalten angegeben werden. Das nächste Beispiel zeigt den Einsatz von SUMMARIZECOLUMNS mit den entsprechenden Beispiel-Daten von oben. Es wird nur der erste verpflichtende Argument-Typ verwendet.
Das Beispiel belegt, dass die Hauptoperation von SUMMARIZECOLUMNS tatsächlich ein CROSSJOIN über die Gruppierungsspalten ist. Im Beispiel ist das Datenmodell hinter der DAX-Abfrage ein Snowflake-Schema. Die Entitäten „City“ und „Region“ sind dabei in separaten Tabellen abgelegt und über Beziehungen verbunden:
Das nächste Beispiel zeigt wieder eine Abfrage mit SUMMARIZECOLUMNS und den gleichen Daten. Jedoch sind die Entitäten Region und City in denormalisierter Form bereitgestellt. Das Modell ist ein Star-Schema.
Die DAX-Abfrage führt jetzt zu einem anderen Ergebnis:
Es wurde jetzt nicht mehr die vollständige Kreuz-Matrix gebildet; „Berlin“ beispielsweise tritt nur noch zusammen mit der Region „North“ auf.
Bei CROSSJOIN wird – unabhängig vom Datenmodell – die vollständige Kreuz-Matrix gebildet
Bei SUMMARIZECOLUMNS wird optional die vollständige Kreuz-Matrix über Tabellen eingeschränkt, in der sich die Spalten befinden
Die beiden nachfolgenden Beispiele zeigen die Set-Operationen, wie man sie sich in SQL vorstellen kann.
Die Spalten-Werte stammen aus zwei verschiedenen Tabellen:
Beachten Sie folgenden Unterschied zum vorausgegangenen Beispiel: Die Werte für „Region“ und „City“ stammen jetzt beide aus derselben Tabelle, nämlich "dimPerson1". Nachdem die vollständige Kreuzmatrix gebildet wurde, wird die Tabelle „dimPerson1“ benutzt, um nur die Tupels zurückgeben, die auch tatsächlich existieren.
Die allgemeine Erkenntnis aus dem zweiten Beispiel ist, dass Tabellen eineListe gültigen Tupels vorgeben, die zum Filtern anderer Sets verwendet werden können.
Wir erweitern ständig unser Beratungsportfolio. Über 300 Beratungsleistungen haben wir für Sie im Programm. Selbstverständlich lassen sich die einzelnen Themen kombinieren. So erhalten Sie genau die Beratung, die Sie wünschen und brauchen
Mehr IT-, Online-, Digital-Beratungsleistungen anzeigen >>Entfesseln Sie die Power Ihrer Daten: Erstellen Sie aussagekräftige Berichte und dynamische Dashboards mit Microsoft SQL Server Reporting Services (SSRS). Von der Datenaufbereitung bis zur interaktiven Visualisierung – meistern Sie den gesamten Prozess und bringen Sie Ihre Daten zum Leben!
Python ist eine sehr beliebte Programmiersprache, die häufig in der Datenwissenschaft verwendet wird. Erfahren Sie, wie Sie mit Python in Microsoft SQL Server schnell und sicher Daten verarbeiten und analysieren können.
Es ist an der Zeit, Daten in etwas anderem als in Excel-Tabellen zu speichern. Entdecken Sie die skalierbare Datenmodellierung mit Analysis Services Tabular, um die Gegenwart zu verstehen und für die Zukunft zu planen.
Erhalten Sie das Wissen und die Werkzeuge, die Sie benötigen, um SQL Server 2022 in Ihrer Umgebung korrekt und effektiv zu verwalten. Machen Sie sich mit den neuesten Funktionen von SQL Server 2022 vertraut.
Erobern Sie die Welt der Datenbanken mit der Microsoft SQL Server Grundlagen Schulung! Lernen Sie alles, was Sie wissen müssen, um effektiv mit SQL Server zu arbeiten und Ihre Datenbanken optimal zu verwalten. Mit unserer praxisorientierten Schulung erhalten Sie das Wissen und die Fähigkeiten, um SQL Server optimal zu nutzen und erfolgreich in Ihrer beruflichen Karriere einzusetzen
Information sind Macht und in der Geschäftswelt kann es einen Wettbewerbsvorteil bedeuten, über mehr Informationen zu verfügen. Erfahren Sie, wie Sie Data Warehouses in Microsoft SQL Server entwickeln, um eine robuste und vertrauenswürdige Plattform für alle Ihre BI-Berichts- und Analyse-Workloads zu schaffen.
Lernen Sie, wie Sie Daten schnell und sicher mit R in SQL Server verarbeiten können um komplexer Data Science-Analysen in einer sicheren Umgebung durchzuführen.
Es hat wenig Sinn, Daten in einer SQL Server-Datenbank zu speichern, wenn Sie nie etwas damit machen. Das Schreiben von Abfragen ist bei weitem der wichtigste Aspekt bei jedem Datenbankprojekt.
Daten sind häufig in einer Vielzahl von Dateiformaten und Datenplattformen gespeichert. Mit SSIS erstellen Sie automatisierte Workflows, die den Prozess der Konsolidierung von Daten rationalisieren.
Daten sind das Öl des 21. Jahrhundert: Aber Ihre Daten sind nur so gut, wie sie ausgewertet werden. Entdecken Sie die Kunst der Datenanalyse mit OLAP-Cubes in Microsoft SQL Server Analysis Services (SSAS).
Aktuelle und interessante Themen und Beiträge für Sie zusammengetragen und aufbereitet.