Freigeben über


Erstellen von benannten Mengen in MDX (MDX)

Ein Mengenausdruck kann aus einer langen und komplexen Deklaration bestehen, die schwer zu verstehen ist. Wenn ein Mengenausdruck häufig verwendet wird, kann das wiederholte Definieren der Menge lästig werden. Um das Verwenden längerer, komplexer oder häufig verwendeter Ausdrücke zu vereinfachen, ermöglicht MDX (Multidimensional Expressions) das Definieren eines solchen Ausdrucks als benannte Menge.

Grundsätzlich handelt es sich bei einer benannten Menge um einen Mengenausdruck, dem ein Alias zugewiesen wurde. Eine benannte Menge kann alle Elemente oder Funktionen enthalten, die normalerweise in eine Menge aufgenommen werden können. Da der Alias der benannten Menge von MDX als Mengenausdruck behandelt wird, können Sie den Alias überall verwenden, wo ein Mengenausdruck zulässig ist.

Sie können eine benannte Menge in einem der folgenden Kontexte definieren:

  • Im Bereich einer Abfrage Mit dem WITH-Schlüsselwort können Sie eine benannte Menge erstellen, die als Teil einer MDX-Abfrage definiert ist und deren Bereich daher auf die Abfrage beschränkt ist. Anschließend können Sie die benannte Menge in einer SELECT-Anweisung von MDX verwenden. Bei dieser Vorgehensweise kann die mit dem WITH-Schlüsselwort erstellte benannte Menge geändert werden, ohne dass die SELECT-Anweisung davon beeinflusst wird.

    Weitere Informationen zum Erstellen benannter Mengen mithilfe des WITH-Schlüsselwortes finden Sie unter Erstellen benannter Mengen im Bereich einer Abfrage (MDX).

  • **Im Bereich einer Sitzung   **Mit der CREATE SET-Anweisung können Sie eine benannte Menge erstellen, deren Bereich über den Kontext der Abfrage hinausgeht, d. h., deren Bereich die Dauer der MDX-Sitzung ist. Eine mit der CREATE SET-Anweisung definierte benannte Menge ist für alle MDX-Abfragen in dieser Sitzung verfügbar. Die CREATE SET-Anweisung ist z. B. in einer Clientanwendung sinnvoll, die die gleiche Menge in unterschiedlichen Abfragen wiederverwendet.

    Weitere Informationen zum Erstellen benannter Mengen in einer Sitzung mithilfe der CREATE SET-Anweisung finden Sie unter Erstellen benannter Mengen im Bereich einer Sitzung (MDX).

  • **Globale Bereichsdefinition   **mit der CREATE SET-Anweisung innerhalb des standardmäßigen MDX-Skripts können Sie eine benannte Menge erstellen, deren Bereich über den Kontext der Sitzung des Benutzers hinausgeht, d. h., deren Bereich der Dauer der ausgeführten Instanz entspricht. Weitere Informationen finden Sie unter Grundlegendes MDX-Skript (MDX). Eine im MDX-Standardskript mit CREATE SET definierte benannte Menge steht allen Benutzern in jeder Sitzung für alle MDX-Abfragen zur Verfügung.

Der Inhalt von benannten Mengen kann im Moment der Erstellung ausgewertet werden (statisch), oder jederzeit, wenn sie in einer Abfrage verwendet werden (dynamisch). Die CREATE SET [STATIC|DYNAMIC]-Syntax definiert, wann der Satz ausgewertet wird. Weitere Informationen finden Sie unter CREATE SET-Anweisung (MDX)CREATE SET-Anweisung (MDX). In der Standardeinstellung werden Sätze als STATIC erstellt, wenn kein Schlüsselwort in der CREATE-Anweisung angegeben wird.

Benannte Mengen mit dynamischem Verhalten können global (im Standard-MDX-Skript) oder im Bereich einer Sitzung definiert werden. Diese benannten Mengen werden jedoch nur ausgewertet, wenn eine Abfrage aufgelöst wird (Abfragebereich). Bei jedem Versuch, in einer Sitzung oder einem globalen Bereich einen dynamischen Satz auszuwerten, wird ein Fehler ausgelöst. Dies gilt auch für indirekte Verweise dynamischer Sätze. Im Folgenden finden Sie eine Liste mit Berechnungen, entweder global oder im Sitzungsbereich definiert, die auf dynamische benannte Mengen verweisen können.

  • Berechnete Elemente

  • Dynamische benannte Mengen

  • KPIs (Key Performance Indicators)

  • Rechtsseitige (Right Hand Side, RHS) Ausdrücke auf einem Zuweisungsausdruck

  • Bedingungsausdruck der Zellenberechnung

  • Wertausdruck der Zellenberechnung

Es kann in jeder MDX-Abfrage auf einen dynamischen Satz verwiesen werden, da der dynamische Satz im Abfragebereich ausgewertet wird.

VorsichtshinweisVorsicht

Da dynamische Sätze nicht während des CREATE SET-Befehls ausgewertet werden, wird ein Link zu allen Objekten (statisch oder dynamisch), von denen der dynamische Satz abhängig ist, erstellt. Daher können einzelne oder alle Objekte, auf die verwiesen wird, erst gelöscht werden, wenn der dynamische Satz gelöscht wird. Wenn z. B. eine dynamische benannte Menge in der Sitzung erstellt wird, die auf ein in der Sitzung berechnetes Element verweist, kann dieses berechnete Element nicht gelöscht werden, während die dynamische benannte Menge immer noch vorhanden ist.

Auflösung dynamischer benannter Mengen

Zu jedem beliebigen Zeitpunkt können bis zu drei Versionen eines dynamischen Satzes vorhanden sein:

  • einer globalen Bereich, der im im Cubeskript verwendet wird

  • einer im Sitzungsbereich, der in Sitzungsberechnungen verwendet wird

  • einer im Abfragebereich, der in Abfrageberechnungen verwendet wird

Welche Version in der Berechnung verwendet wird, ist gänzlich vom Kontext des Ausdrucks und der Art und Weise, wie auf die dynamische benannte Menge verwiesen wird, abhängig. Dies gilt meistens für indirekte Verweise.

Wenn Sie beispielsweise über ein in der Sitzung berechnetes Element verfügen, das eine dynamische benannte Menge der Sitzung verwendet, und Sie das berechnete Element in einer Abfrage verwenden, wird die benannte Menge im Sitzungsbereich ausgewertet, und die WHERE-Klausel der Abfrage hat keine Auswirkungen auf die benannte Menge. Wenn Sie jedoch dieselbe dynamische benannte Menge direkt in der Abfrage verwenden, wird die benannte Menge im Abfragebereich ausgewertet, und die WHERE-Klausel könnte sich auf die Ergebnisse der benannten Menge auswirken.