Freigeben über


Grundlegende MDX-Abfrage (MDX)

Die standardmäßige MDX-Abfrage (Multidimensional Expressions) besteht aus der SELECT-Anweisung. Dies ist 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:

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

  • Die Element- oder Tupelgruppe, die auf jeder Achse der MDX-Abfrage integriert werden soll.

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

  • Die Element- oder Tupelgruppe, die auf der Slicerachse integriert werden soll. Weitere Informationen zu Slicer- und Abfrageachsen finden Sie unter Einschränken der Abfrage mit Abfrage- und Slicerachsen (MDX).

Die MDX-SELECT-Anweisung verwendet die folgenden Klauseln zum Identifizieren der Abfrageachsen, des abgefragten Cubes und der Slicerachse:

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

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

  • Eine optionale WHERE-Klausel bestimmt, welche Elemente oder Tupel auf der Slicerachse zur Einschränkung der zurückgegebenen Daten zu verwenden sind. Weitere Informationen zur Erstellung einer Slicerachse in einer WHERE-Klausel finden Sie unter Angeben des Inhalts einer Slicerachse (MDX).

HinweisHinweis

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

Vergleich der Syntax der SELECT-Anweisung von MDX mit SQL

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

  • Die MDX-Syntax gibt Mengen an, indem Tupel oder Elemente in geschweifte Klammern (die Zeichen { und }) eingeschlossen werden. Weitere Informationen zur Syntax von Elementen, Tupeln und Mengen finden Sie unter Verwenden von Elementen, Tupeln und Mengen (MDX).

  • MDX-Abfragen können 0, 1, 2 oder bis zu 128 Abfrageachsen in der SELECT-Anweisung enthalten. Die Funktionsweise jeder Achse ist gleich. Im Gegensatz dazu sind bei SQL signifikante Unterschiede der Funktionsweise der Zeilen und Spalten einer Abfrage vorhanden.

  • 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 Slicerachse in einer MDX-Abfrage. Die Funktionsweise entspricht einer unsichtbaren Zusatzachse in der Abfrage, mit der die Werte in den Zellen des Resultsets geteilt werden. Im Gegensatz zur SQL-WHERE-Klausel besteht kein direkter Einfluss auf die Inhalte, die in der Zeilenachse der Abfrage angezeigt werden. Die Funktionalität der SQL-WHERE-Klausel ist auf Basis von anderen MDX-Funktionen wie der FILTER-Funktion verfügbar.

Beispiel für die SELECT-Anweisung

Das folgende Beispiel zeigt eine Standard-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] )

Weitere ausführliche Beispiele finden Sie unter Angeben des Inhalts einer Abfrageachse (MDX) und Angeben des Inhalts einer Slicerachse (MDX).