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).
Hinweis |
---|
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).