SQLShack

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.

  1. 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:

    1
    2
    3
    4
    5

    wählen Sie
    {{..}.Item(53)} auf 0
    von

    In 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:

    1
    2
    3
    4
    5
    6

    select
    nicht leer
    {.} auf Spalten
    VON

  2. Tupelfunktion

    Tupel ist ein angegebener Datensatz, eine Kombination aus zwei oder mehr Dimensionselementen (in diesem Fall zwei Werte aus der Spalte Year).

    1
    2
    3
    4
    5

    wählen Sie {.. : ..} in Zeilen,
    {.} auf Spalten
    von

    Beachten Sie die angegebenen Werte aus der Spalte Jahr im Bereich der Jahre und die entsprechenden Werte aus der Gesamtspanne im Abfrageergebnis.

  3. 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.

    1
    2
    3
    4
    5

    auswählen . AUF SPALTEN
    ..KINDER IN DEN REIHEN
    AB

    In 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:

    1
    2
    3
    4
    5
    6

    wählen Sie
    {..} auf 0,
    {..kinder} auf 1
    AB

    Hinweis: In diesem Ausdruck steht on 0 für Spalten und on 1 für Zeilenachse.

    Hier ist ein weiteres Beispiel mit dem Elementausdruck

    1
    2
    3
    4
    5

    Auswählen . auf Spalten
    ..mitglieder in den Zeilen
    Von

  4. 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:

    1
    2
    3
    4
    5
    6
    7

    wählen Sie
    {..} auf Spalten,
    {..} in den Zeilen
    von
    wobei {..}

    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.

  5. 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:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    mit Mitglied . als
    Fall .
    wenn 69712.49 dann ‚Great‘
    wenn 1045.6 dann ‚Bad‘
    else ‚(normal)‘
    end
    select
    {.
    , .
    } auf Spalten
    ,{..mitglieder} in Zeilen
    von

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 Tikvicki
Daniel ist ein Bibliothekar, der in einen Strudel der IT-Welt lief, wo er schwebt und lernt ständig. Er mag Bücher, alle künstlerischen Ausdrucksformen (selbst Musiker / Dichter) und ist Underground-Verleger (Fanzines und experimentelle Musik). Zu den Sehenswürdigkeiten gehören auch Theologie, Mythologie und Pseudowissenschaften.
Daniel arbeitet derzeit für ApexSQL LLC als Software Sales Engineer, wo er sich auf die BI-Umgebung spezialisiert hat.

 Daniel Tikvicki
Neueste Beiträge von Daniel Tikvicki (alle anzeigen)
  • 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

Write a Comment

Deine E-Mail-Adresse wird nicht veröffentlicht.