Das Abrufen von Informationen aus einer tabellarischen Datenbank ist einfach – fragen Sie sie einfach mit einigen grundlegenden DAX-Funktionen ab! In diesem Artikel erfahren Sie, wie Sie ein tabellarisches Modell mit einigen MDX-Ausdrücken abfragen, die Ergebnisse von DAX-Abfragen untersuchen und Daten aus den Tabellen analysieren.
Anforderungen
Die Voraussetzungen für die Abfrage mit MDX sind SQL Server Management Studio 2014 oder höher mit einer installierten tabellarischen SSAS-Instanz und einer bereitgestellten tabellarischen SSAS-Modelldatenbank.
Umgebungsvorbereitung
Die Abfrage einer tabellarischen SSAS-Modelldatenbank mit MDX erfolgt in SQL Server Management Studio im MDX-Abfragefenster.
Multidimensional Expressions (MDX) Übersicht
MDX ist eine Ausdruckssprache, die mehrdimensionale Daten in OLAP-Cubes abfragen und analysieren kann (wie z. B. SSAS Multidimensional Model Databases). Obwohl es in erster Linie für die Abfrage einer mehrdimensionalen Modelldatenbank ausgelegt ist, kann es auch eine tabellarische Modelldatenbank abfragen. Andererseits können DAX-Funktionen keine mehrdimensionalen Modelldatenbanken abfragen, da DAX-Abfrageausdrücke spezifisch für tabellarische Modelldatenbanken sind.
Strukturell enthält MDX die von XMLA angegebene Syntax. Da es T-SQL ähnelt, sind einige DDL-Anweisungen vorhanden, mit denen mehrdimensionale Datenkonstruktionen verwaltet und organisiert werden können. Dies gilt nur für mehrdimensionale SSAS-Modelldatenbanken.
In Bezug auf die Komplexität sind die Haupttypen von MDX-Ausdrücken: konstant (numerisch, String usw.), skalar und objektorientiert. Diese Typen werden zu komplexen Ausdrücken kombiniert, die Anweisungen und MDX-Funktionen entsprechen.
Bei der Abfrage einer tabellarischen SSAS-Modelldatenbank werden Ausdrücke in diesem Artikel als einfache Würfelausdrücke vom Typ skalar / Konstant kombiniert. Diese Ausdrücke rufen nur Daten aus einem tabellarischen Würfel ab, zeigen die Ergebnisse in Spalten an, ordnen Daten an und bereiten sie für die weitere Analyse vor.
Abfragen der tabellarischen SSAS-Modelldatenbank mit MDX
Am Anfang der meisten MDX-Abfragen steht die SELECT-Anweisung, gefolgt von einer FROM-Anweisung. Es ist sehr ähnlich zu T-SQL (im Gegensatz zur Evaluate-Anweisung in DAX):
1
2
3
|
wählen Sie aus
|
Diese Abfrage ist die einfachste und gibt den Wert 1 („true“) zurück. Dies bedeutet, dass eine vollständige tabellarische Datenbank vorhanden ist.
Auswählen der Tabelle Produktname aus der Produkttabelle, SELECT-Anweisung in T-SQL sieht folgendermaßen aus:
1
2
3
|
WÄHLEN SIE dbo.ProduktName VOM Produkt
|
Die entsprechende in MDX geschriebene Anweisung wäre logisch:
1
2
3
4
5
|
wählen Sie
{..}
von
|
Beachten Sie die Klammern {} , die die Operatoren wie die Klammern in DAX sind. Sie schließen die Anweisungen ein und ermöglichen es, das Schreiben von Abfragen komplexer zu gestalten. MDX-Abfragen sind case-insensitive wie DAX-Abfragen.
Diese Abfrage würde die Spalte Produktname und die Produkttabelle aus einem einzelnen tabellarischen Cube abrufen, aber anstatt die einzelne Spalte anzuzeigen, wird ein Ausführungsfehler ausgelöst:
Der Hauptgrund liegt im Typ des Datenbankmodells und der Syntax: Mehrdimensionale und tabellarische Modelldatenbanken haben beide Dimensionen als entscheidendes Konzept, aber MDX erkennt in seiner Syntax Spalten, Zeilen und andere Elemente (spezifisch für mehrdimensionale Datenbanken) als Achsen in Abfragen – stellen Sie sie sich als x-, y-, z-Achsen in einem 3D-Würfelmodell vor.
Beim Abfragen einer tabellarischen SSAS-Modelldatenbank muss MDX mindestens zwei Achsen darin erkennen: Spalten und Zeilen, um Daten ordnungsgemäß anzuzeigen:
1
2
3
4
5
6
|
wählen Sie
{..} auf Spalten,
{..} auf Zeilen
von
|
Jetzt setzen wir die Achsen in der Abfrage und das Ergebnis zeigt:
Wie zu sehen ist, werden alle Werte der Spalte Produktname in Spalten im Ergebnis angezeigt, und Zeilen zeigen die entsprechenden Jahre (in der Spalte Geschäftsjahr) und die Anzahl der Artikel (in diesem Fall Fahrradteile) an. Daher reichen beim Abfragen einer tabellarischen SSAS-Modelldatenbank anstelle von drei Achsen in der MDX-Abfrage nur zwei Achsen aus, um Daten abzurufen.
In diesem Beispiel wird dieselbe Tabelle in beiden Achsen abgefragt:
1
2
3
4
5
6
|
wählen Sie
{..} auf Spalten,
{..} auf Zeilen
von
|
Das Ergebnis der Abfrage zeigt:
Der Wert „1“ bedeutet in diesem Fall „true“ und der Wert „(null)“ bedeutet, dass keine zugehörigen Daten in der Standardkostenspalte vorhanden sind.
-
Anzeigen eines bestimmten Werts (Elements) aus der angegebenen Spalte und einer NICHT LEEREN Funktion
Mit MDX ist es möglich, den einzelnen Wert aus der Spalte in der tabellarischen Modelldatenbank anzuzeigen:
12345wählen Sie{{..}.Item(53)} auf 0vonIn diesem Beispiel zeigt das Ergebnis das 53. Element (zufällig ausgewählt) aus der Spalte Modellname. Beachten Sie die definierte Achse „auf 0“ – anstatt „Spalten“ (wir werden in weiteren Beispielen sehen) oder „Zeilen“ zu definieren, wird dieser einzelne Wert am Anfang der tabellarischen Ansicht des Abfrageergebnisses platziert.
Unter Einbeziehung der NICHT LEEREN Funktion wird ein einzelner berechneter Wert aus der jeweiligen Kennzahl (Internet-Gesamtumsatz) angezeigt:
123456selectnicht leer{.} auf SpaltenVON -
Tupelfunktion
Tupel ist ein angegebener Datensatz, eine Kombination aus zwei oder mehr Dimensionselementen (in diesem Fall zwei Werte aus der Spalte Year).
12345wählen Sie {.. : ..} in Zeilen,{.} auf SpaltenvonBeachten Sie die angegebenen Werte aus der Spalte Jahr im Bereich der Jahre und die entsprechenden Werte aus der Gesamtspanne im Abfrageergebnis.
-
KINDER- und Elementausdruck
Dieser Ausdruck zeigt den Datensatz an, der sich auf bestimmte Spalten oder Kennzahlen bezieht. Normalerweise werden diese Werte als untergeordnete Elemente oder Mitglieder dargestellt und beziehen sich auf die Hierarchie. Sie sind im Abfrageergebnis hierarchisch geordnet.
12345auswählen . AUF SPALTEN..KINDER IN DEN REIHENABIn diesem Fall basiert das Gesamtfrachtmaß auf der Berechnung mit der Frachtspalte und kann daher kombiniert werden.
Beachten Sie, dass geschweifte Klammern in der Abfrage nicht vorhanden sind, die Abfrage jedoch ohne sie weiterhin gültig ist.
Verwenden Sie diese Abfrage, um nur die Werte aus einer gewünschten Spalte mit dem UNTERGEORDNETEN Ausdruck in Übereinstimmung mit einer nicht verwandten Spalte anzuzeigen:
123456wählen Sie{..} auf 0,{..kinder} auf 1ABHinweis: In diesem Ausdruck steht on 0 für Spalten und on 1 für Zeilenachse.
Hier ist ein weiteres Beispiel mit dem Elementausdruck
12345Auswählen . auf Spalten..mitglieder in den ZeilenVon -
WHERE-Klausel
Das Hinzufügen der WHERE-Klausel ist die einzige Möglichkeit, bestimmte Daten aus einer Tabelle zu filtern, und ähnelt der WHERE-Klausel in T-SQL:
1234567wählen Sie{..} auf Spalten,{..} in den Zeilenvonwobei {..}Der Wert aus der Spalte Länderregionsname „Frankreich“ bezieht sich auf die Spalte Stadt in der Geografietabelle, und die Abfrage ist in result only cities from France enthalten.
Die WHERE-Anweisung ist eigentlich die Slicer-Achse, die sowohl in mehrdimensionalen als auch in tabellarischen Modelldatenbanken eine zusätzliche Dimension hinzufügt.
-
CASE expression
Dieser Ausdruck ist ein Vergleich basierend auf der logischen Reihenfolge der Elemente, der ein Abfrageergebnis zurückgibt.
Erstellen Sie in diesem Beispiel eine neue Kennzahl mit dem Namen Umsatzbetragsübersicht, die einem angegebenen Wertebereich aus der Kennzahl Gesamtumsatz entspricht:
123456789101112131415mit Mitglied . alsFall .wenn 69712.49 dann ‚Great‘wenn 1045.6 dann ‚Bad‘else ‚(normal)‘endselect{., .} auf Spalten,{..mitglieder} in Zeilenvon
Ich hoffe, Ihnen hat dieser Artikel gefallen und Sie haben gerne eine tabellarische SSAS-Modelldatenbank mit MDX abgefragt!
- Verwenden von Cube- und Subcube-Ausdrücken
- MDX-Sprachreferenz (MDX)
- Grundlagen der MDX-Abfrage (Analysis Services)
- Autor
- Neueste Beiträge
Daniel arbeitet derzeit für ApexSQL LLC als Software Sales Engineer, wo er sich auf die BI-Umgebung spezialisiert hat.
- So überwachen Sie die SQL Server tempdb-Datenbank – 6. Juli 2017
- So überwachen Sie die Gesamtgröße der SQL Server-Indizes – 12. Juni 2017
- So legen Sie verschlüsselte SQL Server-Verbindungen fest und verwenden Sie sie – Mai 8, 2017