Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Abfrageachsen geben die Kanten eines Cellsets an, die von einer Multidimensional Expressions (MDX) SELECT-Anweisung zurückgegeben werden. Wenn Sie die Ränder eines Zellsets angeben, können Sie die zurückgegebenen Daten einschränken, die für den Client sichtbar sind.
Um Abfrageachsen anzugeben, verwenden Sie das <SELECT query axis clause>, um einem bestimmten Abfrageachse einen Satz zuzuweisen. Jeder <SELECT query axis clause> Wert definiert eine Abfrageachse. Die Anzahl der Achsen im Dataset entspricht der Anzahl der <SELECT query axis clause> Werte in der SELECT-Anweisung.
Syntax der Abfrageachse
Die folgende Schreibweise zeigt die Syntax für <SELECT query axis clause>:
<SELECT query axis clause> ::=
[ NON EMPTY ] Set_Expression [ <SELECT dimension property list clause> ] [<HAVING clause>]
ON {
Integer_Expression |
AXIS( Integer_Expression ) |
{COLUMNS | ROWS | PAGES | SECTIONS | CHAPTERS}
}
Jede Abfrageachse hat eine Zahl: Null (0) für die x-Achse, 1 für die y-Achse, 2 für die Z-Achse usw. In der Syntax für den <SELECT query axis clause>Gibt der Integer_Expression Wert die Achsennummer an. Eine MDX-Abfrage kann bis zu 128 angegebene Achsen unterstützen, aber nur wenige MDX-Abfragen verwenden mehr als 5 Achsen. Für die ersten fünf Achsen können stattdessen die Aliase COLUMNS, ROWS, PAGES, SECTIONS und CHAPTERS verwendet werden.
Eine MDX-Abfrage kann abfrageachsen nicht überspringen. Das heißt, eine Abfrage, die eine oder mehrere Abfrageachsen enthält, darf keine unternummerierten oder Zwischenachsen ausschließen. Eine Abfrage kann z. B. keine ZEILENachse ohne SPALTENachse haben, oder SPALTEN- und SEITENachsen ohne ZEILENachse aufweisen.
Sie können jedoch eine SELECT-Klausel ohne Achsen angeben (d. a. eine leere SELECT-Klausel). In diesem Fall sind alle Dimensionen Slicer-Dimensionen, und die MDX-Abfrage wählt eine Zelle aus.
In der zuvor gezeigten Abfrageachsensyntax gibt jeder Set_Expression Wert den Satz an, der den Inhalt der Abfrageachse definiert. Weitere Informationen zu Sets finden Sie unter Arbeiten mit Mitgliedern, Tupeln und Sets (MDX).
Beispiele
Die folgende einfache SELECT-Anweisung gibt das Maß "Internet Sales Amount" auf der Spaltenachse zurück und verwendet die MDX MEMBERS-Funktion, um alle Mitglieder der Kalenderhierarchie in der Dimension "Datum" auf der Zeilenachse zurückzugeben.
SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
{[Date].[Calendar].MEMBERS} ON ROWS
FROM [Adventure Works]
Die beiden folgenden Abfragen geben genau die gleichen Ergebnisse zurück, veranschaulichen jedoch die Verwendung von Achsenzahlen anstelle von Aliasen:
SELECT {[Measures].[Internet Sales Amount]} ON 0,
{[Date].[Calendar].MEMBERS} ON 1
FROM [Adventure Works]
SELECT {[Measures].[Internet Sales Amount]} ON AXIS(0),
{[Date].[Calendar].MEMBERS} ON AXIS(1)
FROM [Adventure Works]
Das SCHLÜSSELwort NON EMPTY, das vor der Setdefinition verwendet wird, ist eine einfache Möglichkeit, alle leeren Tupel von einer Achse zu entfernen. In den Beispielen, die wir bisher gesehen haben, gibt es ab August 2004 keine Daten im Cube. Wenn Sie alle Zeilen aus dem Zellsatz entfernen möchten, der keine Daten in einer Spalte enthält, fügen Sie einfach "NON EMPTY" hinzu, bevor Sie die Definition der Zeilenachse wie folgt festlegen:
SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
NON EMPTY
{[Date].[Calendar].MEMBERS} ON ROWS
FROM [Adventure Works]
NON EMPTY kann auf allen Achsen in einer Abfrage verwendet werden. Vergleichen Sie die Ergebnisse der folgenden beiden Abfragen: Die erste Abfrage verwendet "NICHT LEER" nicht, während die zweite es auf beiden Achsen verwendet.
SELECT {[Measures].[Internet Sales Amount]}
* [Promotion].[Promotion].[Promotion].MEMBERS
ON COLUMNS,
{[Date].[Calendar].[Calendar Year].MEMBERS} ON ROWS
FROM [Adventure Works]
WHERE([Product].[Subcategory].&[19])
SELECT NON EMPTY {[Measures].[Internet Sales Amount]}
* [Promotion].[Promotion].[Promotion].MEMBERS
ON COLUMNS,
NON EMPTY
{[Date].[Calendar].[Calendar Year].MEMBERS} ON ROWS
FROM [Adventure Works]
WHERE([Product].[Subcategory].&[19])
Die HAVING-Klausel kann verwendet werden, um den Inhalt einer Achse basierend auf einem bestimmten Kriterium zu filtern; es ist weniger flexibel als andere Methoden, die dieselben Ergebnisse erzielen können, z. B. die FILTER-Funktion, aber es ist einfacher zu verwenden. Hier ist ein Beispiel, das nur die Datumsangaben zurückgibt, in denen der Internetverkaufsbetrag größer als 15.000 $ ist:
SELECT {[Measures].[Internet Sales Amount]}
ON COLUMNS,
NON EMPTY
{[Date].[Calendar].[Date].MEMBERS}
HAVING [Measures].[Internet Sales Amount]>15000
ON ROWS
FROM [Adventure Works]