DAX-Operatoren
Die DAX-Sprache (Data Analysis Expression) verwendet Operatoren, um Ausdrücke zu erstellen, welche Werte vergleichen, arithmetische Berechnungen durchführen oder mit Zeichenfolgen arbeiten.
Typen von Operatoren
Es gibt vier verschiedene Typen von Operatoren für Berechnungen: arithmetische Operatoren, Vergleichsoperatoren, Textverkettungsoperatoren und logische Operatoren.
Arithmetische Operatoren
Verwenden Sie die folgenden arithmetischen Operatoren, um grundlegende mathematische Operationen wie Addition, Subtraktion oder Multiplikation, das Kombinieren von Zahlen und das Generieren numerischer Ergebnisse durchzuführen.
Arithmetischer Operator | Bedeutung | Beispiel |
---|---|---|
+ (Pluszeichen) | Addition | 3+3 |
– (Minuszeichen) | Subtraktion oder Vorzeichen | 3–1–1 |
* (Sternchen) | Multiplikation | 3*3 |
/ (Schrägstrich) | Division | 3/3 |
^ (Caretzeichen) | Potenzierung | 16^4 |
Hinweis
Das Pluszeichen kann sowohl als binärer Operator als auch als unärer Operator fungieren. Ein binärer Operator erfordert Zahlen auf beiden Seiten des Operators und führt eine Addition aus. Wenn Sie in einer DAX-Formel auf beiden Seiten des binären Operators Werte verwenden, versucht DAX, die Werte in numerische Datentypen umzuwandeln, wenn sie noch keine Zahlen sind. Im Gegensatz dazu kann der unäre Operator auf beliebige Argumenttypen angewendet werden. Das Pluszeichen wirkt sich nicht auf den Typ oder den Wert aus und wird einfach ignoriert, während der Minus-Operator einen negativen Wert erstellt, wenn er auf einen numerischen Wert angewendet wird.
Vergleichsoperatoren
Sie können zwei Werte mit den folgenden Operatoren vergleichen. Wenn zwei Werte mithilfe dieser Operatoren verglichen werden, ist das Ergebnis ein logischer Wert, entweder TRUE oder FALSE.
Vergleichsoperator | Bedeutung | Beispiel |
---|---|---|
= | Gleich | [Region] = "USA" |
== | Streng gleich | [Region] == "USA" |
> | Größer als | [Verkaufsdatum] > "Jan 2009" |
< | Kleiner als | [Verkaufsdatum] < "Jan 1 2009" |
>= | Größer als oder gleich | [Betrag] >= 20000 |
<= | Kleiner als oder gleich | [Betrag] <= 100 |
<> | Ungleich | [Region] <> "USA" |
Alle Vergleichsoperatoren außer == behandeln BLANK als identisch zur Zahl 0, leere Zeichenfolge "", DATE(1899, 12, 30) oder FALSE. Infolgedessen ist [Spalte] = 0 true, wenn der Wert von [Spalte] entweder 0 oder BLANK ist. Im Gegensatz dazu ist [Spalte] == 0 nur true, wenn der Wert von [Spalte] 0 ist.
Operator für Textverkettung
Verwenden Sie das kaufmännische Und-Zeichen (&) zum Verknüpfen bzw. Verketten von zwei oder mehr Textzeichenfolgen, um ein einzelnes Stück Text zu schaffen.
Textoperator | Bedeutung | Beispiel |
---|---|---|
& (kaufmännisches Und-Zeichen) | Verbindet bzw. verkettet zwei Werte, um einen fortlaufenden Textwert zu erhalten | [Region] & ", " & [Stadt] |
Logische Operatoren
Verwenden Sie logische Operatoren (&&) und (||), um Ausdrücke zu kombinieren und so ein einzelnes Ergebnis zu erhalten.
Textoperator | Bedeutung | Beispiele |
---|---|---|
&& (doppeltes kaufmännisches Und-Zeichen) | Erstellt eine AND-Bedingung zwischen zwei Ausdrücken, die jeweils ein boolesches Ergebnis aufweisen. Wenn beide Ausdrücke TRUE zurückgeben, gibt die Kombination der Ausdrücke ebenfalls TRUE zurück. Andernfalls gibt die Kombination FALSE zurück. | ([Region] = „Frankreich“) && ([Fahrradkäufer] = „ja“)) |
|| (doppelter senkrechter Strich) | Erstellt eine OR-Bedingung zwischen zwei logischen Ausdrücken. Wenn einer der Ausdrücke TRUE zurückgibt, ist das Ergebnis TRUE. Nur wenn beide Ausdrücke FALSE sind, ist das Ergebnis FALSE. | (([Region] = "France") || ([BikeBuyer] = "yes")) |
IN | Erstellt eine logische OR-Bedingung zwischen jeder Zeile, die mit einer Tabelle verglichen wird. Hinweis: Die Tabellenkonstruktorsyntax verwendet geschweifte Klammern. | 'Produkt'[Farbe] IN { "Rot", "Blau", "Schwarz" } |
Operatoren und Rangfolge
In einigen Fällen kann sich die Reihenfolge, in der die Berechnung ausgeführt wird, auf den Rückgabewert auswirken. Daher ist es wichtig zu verstehen, wie die Reihenfolge bestimmt wird und wie Sie die Reihenfolge ändern können, um die gewünschten Ergebnisse zu erhalten.
Berechnungsreihenfolge
Ein Ausdruck wertet die Operatoren und Werte in einer bestimmten Reihenfolge aus. Alle Ausdrücke beginnen stets mit einem Gleichheitszeichen (=). Das Gleichheitszeichen gibt an, dass die nachfolgenden Zeichen einen Ausdruck darstellen.
Auf das Gleichheitszeichen folgen die zu berechnenden Elemente (die Operanden), die durch Berechnungsoperatoren voneinander getrennt sind. Ausdrücke werden immer von links nach rechts gelesen, aber die Reihenfolge, in der die Elemente gruppiert sind, kann mithilfe von Klammern bis zu einem gewissen Grad gesteuert werden.
Operatorrangfolge
Wenn Sie mehrere Operatoren in einer einzigen Formel kombinieren, wird die Rangfolge der Operationen gemäß der folgenden Tabelle bestimmt. Wenn die Operatoren denselben Rangwert aufweisen, verläuft die Rangfolge von links nach rechts. Wenn beispielsweise ein Ausdruck sowohl einen Multiplikations- als auch einen Divisionsoperator enthält, werden diese von links nach rechts in der Reihenfolge ausgewertet, in der sie im Ausdruck angezeigt werden.
Operator | Beschreibung |
---|---|
^ | Potenzierung |
– | Vorzeichen (wie bei –1) |
* und / | Multiplikation und Division |
+ und – | Addition und Subtraktion |
& | Verbindet zwei Textzeichenfolgen (Verkettung) |
=,==,<,>,<=,>=,<>,IN | Vergleich |
NICHT | NOT (unärer Operator) |
Verwenden von Klammern zum Steuern der Berechnungsreihenfolge
Um die Auswertungsreihenfolge zu ändern, setzen Sie denjenigen Teil der Formel in Klammern, der zuerst berechnet werden muss. Die folgende Formel ergibt beispielsweise 11, da die Multiplikation vor der Addition berechnet wird. Die Formel multipliziert 2 mit 3 und fügt dann 5 zum Ergebnis hinzu.
=5+2*3
Wenn Sie hingegen die Syntax mithilfe von Klammern ändern, wird die Reihenfolge geändert. 5 und 2 werden addiert und anschließend wird das Ergebnis mit 3 multipliziert, sodass Sie 21 erhalten.
=(5+2)*3
Im folgenden Beispiel erzwingen die Klammern um den ersten Teil der Formel, dass die Berechnung den Ausdruck (3 + 0.25)
zuerst auswertet und dann das Ergebnis durch das Ergebnis des Ausdrucks (3 - 0.25)
dividiert.
=(3 + 0.25)/(3 - 0.25)
Im folgenden Beispiel wird der Exponentialoperator gemäß den Rangfolgeregeln für Operatoren zuerst angewendet. Erst danach wird der Vorzeichenoperator angewendet. Das Ergebnis für diesen Ausdruck ist -4.
=-2^2
Um sicherzustellen, dass der Vorzeichenoperator zuerst auf den numerischen Wert angewendet wird, können Sie die Operatoren mithilfe von Klammern steuern, wie das folgende Beispiel zeigt. Das Ergebnis für diesen Ausdruck ist 4.
= (-2)^2
Kompatibilität
Ähnlich wie Microsoft Excel verarbeitet und vergleicht DAX problemlos verschiedene Datentypen. Die zugrunde liegende Berechnungs-Engine basiert jedoch auf SQL Server Analysis Services und bietet zusätzliche erweiterte Funktionen eines relationalen Datenspeichers, einschließlich umfangreicherer Unterstützung für Datums-und Uhrzeittypen. In einigen Fällen ist daher das Ergebnis von Berechnungen oder das Verhalten von Funktionen möglicherweise nicht mit Excel identisch. Darüber hinaus unterstützt DAX mehr Datentypen als Excel. In diesem Abschnitt werden die wichtigsten Unterschiede beschrieben.
Umwandeln der Datentypen von Operanden
Im Allgemeinen sollten die beiden Operanden auf der linken und rechten Seite eines Operators denselben Datentyp aufweisen. Wenn die Datentypen jedoch unterschiedlich sind, konvertiert DAX sie in einen gemeinsamen Datentyp, um den Operator in einigen Fällen anzuwenden:
- Beide Operanden werden in den größtmöglichen gemeinsamen Datentyp konvertiert.
- Der Operator wird nach Möglichkeit angewendet.
Angenommen, Sie möchten zwei Zahlen kombinieren. Eine Zahl ergibt sich aus einer Formel, wie z. B. =[Price] * .20
, und das Ergebnis kann viele Dezimalstellen enthalten. Die andere Zahl ist ein Integer, der als Zeichenfolgenwert bereitgestellt wurde.
In diesem Fall konvertiert DAX beide Zahlen in reelle Zahlen in einem numerischen Format, wobei das größte numerische Format verwendet wird, das beide Arten von Zahlen speichern kann. Anschließend wendet DAX die Multiplikation an.
Je nach der Kombination der Datentypen kann die Typumwandlung nicht für Vergleichsvorgänge angewendet werden. Eine vollständige Liste der von DAX unterstützten Datentypen finden Sie unter In tabellarischen Modellen unterstützte Datentypen und Datentypen in Power BI Desktop.
Integer, reelle Zahl, Währung, Datum/Uhrzeit und „leer“ werden für Vergleichszwecke als numerisch erachtet. Beim Durchführen eines Vergleichs wird „blank“ als Null ausgewertet. Die folgenden Kombinationen von Datentypen werden für Vergleichsvorgänge unterstützt.
Datentyp auf der linken Seite | Datentyp der rechten Seite |
---|---|
Numerisch | Numerisch |
Boolescher Wert | Boolean |
Zeichenfolge | Zeichenfolge |
Andere Vergleiche mit gemischtem Datentyp geben einen Fehler zurück. Eine Formel wie beispielsweise =„1“ > 0 gibt einen Fehler zurück, der besagt, dass DAX-Vergleichsvorgänge das Vergleichen von Werten vom Typ „Text“ mit Werten vom Typ „Integer“ nicht unterstützen.
In DAX verwendete Datentypen | In Excel verwendete Datentypen |
---|---|
Zahlen (I8, R8) | Zahlen (R8) |
Zeichenfolge | Zeichenfolge |
Boolean | Boolean |
DateTime | Variant |
Währung | Währung |
Unterschiede in der Rangfolge
Die Rangfolge der Operationen in DAX-Formeln entspricht im Grunde der von Microsoft Excel verwendeten Rangfolge, einige Excel-Operatoren wie z. B. Prozent werden jedoch nicht unterstützt. Bereiche werden ebenfalls nicht unterstützt.
Wenn Sie Formeln aus Excel kopieren und einfügen, müssen Sie daher die Formel sorgfältig prüfen, da einige Operatoren oder Elemente in den Formeln möglicherweise nicht gültig sind. Wenn unklar ist, in welcher Reihenfolge Operationen ausgeführt werden, empfiehlt es sich, die Reihenfolge der Operationen mithilfe von Klammern zu steuern und so jegliche Unklarheit bezüglich des Ergebnisses auszuräumen.