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.
gilt für:
SQL Server Analysis Services
Azure Analysis Services
Fabric/Power BI Premium
In Microsoft SQL Server SQL Server Analysis Services kann ein MDX-Skript (Multidimensional Expressions) auf den gesamten Cube oder auf bestimmte Teile des Cubes an bestimmten Punkten innerhalb der Ausführung des Skripts angewendet werden. Das MDX-Skript kann einen mehrschichtigen Ansatz für Berechnungen innerhalb eines Cubes mithilfe von Berechnungsdurchläufen verwenden.
Hinweis
Weitere Informationen dazu, wie sich Berechnungsdurchläufe auf Berechnungen auswirken können, finden Sie unter Understanding Pass Order and Solve Order (MDX).
Um den Berechnungsdurchlauf, den Bereich und den Kontext in einem MDX-Skript zu steuern, verwenden Sie speziell die CACULATE-Anweisung, die This-Funktion und die SCOPE-Anweisung.
Verwendung der CALCULATE-Anweisung
Die CALCULATE-Anweisung füllt jede Zelle im Cube mit aggregierten Daten auf. Das Standardmäßige MDX-Skript verfügt z. B. über eine einzelne CALCULATE-Anweisung am Anfang des Skripts.
Weitere Informationen zur Syntax der CALCULATE-Anweisung finden Sie unter CALCULATE-Anweisung (MDX).
Hinweis
Wenn das Skript eine SCOPE-Anweisung enthält, die eine CALCULATE-Anweisung umfasst, wertet MDX die CALCULATE-Anweisung im Kontext des durch die SCOPE-Anweisung definierten Unterwürfels aus und nicht für den gesamten Cube.
Verwenden dieser Funktion
Mit dieser Funktion können Sie den aktuellen Untercube in einem MDX-Skript abrufen. Mit dieser Funktion können Sie den Wert von Zellen innerhalb des aktuellen Teilwürfels schnell mit einem MDX-Ausdruck festlegen. Häufig verwenden Sie diese Funktion in Verbindung mit der SCOPE-Anweisung, um den Inhalt eines bestimmten Untercubes während eines bestimmten Berechnungsdurchlaufs zu ändern.
Hinweis
Wenn das Skript eine SCOPE-Anweisung enthält, die eine Diese Funktion enthält, wertet MDX die Funktion im Kontext des durch die SCOPE-Anweisung definierten Untercubes aus, nicht für den gesamten Cube.
Dieses Funktionsbeispiel
Im folgenden Beispiel für einen MDX-Skriptbefehl wird die This-Funktion verwendet, um den Wert des Measures "Amount" in der Measuregruppe "Finance" des Beispielwürfels "Adventure Works DW Multidimensional 2012" um 10 % für die Kinder des Mitglieds "Redmond" in der Dimension "Customer" zu erhöhen.
/* This SCOPE statement defines the current subcube */
SCOPE([Customer].&[Redmond].MEMBERS,
[Measures].[Amount], *);
/* This expression sets the value of the Amount measure */
THIS = [Measures].[Amount] * 1.1;
END SCOPE;
Weitere Informationen zur Syntax der Funktion "This " finden Sie unter This (MDX).For more information on the syntax of the This function, see This (MDX).
Verwenden der SCOPE-Anweisung
Die SCOPE-Anweisung definiert den aktuellen Untercube und legt den Gültigkeitsbereich anderer MDX-Ausdrücke und -Anweisungen innerhalb eines MDX-Skripts fest. MDX wertet diese anderen MDX-Ausdrücke und -Anweisungen aus, einschließlich der Funktion This und der CALCULATE-Anweisung im Kontext des Untercubes.
Eine SCOPE-Anweisung ist dynamisch, aber nicht iterativ. Die in einer SCOPE-Anweisung enthaltenen Anweisungen werden einmal ausgeführt, der Teilwürfel selbst kann jedoch dynamisch bestimmt werden. Sie haben beispielsweise einen Würfel mit dem Namen SampleCube. Für den SampleCube-Cube wenden Sie die folgende SCOPE-Anweisung an, um einen Untercube zu definieren, der den Kontext als ALLMEMBERS innerhalb der Measures-Dimension definiert:
SCOPE([Measures].ALLMEMBERS);
THIS = [Measures].ALLMEMBERS.COUNT;
END SCOPE;
Die Anweisungen und Ausdrücke in dieser SCOPE-Anweisung werden einmal ausgeführt.
Nun führt ein Geschäftsbenutzer die folgende MDX-Abfrage aus, die ein Measure mit dem Namen "ExistingMeasure" für den SampleCube-Cube enthält:
WITH MEMBER [Measures].[NewMeasure] AS '1'
SELECT
[Measures].ALLMEMBERS ON COLUMNS,
[Customer].DEFAULTMEMBER ON ROWS
FROM
[SampleCube]
Das von der Abfrage zurückgegebene Zellset ähnelt der ausgabe in der folgenden Tabelle.
| [BestehendeMaßnahme] | [NewMeasure] | |
|---|---|---|
| [Kunde]. [Alle] | 2 | 2 |
Wenn Sie sich das zurückgegebene Cellset ansehen, beachten Sie, wie der in der SCOPE-Anweisung im MDX-Skript enthaltene Wert "ExistingMeasure" dynamisch aktualisiert wird, nachdem das Measure NewMeasure definiert wurde.
Eine SCOPE-Anweisung kann in einer anderen SCOPE-Anweisung geschachtelt werden. Da die SCOPE-Anweisung nicht iterativ ist, besteht der Hauptzweck des Verschachtelns von SCOPE-Anweisungen darin, einen Teilwürfel für eine besondere Behandlung weiter zu unterteilen.
SCOPE-Erklärung (Beispiel)
Im folgenden MDX-Skriptbeispiel wird eine SCOPE-Anweisung verwendet, um den Wert der Kennzahl Amount in der Gruppe "Finance" des Beispielwürfels "Adventure Works DW Multidimensional 2012" um 10 % zu erhöhen für die untergeordneten Elemente des Elements "Redmond" in der Dimension "Customer" festzulegen. Eine andere SCOPE-Anweisung ändert jedoch den Untercube so, dass er die Kennzahl 'Amount' für die untergeordneten Elemente im Kalenderjahr 2002 enthält. Schließlich wird das Maß "Amount" nur für diesen Subcube aggregiert, wobei die aggregierten Werte für das Maß "Amount" in anderen Kalenderjahren unverändert bleiben.
/* Calculate the entire cube first. */
CALCULATE;
/* This SCOPE statement defines the current subcube */
SCOPE([Customer].&[Redmond].MEMBERS,
[Measures].[Amount], *);
/* This expression sets the value of the Amount measure */
THIS = [Measures].[Amount] * 1.1;
END SCOPE;
Weitere Informationen zur Syntax der SCOPE-Anweisung finden Sie unter SCOPE-Anweisung (MDX).For more information on the syntax of the SCOPE statement, see SCOPE Statement (MDX).
Siehe auch
MDX-Sprachreferenz (MDX)
Das Grundlegende MDX-Skript (MDX)
MDX Query Fundamentals (Analysis Services)