Operatoren (MDX-Syntax)

In MDX (Multidimensional Expressions) können Sie mit Operatoren die folgenden Aktionen ausführen:

  • Ändern von Daten, temporär oder dauerhaft.

  • Suchen nach Werten oder Objekten, die mit einer angegebenen Bedingung übereinstimmen.

  • Implementieren einer Entscheidung zwischen Werten oder Ausdrücken.

  • Testen hinsichtlich bestimmter Bedingungen vor dem Beginn einer Transaktion oder dem Ausführen eines Commits für eine Transaktion bzw. vor dem Ausführen bestimmter Anweisungen.

MDX unterstützt die Operatoren, die in der folgenden Tabelle aufgelistet sind:

Art der auszuführenden Operation

Operator

Zuweisen eines Werts zu einer Variablen oder Zuordnen einer Resultsetspalte zu einem Alias.

Zuweisungsoperatoren

Addition, Subtraktion, Multiplikation, Division.

Arithmetische Operatoren

Testen, ob eine Bedingung wahr ist (z. B. AND, OR, NOT oder XOR).

Bitweise Operatoren

Vergleichen eines Werts mit einem anderen Wert oder einem Ausdruck.

Vergleichsoperatoren

Dauerhaftes oder temporäres Kombinieren von zwei Zeichenfolgen zu einer Zeichenfolge.

Operator für Verkettungen

Dauerhaftes oder temporäres Kombinieren von zwei Mengenausdrücken zu einer Menge.

Mengenoperatoren

Ausführen einer Operation für einen Operanden.

Unäre Operatoren

HinweisHinweis

In Abfragen kann jeder Benutzer Operationen ausführen, sofern die Daten in dem Cube, der mit einem Operator verwendet werden soll, für diesen Benutzer sichtbar sind. Sie benötigen allerdings die entsprechenden Berechtigungen, um die Daten erfolgreich ändern zu können.

Wenn mehrere Operatoren verwendet werden, spielt die Reihenfolge eine Rolle, in der MDX die Operatoren auswertet. Darüber hinaus kann es für das Verwenden von Operatoren erforderlich sein, dass ein Datentyp in einen anderen Datentyp konvertiert wird, bevor die Operatoren ausgewertet werden können.

Auswerten von komplexen Ausdrücken

Sie können einen Ausdruck erstellen, indem Sie Operatoren dazu verwenden, mehrere kleinere Ausdrücke zu kombinieren. In solchen komplexen Ausdrücken wertet MDX die Operatoren in Abhängigkeit von der Definition der Operatorenrangfolge aus, die für MicrosoftSQL ServerAnalysis Services gilt. MDX führt Operatoren mit einer höheren Position in der Rangfolge vor Operatoren mit einer niedrigeren Position in der Rangfolge aus.

Grundlegendes zur Rangfolge von Operatoren

Die folgende Liste zeigt die Operatorenrangfolge (vom höchsten bis zum niedrigsten Operator). Operatoren, die in derselben Zeile stehen, sind in der Rangfolge gleichwertig und werden von links nach rechts ausgewertet, es sei denn, durch Klammern wird eine andere Reihenfolge erzwungen:

  • IS

  • AS

  • DISTINCT

  • :

  • ^

  • /, *

  • +, -

  • EXISTING

  • <>, >=, =, <=, >, <

  • NOT

  • AND

  • XOR

  • OR

Weitere Informationen zu Operatoren in MDX finden Sie unter MDX-Operatorreferenz (MDX).

Bestimmen von Ergebnissen

Wenn Sie einfache Ausdrücke zu einem komplexen Ausdruck kombinieren, wird der Datentyp des sich ergebenden Werts bestimmt, indem die Regeln für die Operatoren mit den Regeln für die Rangfolge der Datentypen kombiniert werden.

Wenn das Ergebnis ein Zeichen- oder ein Unicode-Wert ist, wird die Sortierung des Ergebnisses bestimmt, indem die Regeln für die Operatoren mit den Regeln für die Sortierungsrangfolge kombiniert werden. Weitere Informationen zu Sortierungen finden Sie unter Sprachen und Sortierungen (Analysis Services - Mehrdimensionale Daten).

Es gibt auch Regeln, die die Genauigkeit, die Dezimalstellen und die Länge des Ergebnisses basierend auf der Genauigkeit, den Dezimalstellen und der Länge der einfachen Ausdrücke bestimmen.

Konvertieren von Datentypen

MDX konvertiert den Datentyp eines Objekts implizit in einen anderen Datentyp, wenn das Objekt in einem Ausdruck verwendet wird, der einen anderen Typ erfordert. In der folgenden Tabelle werden die Konvertierungsregeln für jedes Objekt aufgelistet.

Ursprünglicher Typ

Benötigter Typ

Konvertierung

Ebene

Menge

<Ebene>.members

Hierarchie

Element

<Hierarchie>.defaultmember

Element

Tupel

(<Element>)

Tupel

Element

<Tupel>.item(0)

Tupel

Skalarer Typ

<Tupel>.value