Freigeben über


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

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 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] )
Wichtiger HinweisWichtig

Normalerweise werden Mengen im wesentlich größeren Cubekontext ausgewertet. Das EXISTING-Schlüsselwort (MDX) erzwingt jedoch die Auswertung von Mengen im aktuellen Kontext.