Grundlegende MDX-Abfrage (MDX)
Die grundlegende 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:
Die Anzahl der Achsen oder Mengen von Hierarchien. Sie können maximal 128 Achsen in einer MDX-Abfrage angeben.
Die Elemente aus jeder Dimension, die auf jeder Achse der MDX-Abfrage eingeschlossen werden sollen.
Der Name des Cubes, der den Kontext der MDX-Abfrage festlegt.
Die Elemente aus einer Slicer-Achse, bei denen ein Slice auf den Daten der Elemente aus den Abfrage-Achsen ausgeführt wird. Weitere Informationen zu Slicer- und Abfrage-Achsen finden Sie unter Einschränken der Abfrage mit Abfrage- und Slicerachsen (MDX).
Die SELECT-Anweisung von MDX verwendet die folgenden Klauseln zum Identifizieren der Abfrage-Achsen, des Cubes, der den Kontext für die Abfrage festlegt, und der Slicer-Achse:
Eine SELECT-Klausel, die die Abfrage-Achsen einer SELECT-Anweisung von MDX bestimmt. Weitere Informationen zur Erstellung von Abfrage-Achsen in einer SELECT-Klausel finden Sie unter Angeben des Inhalts einer Abfrageachse (MDX).
Eine FROM-Klausel, die bestimmt, welche mehrdimensionale Datenquelle verwendet werden soll, wenn Daten zum Auffüllen des Resultsets der SELECT-Anweisung von MDX extrahiert werden. Weitere Informationen zur FROM-Klausel finden Sie unter SELECT-Anweisung (MDX).
Eine WHERE-Klausel, die optional bestimmt, welche Dimension oder welches Element als Slicer-Achse verwendet wird. Dies schränkt das Extrahieren von Daten auf eine bestimmte Dimension oder ein bestimmtes Element ein. Weitere Informationen zur Erstellung einer Slicer-Achse 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 SELECT-Anweisung von MDX unterstützt optionale Syntax, wie z. B. das WITH-Schlüsselwort und die Berechnung von 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 SELECT-Anweisung von MDX 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 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 maximal 128 Abfrage-Achsen in der SELECT-Anweisung enthalten, doch nur die ersten 5 Achsen verfügen über Aliasnamen. Sie können auf eine Achse über ihre Ordnungsposition in einer MDX-Abfrage verweisen oder ggf. über den Alias der Achse. 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. Wird in der WHERE-Klausel keine Hierarchie erwähnt, geht MicrosoftSQL ServerAnalysis Services davon aus, dass jede nicht explizit in eine Abfrage-Achse eingeschlossene Hierarchie implizit in die Slicer-Achse eingeschlossen wird, und die Hierarchie wird nach ihren Standardelementen gefiltert.Die WHERE-Klausel kann den Filtervorgang für die angegebene Hierarchie verändern und ermöglicht so eine genaue Steuerung der eingeschlossenen Daten.
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] )
Wichtig |
---|
Normalerweise werden Mengen im wesentlich größeren Cubekontext ausgewertet. Das EXISTING-Schlüsselwort (MDX) erzwingt jedoch die Auswertung von Mengen im aktuellen Kontext. |