MDX-Abfrage – grundlegende Abfrage

Gilt für: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Die grundlegende MDX-Abfrage (Multidimensional Expressions) ist die SELECT-Anweisung – die am häufigsten verwendete Abfrage in MDX. Wenn Sie wissen, wie in einer SELECT-Anweisung von MDX ein Resultset angegeben wird, wie die Syntax der SELECT-Anweisung lautet und wie eine einfache Abfrage mit der SELECT-Anweisung erstellt wird, verfügen Sie über das Basiswissen zum Abfragen mehrdimensionaler Daten mit MDX.

Angeben eines Resultsets

Die SELECT-Anweisung in MDX gibt ein Resultset an, das aus einer Teilmenge mehrdimensionaler Daten besteht, die aus einem Cube zurückgegeben wurde. Zum Angeben eines Resultsets muss die MDX-Abfrage die folgenden Informationen enthalten:

  • Die Anzahl der Achsen, die das Resultset enthalten soll. Sie können maximal 128 Achsen in einer MDX-Abfrage angeben.

  • Die Menge von Elementen oder Tupeln, die auf jeder Achse der MDX-Abfrage enthalten sein soll.

  • Der Name des Cubes, der den Kontext der MDX-Abfrage festlegt.

  • Die Menge von Elementen oder Tupeln, die auf der Slicer-Achse enthalten sein soll. Weitere Informationen zu Slicer und Abfrageachsen finden Sie unter Einschränken der Abfrage mit Abfrage- und Datenschnittachsen (MDX).

Die SELECT-Anweisung von MDX verwendet die folgenden Klauseln zum Identifizieren der Abfrage-Achsen, des abgefragten Cubes und der Slicer-Achse:

  • Eine SELECT-Klausel, die die Abfrage-Achsen einer SELECT-Anweisung von MDX bestimmt. Weitere Informationen zum Erstellen von Abfrageachsen in einer SELECT-Klausel finden Sie unter Angeben des Inhalts einer Abfrageachse (MDX).

  • Eine FROM-Klausel, mit der festgelegt wird, welcher Cube abgefragt wird. Weitere Informationen zur FROM-Klausel finden Sie unter SELECT-Anweisung (MDX).

  • Eine optionale WHERE-Klausel, mit der festgelegt wird, welche Elemente oder Tupeln auf der Slicer-Achse verwendet werden sollen, um die zurückgegebenen Daten einzuschränken. Weitere Informationen zum Erstellen einer Slicerachse in einer WHERE-Klausel finden Sie unter Angeben des Inhalts einer Datenschnittachse (MDX).

Hinweis

Ausführlichere Informationen zu den verschiedenen Klauseln der SELECT-Anweisung finden Sie unter SELECT-Anweisung (MDX).

Syntax der SELECT-Anweisung

Die folgende Syntax zeigt eine grundlegende SELECT-Anweisung, in der SELECT-, FROM- und WHERE-Klauseln verwendet werden:

[ WITH <SELECT WITH clause> [ , <SELECT WITH clause> ... ] ]   
SELECT [ * | ( <SELECT query axis clause>   
    [ , <SELECT query axis clause> ... ] ) ]  
FROM <SELECT subcube clause>   
[ <SELECT slicer axis clause> ]  
[ <SELECT cell property list clause> ]  

Die SELECT-Anweisung von MDX unterstützt optionale Syntax, wie z. B. das WITH-Schlüsselwort und die Erstellung von berechneten Elementen mithilfe von MDX-Funktionen, um die Elemente in eine Achse oder Slicer-Achse einzuschließen. Außerdem bietet sie die Möglichkeit, die Werte bestimmter Zelleneigenschaften im Rahmen der Abfrage zurückzugeben. Weitere Informationen zur MDX SELECT-Anweisung finden Sie unter SELECT-Anweisung (MDX).

Vergleich der Syntax der SELECT-Anweisung von MDX mit SQL

Das Syntaxformat der SELECT-Anweisung von MDX gleicht dem Format der SQL-Syntax. Es gibt jedoch einige deutliche Unterschiede:

  • Die MDX-Syntax unterscheidet Mengen durch umgebende Tupel oder Member mit geschweiften Klammern (die Zeichen { und }). Weitere Informationen zu Member-, Tupel- und Satzsyntax finden Sie unter Arbeiten mit Membern, Tupeln und Sätzen (MDX).

  • MDX-Abfragen können 0, 1, 2 oder bis zu 128 Abfrage-Achsen in der SELECT-Anweisung enthalten. Jede Achse verhält sich auf exakt die gleiche Weise, im Gegensatz zu SQL, wo es deutliche Unterschiede zwischen den Verhaltensweisen der Zeilen und Spalten einer Abfrage gibt.

  • Wie in einer SQL-Abfrage benennt die FROM-Klausel die Quelle der Daten für die MDX-Abfrage. Die MDX-FROM-Klausel ist jedoch auf einen einzelnen Cube beschränkt. Informationen aus anderen Cubes können Wert für Wert mithilfe der LookupCube-Funktion abgerufen werden.

  • Die WHERE-Klausel beschreibt die Slicer-Achse in einer MDX-Abfrage. Sie verhält sich in etwa wie eine unsichtbare weitere Achse in der Abfrage, die die Werte, die in den Zellen im Resultset angezeigt werden, in Slices aufteilt. Im Gegensatz zur SQL-Klausel WHERE nimmt sie keinen direkten Einfluss darauf, was auf der ROWS-Achse der Abfrage angezeigt wird. Die Funktionalität der SQL-Klausel WHERE steht durch andere MDX-Funktionen zur Verfügung, wie z. B. die FILTER-Funktion.

Beispiel für die SELECT-Anweisung

Das folgende Beispiel zeigt eine grundlegende MDX-Abfrage mit der SELECT-Anweisung. Die Abfrage gibt ein Resultset zurück, das die Umsatz- und Steuerbeträge für 2002 und 2003 in den südwestlichen Vertriebsregionen enthält.

SELECT  
    { [Measures].[Sales Amount],   
        [Measures].[Tax Amount] } ON COLUMNS,  
    { [Date].[Fiscal].[Fiscal Year].&[2002],   
        [Date].[Fiscal].[Fiscal Year].&[2003] } ON ROWS  
FROM [Adventure Works]  
WHERE ( [Sales Territory].[Southwest] )  

In diesem Beispiel werden durch die Abfrage die folgenden Resultset-Informationen definiert:

  • Die SELECT-Klausel legt die Abfrage-Achsen auf die Elemente Sales Amount (Umsatz) und Tax Amount (Steuern) der Measures-Dimension sowie auf die Elemente 2002 und 2003 der Date-Dimension fest.

  • Die FROM-Klausel zeigt an, dass die Datenquelle im Adventure Works-Cube besteht.

  • Die WHERE-Klausel definiert das Southwest-Element der Sales Territory-Dimension zur Slicer-Achse.

Beachten Sie, dass das Abfragebeispiel auch die Achsenaliase COLUMNS und ROWS verwendet. Ebenso können die Ordnungspositionen für diese Achsen verwendet werden. Das folgende Beispiel zeigt, wie die MDX-Abfrage mithilfe der Ordnungsposition jeder Achse geschrieben werden könnte:

SELECT  
    { [Measures].[Sales Amount],   
        [Measures].[Tax Amount] } ON 0,  
    { [Date].[Fiscal].[Fiscal Year].&[2002],   
        [Date].[Fiscal].[Fiscal Year].&[2003] } ON 1  
FROM [Adventure Works]  
WHERE ( [Sales Territory].[Southwest] )  

Ausführlichere Beispiele finden Sie unter Angeben des Inhalts einer Abfrageachse (MDX) und Angeben des Inhalts einer Slicerachse (MDX).

Weitere Informationen

Schlüsselkonzepte in MDX (Analysis Services)
SELECT-Anweisung (MDX)