DAX-OperatorenDAX operators

Die DAX-Sprache (Data Analysis Expression) verwendet Operatoren, um Ausdrücke zu erstellen, welche Werte vergleichen, arithmetische Berechnungen durchführen oder mit Zeichenfolgen arbeiten.The Data Analysis Expression (DAX) language uses operators to create expressions that compare values, perform arithmetic calculations, or work with strings. In diesem Abschnitt wird die Verwendung der einzelnen Operatoren beschrieben.This section describes the use of each operator.

Typen von OperatorenTypes of operators

Es gibt vier verschiedene Typen von Operatoren für Berechnungen: arithmetische Operatoren, Vergleichsoperatoren, Textverkettungsoperatoren und logische Operatoren.There are four different types of calculation operators: arithmetic, comparison, text concatenation, and logical.

Arithmetische OperatorenArithmetic operators

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.To perform basic mathematical operations such as addition, subtraction, or multiplication; combine numbers; and produce numeric results, use the following arithmetic operators.

Arithmetischer OperatorArithmetic operator BedeutungMeaning BeispielExample
+ (Pluszeichen)+ (plus sign) AdditionAddition 3+33+3
– (Minuszeichen)– (minus sign) Subtraktion oder VorzeichenSubtraction or sign 3–1–13–1–1
* (Sternchen)* (asterisk) MultiplikationMultiplication 3*33*3
/ (Schrägstrich)/ (forward slash) DivisionDivision 3/33/3
^ (Caretzeichen)^ (caret) PotenzierungExponentiation 16^416^4

Hinweis

Das Pluszeichen kann sowohl als binärer Operator als auch als unärer Operator fungieren.The plus sign can function both as a binary operator and as a unary operator. Ein binärer Operator erfordert Zahlen auf beiden Seiten des Operators und führt eine Addition aus.A binary operator requires numbers on both sides of the operator and performs addition. 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.When you use values in a DAX formula on both sides of the binary operator, DAX tries to cast the values to numeric data types if they are not already numbers. Im Gegensatz dazu kann der unäre Operator auf beliebige Argumenttypen angewendet werden.In contrast, the unary operator can be applied to any type of argument. 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.The plus symbol does not affect the type or value and is simply ignored, whereas the minus operator creates a negative value, if applied to a numeric value.

VergleichsoperatorenComparison operators

Sie können zwei Werte mit den folgenden Operatoren vergleichen.You can compare two values with the following operators. Wenn zwei Werte mithilfe dieser Operatoren verglichen werden, ist das Ergebnis ein logischer Wert, entweder TRUE oder FALSE.When two values are compared by using these operators, the result is a logical value, either TRUE or FALSE.

VergleichsoperatorComparison operator BedeutungMeaning BeispielExample
= GleichEqual to [Region] = "USA"[Region] = "USA"
== Streng gleichStrict equal to [Region] == "USA"[Region] == "USA"
> Größer alsGreater than [Verkaufsdatum] > "Jan 2009"[Sales Date] > "Jan 2009"
< Kleiner alsLess than [Verkaufsdatum] < "Jan 1 2009"[Sales Date] < "Jan 1 2009"
>= Größer als oder gleichGreater than or equal to [Betrag] >= 20000[Amount] >= 20000
<= Kleiner als oder gleichLess than or equal to [Betrag] <= 100[Amount] <= 100
<> UngleichNot equal to [Region] <> "USA"[Region] <> "USA"

Alle Vergleichsoperatoren außer == behandeln BLANK als identisch zur Zahl 0, leere Zeichenfolge "", DATE(1899, 12, 30) oder FALSE.All comparison operators except == treat BLANK as equal to number 0, empty string "", DATE(1899, 12, 30), or FALSE. Infolgedessen ist [Spalte] = 0 true, wenn der Wert von [Spalte] entweder 0 oder BLANK ist.As a result, [Column] = 0 will be true when the value of [Column] is either 0 or BLANK. Im Gegensatz dazu ist [Spalte] == 0 nur true, wenn der Wert von [Spalte] 0 ist.In contrast, [Column] == 0 is true only when the value of [Column] is 0.

Operator für TextverkettungText concatenation operator

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.Use the ampersand (&) to join, or concatenate, two or more text strings to produce a single piece of text.

TextoperatorText operator BedeutungMeaning BeispielExample
& (kaufmännisches Und-Zeichen)& (ampersand) Verbindet bzw. verkettet zwei Werte, um einen fortlaufenden Textwert zu erhaltenConnects, or concatenates, two values to produce one continuous text value [Region] & ", " & [Stadt][Region] & ", " & [City]

Logische OperatorenLogical operators

Verwenden Sie logische Operatoren (&&) und (||), um Ausdrücke zu kombinieren und so ein einzelnes Ergebnis zu erhalten.Use logical operators (&&) and (||) to combine expressions to produce a single result.

TextoperatorText operator BedeutungMeaning BeispieleExamples
&& (doppeltes kaufmännisches Und-Zeichen)&& (double ampersand) Erstellt eine AND-Bedingung zwischen zwei Ausdrücken, die jeweils ein boolesches Ergebnis aufweisen.Creates an AND condition between two expressions that each have a Boolean result. Wenn beide Ausdrücke TRUE zurückgeben, gibt die Kombination der Ausdrücke ebenfalls TRUE zurück. Andernfalls gibt die Kombination FALSE zurück.If both expressions return TRUE, the combination of the expressions also returns TRUE; otherwise the combination returns FALSE. ([Region] = "Frankreich") && ([Fahrradkäufer] = "ja"))([Region] = "France") && ([BikeBuyer] = "yes"))
|| (doppeltes Pipesymbol)|| (double pipe symbol) Erstellt eine OR-Bedingung zwischen zwei logischen Ausdrücken.Creates an OR condition between two logical expressions. Wenn einer der Ausdrücke TRUE zurückgibt, ist das Ergebnis TRUE. Nur wenn beide Ausdrücke FALSE sind, ist das Ergebnis FALSE.If either expression returns TRUE, the result is TRUE; only when both expressions are FALSE is the result FALSE. (([Region] = "Frankreich") || ([Fahrradkäufer] = "ja"))(([Region] = "France") || ([BikeBuyer] = "yes"))
ININ Erstellt eine logische OR-Bedingung zwischen jeder Zeile, die mit einer Tabelle verglichen wird.Creates a logical OR condition between each row being compared to a table. Hinweis: Die Tabellenkonstruktorsyntax verwendet geschweifte Klammern.Note: the table constructor syntax uses curly braces. 'Produkt'[Farbe] IN { "Rot", "Blau", "Schwarz" }'Product'[Color] IN { "Red", "Blue", "Black" }

Operatoren und RangfolgeOperators and precedence order

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.In some cases, the order in which calculation is performed can affect the Return value; therefore, it is important to understand how the order is determined and how you can change the order to obtain the desired results.

BerechnungsreihenfolgeCalculation order

Ein Ausdruck wertet die Operatoren und Werte in einer bestimmten Reihenfolge aus.An expression evaluates the operators and values in a specific order. Alle Ausdrücke beginnen stets mit einem Gleichheitszeichen (=).All expressions always begin with an equal sign (=). Das Gleichheitszeichen gibt an, dass die nachfolgenden Zeichen einen Ausdruck darstellen.The equal sign indicates that the succeeding characters constitute an expression.

Auf das Gleichheitszeichen folgen die zu berechnenden Elemente (die Operanden), die durch Berechnungsoperatoren voneinander getrennt sind.Following the equal sign are the elements to be calculated (the operands), which are separated by calculation operators. 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.Expressions are always read from left to right, but the order in which the elements are grouped can be controlled to some degree by using parentheses.

OperatorrangfolgeOperator precedence

Wenn Sie mehrere Operatoren in einer einzigen Formel kombinieren, wird die Rangfolge der Operationen gemäß der folgenden Tabelle bestimmt.If you combine several operators in a single formula, the operations are ordered according to the following table. Wenn die Operatoren denselben Rangwert aufweisen, verläuft die Rangfolge von links nach rechts.If the operators have equal precedence value, they are ordered from left to right. 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.For example, if an expression contains both a multiplication and division operator, they are evaluated in the order that they appear in the expression, from left to right.

OperatorOperator BeschreibungDescription
^ PotenzierungExponentiation
Vorzeichen (wie bei –1)Sign (as in –1)
* und /* and / Multiplikation und DivisionMultiplication and division
!! NOT (unärer Operator)NOT (unary operator)
+ und –+ and – Addition und SubtraktionAddition and subtraction
& Verbindet zwei Textzeichenfolgen (Verkettung)Connects two strings of text (concatenation)
=,==,<,>,<=,>=,<>=,==,<,>,<=,>=,<> VergleichComparison

Verwenden von Klammern zum Steuern der BerechnungsreihenfolgeUsing parentheses to control calculation order

Um die Auswertungsreihenfolge zu ändern, setzen Sie denjenigen Teil der Formel in Klammern, der zuerst berechnet werden muss.To change the order of evaluation, you should enclose in parentheses that part of the formula that must be calculated first. Die folgende Formel ergibt beispielsweise 11, da die Multiplikation vor der Addition berechnet wird.For example, the following formula produces 11 because multiplication is calculated before addition. Die Formel multipliziert 2 mit 3 und fügt dann 5 zum Ergebnis hinzu.The formula multiplies 2 by 3, and then adds 5 to the result.

=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.In contrast, if you use parentheses to change the syntax, the order is changed so that 5 and 2 are added together, and the result multiplied by 3 to produce 21.

=(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.In the following example, the parentheses around the first part of the formula force the calculation to evaluate the expression (3 + 0.25) first and then divide the result by the result of the expression, (3 - 0.25).

=(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.In the following example, the exponentiation operator is applied first, according to the rules of precedence for operators, and then the sign operator is applied. Das Ergebnis für diesen Ausdruck ist -4.The result for this expression is -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.To ensure that the sign operator is applied to the numeric value first, you can use parentheses to control operators, as shown in the following example. Das Ergebnis für diesen Ausdruck ist 4.The result for this expression is 4.

= (-2)^2  

KompatibilitätCompatibility

Ähnlich wie Microsoft Excel verarbeitet und vergleicht DAX problemlos verschiedene Datentypen.DAX easily handles and compares various data types, much like Microsoft Excel. 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.However, the underlying computation engine is based on SQL Server Analysis Services and provides additional advanced features of a relational data store, including richer support for date and time types. In einigen Fällen ist daher das Ergebnis von Berechnungen oder das Verhalten von Funktionen möglicherweise nicht mit Excel identisch.Therefore, in some cases the results of calculations or the behavior of functions may not be the same as in Excel. Darüber hinaus unterstützt DAX mehr Datentypen als Excel.Moreover, DAX supports more data types than does Excel. In diesem Abschnitt werden die wichtigsten Unterschiede beschrieben.This section describes the key differences.

Umwandeln der Datentypen von OperandenCoercing data types of operands

Im Allgemeinen sollten die beiden Operanden auf der linken und rechten Seite eines Operators denselben Datentyp aufweisen.In general, the two operands on the left and right sides of any operator should be the same data type. Wenn die Datentypen jedoch unterschiedlich sind, konvertiert DAX sie in einen gemeinsamen Datentyp, um den Operator in einigen Fällen anzuwenden:However, if the data types are different, DAX will convert them to a common data type to apply the operator in some cases:

  1. Beide Operanden werden in den größtmöglichen gemeinsamen Datentyp konvertiert.Both operands are converted to the largest possible common data type.
  2. Der Operator wird nach Möglichkeit angewendet.The operator is applied, if possible.

Angenommen, Sie möchten zwei Zahlen kombinieren.For example, suppose you have two numbers that you want to combine. Eine Zahl ergibt sich aus einer Formel, wie z. B. =[Price] * .20, und das Ergebnis kann viele Dezimalstellen enthalten.One number results from a formula, such as =[Price] * .20, and the result may contain many decimal places. Die andere Zahl ist ein Integer, der als Zeichenfolgenwert bereitgestellt wurde.The other number is an integer that has been provided as a string value.

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.In this case, DAX will convert both numbers to real numbers in a numeric format, using the largest numeric format that can store both kinds of numbers. Anschließend wendet DAX die Multiplikation an.Then DAX will apply the multiplication.

Je nach der Kombination der Datentypen kann die Typumwandlung nicht für Vergleichsvorgänge angewendet werden.Depending on the data-type combination, type coercion may not be applied for comparison operations. 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.For a complete list of data types supported by DAX, see Data types supported in tabular models and Data types in Power BI Desktop.

Integer, reelle Zahl, Währung, Datum/Uhrzeit und „leer“ werden für Vergleichszwecke als numerisch erachtet.Integer, Real Number, Currency, Date/time and Blank are considered numeric for comparison purposes. Beim Durchführen eines Vergleichs wird „blank“ als Null ausgewertet.Blank evaluates to zero when performing a comparison. Die folgenden Kombinationen von Datentypen werden für Vergleichsvorgänge unterstützt.The following data-type combinations are supported for comparison operations.

Datentyp auf der linken SeiteLeft Side Data Type Datentyp der rechten SeiteRight Side Data Type
NumerischNumeric NumerischNumeric
Boolescher WertBoolean Boolescher WertBoolean
ZeichenfolgeString ZeichenfolgeString

Andere Vergleiche mit gemischtem Datentyp geben einen Fehler zurück.Other mixed data-type comparisons will return an error. 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.For example, a formula such as ="1" > 0 returns an error stating that DAX comparison operations do not support comparing values of type Text with values of type Integer.

In DAX verwendete DatentypenData Types used in DAX In Excel verwendete DatentypenData Types used in Excel
Zahlen (I8, R8)Numbers (I8, R8) Zahlen (R8)Numbers (R8)
ZeichenfolgeString ZeichenfolgeString
Boolescher WertBoolean Boolescher WertBoolean
DateTimeDateTime VariantVariant
WährungCurrency WährungCurrency

Unterschiede in der RangfolgeDifferences in precedence order

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.The precedence order of operations in DAX formulas is basically the same as that used by Microsoft Excel, but some Excel operators are not supported, such as percent. Bereiche werden ebenfalls nicht unterstützt.Also, ranges are not supported.

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.Therefore, whenever you copy and paste formulas from Excel, be sure to review the formula carefully, as some operators or elements in the formulas may not be valid. 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.When there is any doubt about the order in which operations are performed, it's recommended you use parentheses to control the order of operations and remove any ambiguity about the result.

Siehe auchSee also

DAX-SyntaxDAX syntax
DAX-ParameterbenennungDAX parameter-naming