DAX-operators gebruiken

Voltooid

Uw DAX-formules kunnen operators gebruiken om expressies te maken waarmee rekenkundige berekeningen worden uitgevoerd, waarden worden vergeleken, met tekenreeksen worden gewerkt of voorwaarden worden getest.

Tip

Veel DAX-operators en de volgorde van prioriteit zijn hetzelfde als die in Excel.

Wiskundige operatoren

In de volgende tabel worden de wiskundige operatoren vermeld.

Operator Beschrijving
+ Optellen
- Aftrekking
* Vermenigvuldigen
/ Delen
^ Machtsverheffen

Wanneer u twee expressies opsplitst en de noemer nul of LEEG kan retourneren, is het efficiënter en veiliger om de DIVIDE DAX-functie te gebruiken.

Vergelijkingsoperatoren

In de volgende tabel worden de vergelijkingsoperators vermeld, die worden gebruikt om twee waarden te vergelijken. Het resultaat is TRUE of FALSE.

Operator Beschrijving
= Gelijk aan
== Strikt gelijk aan
> Groter dan
< Kleiner dan
>= Groter dan of gelijk aan
<= Kleiner dan of gelijk aan
<> Niet gelijk aan

Alle vergelijkingsoperators, met uitzondering van strikt gelijk aan (==), behandelen BLANK als gelijk aan het cijfer nul, een lege tekenreeks (""), de datum 30 december 1899 of FALSE. Dit betekent dat de expressie [Revenue] = 0 TRUE is wanneer de waarde van [Revenue] nul of BLANK is. Is daarentegen [Revenue] == 0 alleen WAAR wanneer de waarde van [Revenue] nul is.

Tekstsamenvoegingsoperator

Gebruik het En-teken (&) om twee tekstwaarden te verbinden, of samen te voegen, om één doorlopende tekstwaarde te maken. Denk bijvoorbeeld aan de volgende definitie van een berekende kolom:

Model Color = 'Product'[Model] & "-" & 'Product'[Color]

Logische operators

Gebruik logische operators om expressies te combineren die een enkel resultaat genereren. In de volgende tabel worden alle logische operators vermeld.

Operator Beschrijving
&& Hiermee wordt een AND-voorwaarde gemaakt tussen twee expressies waarbij elk een Booleaans resultaat heeft. Als beide expressies TRUE retourneren, retourneert de combinatie van de expressies ook TRUE. Anders retourneert de combinatie FALSE.
|| (dubbele pijp) Hiermee maakt u een OR-voorwaarde tussen twee logische expressies. Als een van de expressies TRUE retourneert, is het resultaat TRUE; alleen wanneer beide expressies FALSE zijn, is het resultaat FALSE.
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.
NOT Hiermee wordt de status van een Booleaanse expressie omgekeerd (FALSE naar TRUE en omgekeerd).

Een voorbeeld waarin de IN logische operator wordt gebruikt, is de metingdefinitie ANZ Revenue , die gebruikmaakt van de CALCULATE DAX-functie om een specifiek filter van twee landen af te dwingen: Australië en Nieuw-Zeeland.

Notitie

U krijgt kennis met de krachtige CALCULATE functie wanneer u leert hoe u de filtercontext kunt wijzigen.

ANZ Revenue =
CALCULATE(
    [Revenue],
    Customer[Country-Region] IN {
        "Australia",
        "New Zealand"
    }
)

Operatorprioriteit

Wanneer uw DAX-formule meerdere operators bevat, gebruikt DAX regels om de evaluatievolgorde te bepalen. Dit wordt ook wel operatorprioriteit genoemd. Bewerkingen worden gerangschikt volgens de volgende tabel.

Operator Beschrijving
^ Machtsverheffing
- Tekens (zoals in -1)
* en / Vermenigvuldigen en delen
NOT NOT
+ en - Optellen en aftrekken
& Samenvoeging van twee tekstreeksen
=,==,<,>=<,=,>=,<> Vergelijking

Wanneer de operators een gelijke prioriteitswaarde hebben, worden ze van links naar rechts geordend.

Over het algemeen is de prioriteit van operators hetzelfde als in Excel. Als u de evaluatievolgorde wilt wijzigen, groepeert u bewerkingen tussen haakjes.

Denk bijvoorbeeld aan de volgende definitie van een berekende kolom:

Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * 1 - [Unit Price Discount Pct]

Dit voorbeeld van een definitie van een berekende kolom levert een onjuist resultaat op omdat vermenigvuldiging plaatsvindt vóór aftrekking. De volgende juiste definitie van een berekende kolom maakt gebruik van haakjes om ervoor te zorgen dat de aftrekkingen plaatsvinden vóór de vermenigvuldigingen.

Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * (1 - [Unit Price Discount Pct])

Tip

Het onthouden van regels voor operatorprioriteit kan lastig zijn, met name voor mensen met weinig ervaring met DAX. Daarom raden we u aan uw formules zorgvuldig te testen. Als de formules niet het juiste resultaat opleveren vanwege een onjuiste evaluatievolgorde, kunt u experimenteren door haakjes toe te voegen om de evaluatievolgorde aan te passen. U kunt ook haakjes toevoegen om de leesbaarheid van uw formules te verbeteren.

Zie DAX-operators voor meer informatie over DAX-operators en volgorde van prioriteit.

Impliciete conversie

Wanneer u een DAX-formule schrijft die gebruikmaakt van operators voor het combineren van verschillende gegevenstypen, hoeft u typen niet expliciet te converteren. Gewoonlijk identificeert DAX automatisch de gegevenstypen van modelobjecten waarnaar wordt verwezen en voert DAX impliciete conversies uit wanneer dit nodig is om de opgegeven bewerking te voltooien.

Er kunnen echter enkele beperkingen bestaan voor de waarden die kunnen worden geconverteerd. Als een waarde of kolom een gegevenstype heeft dat niet compatibel is met de huidige bewerking, retourneert DAX een fout. De poging om een datumwaarde te vermenigvuldigen, levert bijvoorbeeld een fout op omdat dit niet logisch is.

BLANK wordt anders verwerkt, afhankelijk van de operator die wordt gebruikt. Dit is vergelijkbaar met de manier waarop Excel BLANK behandelt, maar anders voor de manier waarop databases (SQL) NULL behandelen. BLANK wordt beschouwd als nul wanneer er wordt gehandeld op basis van rekenkundige operators en als een lege tekenreeks bij het samenvoegen in een tekenreeks.

Tip

Het onthouden hoe BLANK wordt afgehandeld kan lastig zijn, met name voor mensen met weinig ervaring met DAX. Daarom raden we u aan uw formules zorgvuldig te testen. Wanneer BLANK's onverwachte resultaten opleveren, kunt u overwegen om de IF DAX-functies en ISBLANK te gebruiken om te testen op BLANK en vervolgens op de juiste manier te reageren.