Delen via


DAX operators

The Data Analysis Expression (DAX) language uses operators to create expressions that compare values, perform arithmetic calculations, or work with strings.

Types of operators

Er zijn vier verschillende typen berekeningsoperatoren: rekenkundig, vergelijking, tekstsamenvoeging en logisch.

Rekenkundige operatoren

Eenvoudige wiskundige bewerkingen uitvoeren, zoals optellen, aftrekken of vermenigvuldigen; getallen combineren; en numerieke resultaten produceren, gebruikt u de volgende rekenkundige operatoren.

Arithmetic operator Betekenis Voorbeeld
+ (plusteken) Toevoeging 3+3
- (minus sign) Subtraction or sign 3-1-1
* (sterretje) Vermenigvuldiging 3*3
/ (forward slash) Divisie 3/3
^ (caret) Exponentiation 16^4

Notitie

Het plusteken kan zowel fungeren als een binaire operator als een unaire operator. Een binaire operator vereist getallen aan beide zijden van de operator en voert optellen uit. 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. De unaire operator kan daarentegen worden toegepast op elk type argument. Het plusteken heeft geen invloed op het type of de waarde en wordt gewoon genegeerd, terwijl de min-operator een negatieve waarde maakt, indien toegepast op een numerieke waarde.

Vergelijkingsoperatoren

U kunt twee waarden vergelijken met de volgende operators. Wanneer twee waarden worden vergeleken met behulp van deze operators, is het resultaat een logische waarde, ofwel TRUE of FALSE.

Vergelijkingsoperator Betekenis Voorbeeld
= Equal to [Region] = "USA"
== Strict equal to [Region] == "USA"
> Greater than [Verkoopdatum] > "Jan 2009"
< Less than [Verkoopdatum] < "1 januari 2009"
>= Groter dan of gelijk aan [Amount] >= 20000
<= Kleiner dan of gelijk aan [Amount] <= 100
<> Niet gelijk aan [Region] <> "USA"

All comparison operators except == treat BLANK as equal to number 0, empty string "", DATE(1899, 12, 30), or FALSE. As a result, [Column] = 0 will be true when the value of [Column] is either 0 or BLANK. [Kolom] == 0 is daarentegen alleen waar als de waarde van [Kolom] 0 is.

Tekstsamenvoegingsoperator

Gebruik het ampersand (&) om twee of meer teksttekenreeksen te verbinden of samen te voegen om één stuk tekst te produceren.

Tekstoperator Betekenis Voorbeeld
& (ampersand) Hiermee worden twee waarden verbonden of samengevoegd om één doorlopende tekstwaarde te produceren [Region] & ", " & [City]

Logical operators

Gebruik logische operatoren (&&) en (||) om expressies te combineren om één resultaat te produceren.

Tekstoperator Betekenis Voorbeelden
&&(double ampersand) Hiermee maakt u een AND voorwaarde tussen twee expressies die elk een Boole-resultaat hebben. Als beide expressies TRUEretourneren, retourneert de combinatie van de expressies ook TRUE; anders retourneert de combinatie FALSE. ([Region] = "France") && ([BikeBuyer] = "yes"))
|| (double pipe symbol) Hiermee maakt u een OR voorwaarde tussen twee logische expressies. Als een van de expressies TRUEteruggeeft, is het resultaat TRUE; alleen wanneer beide expressies FALSE zijn, is het resultaat FALSE. (([Region] = "France") || ([BikeBuyer] = "yes"))
IN Hiermee maakt u een logische OR voorwaarde tussen elke rij die wordt vergeleken met een tabel. Note: the table constructor syntax uses curly braces. 'Product'[Color] IN { "Red", "Blue", "Black" }

Operatoren en volgorde van prioriteit

In sommige gevallen kan de volgorde waarin de berekening wordt uitgevoerd van invloed zijn op de retourwaarde; Daarom is het belangrijk om te begrijpen hoe de order wordt bepaald en hoe u de volgorde kunt wijzigen om de gewenste resultaten te verkrijgen.

Berekeningsvolgorde

Een expressie evalueert de operators en waarden in een specifieke volgorde. Alle expressies beginnen altijd met een gelijkteken (=). Het gelijkteken geeft aan dat de volgende tekens een expressie vormen.

Na het gelijkteken worden de elementen berekend (de operanden), die worden gescheiden door berekeningsoperatoren. Expressies worden altijd van links naar rechts gelezen, maar de volgorde waarin de elementen zijn gegroepeerd, kan worden bepaald met haakjes.

Operator precedence

Als u verschillende operatoren in één formule combineert, worden de bewerkingen gerangschikt volgens de volgende tabel. Als de operatoren een gelijke prioriteitswaarde hebben, worden ze van links naar rechts geordend. Als een expressie bijvoorbeeld zowel een operator voor vermenigvuldigen als delen bevat, worden ze geëvalueerd in de volgorde waarin ze in de expressie worden weergegeven, van links naar rechts.

Bediener Beschrijving
^ Exponentiation
Sign (such as –1)
* en / Vermenigvuldiging en deling
+ en Optellen en aftrekken
& Verbindt twee tekenreeksen met tekst (samenvoeging)
=,==,<,>,<=,>=,<>,IN Vergelijking
NOT NOT (unary operator)

Haakjes gebruiken om de berekeningsvolgorde te beheren

Als u de volgorde van de evaluatie wilt wijzigen, moet u tussen haakjes plaatsen dat deel van de formule dat eerst moet worden berekend. De volgende formule produceert bijvoorbeeld 11 omdat vermenigvuldigen wordt berekend vóór optellen. De formule vermenigvuldigt 2 met 3 en voegt vervolgens 5 toe aan het resultaat.

=5+2*3

Als u daarentegen haakjes gebruikt om de syntaxis te wijzigen, wordt de volgorde gewijzigd, zodat 5 en 2 worden opgeteld en het resultaat wordt vermenigvuldigd met 3 om 21 te produceren.

=(5+2)*3

In het volgende voorbeeld dwingen de haakjes rond het eerste deel van de formule de berekening af om eerst de expressie te evalueren (3 + 0.25) en vervolgens het resultaat te delen door het resultaat van de expressie, (3 - 0.25).

=(3 + 0.25)/(3 - 0.25)

In het volgende voorbeeld wordt eerst de exponentiatieoperator toegepast op basis van de regels van prioriteit voor operators en vervolgens wordt de tekenoperator toegepast. Het resultaat voor deze expressie is -4.

=-2^2

Als u ervoor wilt zorgen dat de tekenoperator eerst wordt toegepast op de numerieke waarde, kunt u haakjes gebruiken om operatoren te beheren, zoals wordt weergegeven in het volgende voorbeeld. Het resultaat voor deze expressie is 4.

= (-2)^2

Compatibiliteit

DAX easily handles and compares various data types, much like Microsoft Excel. De onderliggende berekeningsengine is echter gebaseerd op SQL Server Analysis Services en biedt aanvullende geavanceerde functies van een relationeel gegevensarchief, waaronder uitgebreidere ondersteuning voor datum- en tijdtypen. In sommige gevallen zijn de resultaten van berekeningen of het gedrag van functies dus mogelijk niet hetzelfde als in Excel. Bovendien ondersteunt DAX meer gegevenstypen dan Excel. In deze sectie worden de belangrijkste verschillen beschreven.

Coercing data types of operands

Over het algemeen moeten de twee operanden aan de linker- en rechterkant van een operator hetzelfde gegevenstype zijn. 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 worden geconverteerd naar het grootst mogelijke algemene gegevenstype.
  2. The operator is applied, if possible.

Stel dat u twee getallen hebt die u wilt combineren. Eén getal komt voort uit een formule, zoals =[Price] * .20, en het resultaat kan veel decimalen bevatten. Het andere getal is een geheel getal dat is opgegeven als tekenreekswaarde.

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. Vervolgens past DAX de vermenigvuldiging toe.

Afhankelijk van de combinatie van het gegevenstype kan het type coercion niet worden toegepast voor vergelijkingsbewerkingen. For a complete list of data types supported by DAX, see Data types supported in tabular models and Data types in Power BI Desktop.

Geheel getal, reëel getal, valuta, datum/tijd en leeg worden beschouwd als numeriek voor vergelijkingsdoeleinden. Leeg resulteert in nul bij het uitvoeren van een vergelijking. De volgende combinaties van gegevenstypen worden ondersteund voor vergelijkingsbewerkingen.

Gegevenstype aan de linkerkant Right Side Data Type
Numeric Numeric
Boolean Boolean
String String

Andere vergelijkingen van gemengde gegevenstypen leiden tot een fout. 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.

Gegevenstypen die worden gebruikt in DAX Gegevenstypen die worden gebruikt in Excel
Getallen (I8, R8) Getallen (R8)
String String
Boolean Boolean
Datum/tijd Variant
Valuta Valuta

Verschillen in prioriteitsvolgorde

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. Also, ranges are not supported.

Wanneer u formules kopieert en plakt uit Excel, moet u daarom de formule zorgvuldig controleren, omdat sommige operatoren of elementen in de formules mogelijk niet geldig zijn. Wanneer er twijfel is over de volgorde waarin bewerkingen worden uitgevoerd, is het raadzaam haakjes te gebruiken om de volgorde van bewerkingen te bepalen en eventuele dubbelzinnigheid over het resultaat te verwijderen.

DAX syntaxDAX parameter-naming