DAX-operators

De DAX-taal (Data Analysis Expression) maakt gebruik van operators om expressies te maken waarmee waarden worden vergeleken, rekenkundige berekeningen worden uitgevoerd of met tekenreeksen worden gewerkt.

Typen operators

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

Rekenkundige operators

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

Rekenkundige operator Betekenis Opmerking
+ (plusteken) Aanvullend 3+3
– (minteken) Aftrekken of ondertekenen 3–1–1
* (sterretje) Vermenigvuldiging 3*3
/ (slash) Divisie 3/3
^ (caret) Machtsverheffen 16^4

Notitie

Het plusteken kan zowel als een binaire operator als als een unaire operator functioneren. Een binaire operator vereist getallen aan beide zijden van de operator en voert optellen uit. Wanneer u waarden in een DAX-formule aan beide zijden van de binaire operator gebruikt, probeert DAX de waarden naar numerieke gegevenstypen te casten als ze nog geen getallen zijn. 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.

Vergelijkingsoperators

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, TRUE of FALSE.

Vergelijkingsoperator Betekenis Opmerking
= Gelijk aan [Region] = "USA"
== Strikt gelijk aan [Region] == "USA"
> Groter dan [Verkoopdatum] > "Jan 2009"
< Kleiner dan [Verkoopdatum] < "1 januari 2009"
>= Groter dan of gelijk aan [Bedrag] >= 20000
<= Kleiner dan of gelijk aan [Bedrag] <= 100
<> Niet gelijk aan [Regio] <> "VS"

Alle vergelijkingsoperatoren behalve == behandelen BLANK als gelijk aan getal 0, lege tekenreeks "", DATE(1899, 12, 30) of FALSE. Als gevolg hiervan is [Kolom] = 0 waar wanneer de waarde van [Kolom] 0 of LEEG is. [Kolom] == 0 is daarentegen alleen waar als de waarde van [Kolom] 0 is.

Tekstsamenvoegingsoperator

Gebruik het en-teken (&) om twee of meer tekenreeksen samen te voegen of samen te voegen om één stuk tekst te produceren.

Tekstoperator Betekenis Opmerking
& (teken &) Verbinding maken s of voegt twee waarden samen om één doorlopende tekstwaarde te produceren [Regio] & ", " & [Stad]

Logische operators

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

Tekstoperator Betekenis Voorbeelden
&&& (dubbel ampersand) Hiermee maakt u een AND-voorwaarde tussen twee expressies die elk een Boole-resultaat hebben. Als beide expressies TRUE retourneren, retourneert de combinatie van de expressies ook TRUE. Anders retourneert de combinatie FALSE. ([Regio] = "Frankrijk") && ([BikeBuyer] = "ja"))
|| (symbool voor dubbele sluis) Hiermee maakt u een OR-voorwaarde tussen twee logische expressies. Als een van de expressies TRUE retourneert, is het resultaat WAAR; alleen wanneer beide expressies ONWAAR zijn, is het resultaat FALSE. (([Regio] = "Frankrijk") || ([BikeBuyer] = "ja"))
IN Hiermee maakt u een logische OR-voorwaarde tussen elke rij die wordt vergeleken met een tabel. Opmerking: de syntaxis van de tabelconstructor maakt gebruik van accolades. 'Product'[Color] IN { "Rood", "Blauw", "Zwart" }

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.

Operatorprioriteit

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.

Operator Beschrijving
^ Machtsverheffen
Aanmelden (zoals in –1)
*En/ Vermenigvuldiging en deling
+ en – Optellen en aftrekken
& Verbinding maken twee tekenreeksen tekst (samenvoeging)
=,=,<,>,<=,>=,,<>IN Vergelijking
NIET NOT (unaire 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 (3 + 0.25) te evalueren 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 verwerkt en vergelijkt eenvoudig verschillende gegevenstypen, net zoals 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.

Gegevenstypen van operanden dwingen

Over het algemeen moeten de twee operanden aan de linker- en rechterkant van een operator hetzelfde gegevenstype zijn. Als de gegevenstypen echter verschillend zijn, converteert DAX deze naar een gemeenschappelijk gegevenstype om de operator in sommige gevallen toe te passen:

  1. Beide operanden worden geconverteerd naar het grootst mogelijke algemene gegevenstype.
  2. De operator wordt, indien mogelijk, toegepast.

Stel dat u twee getallen hebt die u wilt combineren. Eén getalresultaten van 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 dit geval converteert DAX beide getallen naar reële getallen in een numerieke notatie, met behulp van de grootste numerieke notatie waarmee beide soorten getallen kunnen worden opgeslagen. Vervolgens past DAX de vermenigvuldiging toe.

Afhankelijk van de combinatie van het gegevenstype kan het type coercion niet worden toegepast voor vergelijkingsbewerkingen. Zie Gegevenstypen die worden ondersteund in tabellaire modellen en gegevenstypen in Power BI Desktop voor een volledige lijst met gegevenstypen die worden ondersteund door DAX.

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 Gegevenstype rechts
Numeriek Numeriek
Booleaanse waarde Booleaans
String String

Andere vergelijkingen van gemengde gegevenstypen retourneren een fout. Een formule zoals ="1" > 0 retourneert bijvoorbeeld een fout waarin wordt aangegeven dat DAX-vergelijkingsbewerkingen geen ondersteuning bieden voor het vergelijken van waarden van het type Tekst met waarden van het type Geheel getal.

Gegevenstypen die worden gebruikt in DAX Gegevenstypen die worden gebruikt in Excel
Getallen (I8, R8) Getallen (R8)
String String
Booleaanse waarde Booleaanse waarde
Datum en tijd Variant
Valuta Valuta

Verschillen in prioriteitsvolgorde

De prioriteitsvolgorde van bewerkingen in DAX-formules is in feite hetzelfde als die van Microsoft Excel, maar sommige Excel-operators worden niet ondersteund, zoals percentage. Bereiken worden ook niet ondersteund.

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-syntaxis
Naamgeving van DAX-parameters