Brug DAX-operatorer

Fuldført

Dine DAX-formler kan bruge operatorer til at oprette udtryk, der udfører aritmetiske beregninger, sammenligner værdier, arbejder med strenge eller testbetingelser.

Tip

Mange DAX-operatorer og -rækkefølger er de samme som dem, der findes i Excel.

Aritmetiske operatorer

I følgende tabel vises de aritmetiske operatorer.

Operator Beskrivelse
+ Tilføjelse
- Subtraktion
* Multiplikation
/ Division
^ Eksponentiering

Husk, at når du opdeler to udtryk, og når nævneren kan returnere nul eller BLANK, er det mere effektivt og sikrere at bruge DIVIDE DAX-funktionen.

Sammenligningsoperatorer

I følgende tabel vises de sammenligningsoperatorer, der bruges til at sammenligne to værdier. Resultatet er enten TRUE eller FALSE.

Operator Beskrivelse
= Lig med
== Fuldstændig lig med
> Større end
< Mindre end
>= Større end eller lig med.
<= Mindre end eller lig med
<> Ikke lig med

Alle sammenligningsoperatorer, undtagen Fuldstændig lig med (==), behandler BLANK som lig med tallet nul, en tom streng (""), datoen den 30. december, 1899 eller FALSE. Det betyder, at udtrykket [Revenue] = 0 er TRUE, når værdien af [Revenue] enten er nul eller BLANK. Er derimod kun TRUE, [Revenue] == 0 når værdien af [Revenue] er nul.

Tekstsammenkædningsoperator

Brug og-tegnet (&) til at oprette forbindelse mellem eller sammenkæde to tekstværdier for at oprette én fortløbende tekstværdi. Se f. eks. følgende definition af en beregnet kolonne:

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

Logiske operatorer

Brug logiske operatorer til at kombinere udtryk, der giver et enkelt resultat. I følgende tabel vises alle logiske operatorer.

Operator Beskrivelse
&& Opretter en AND-betingelse mellem to udtryk, hvor hvert enkelt udtryk har et boolesk resultat. Hvis begge udtryk returnerer TRUE, returnerer kombinationen af udtrykkene også TRUE. Ellers returnerer kombinationen FALSE.
|| (dobbeltrør) Opretter en OR-betingelse mellem to logiske udtryk. Hvis et af følgende udtryk returnerer Sand, er resultatet Sandt. Kun når begge udtryk er Falske, er resultatet Falsk.
IN Opretter en logisk OR-betingelse mellem de rækker, der sammenlignes med en tabel. Bemærk! Der bruges klammeparenteser i tabelkonstruktørens syntaks.
NOT Inverterer tilstanden for et boolesk udtryk (FALSE til TRUE og omvendt).

Et eksempel, der bruger den IN logiske operator, er målingsdefinitionen ANZ Revenue , som bruger CALCULATE DAX-funktionen til at gennemtvinge et bestemt filter for to lande: Australien og New Zealand.

Bemærk

Du får en introduktion til den effektive CALCULATE funktion, når du lærer, hvordan du ændrer filterkonteksten.

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

Operatorrækkefølge

Når din DAX-formel indeholder flere operatorer, bruger DAX regler til at fastsætte evalueringsrækkefølgen, hvilket også kaldes operatorrækkefølgen. Handlinger sorteres i henhold til følgende tabel.

Operator Beskrivelse
^ Eksponentiering
- Tegn (som i -1)
* og / Multiplikation og division
NOT NOT
+ og - Addition og subtraktion
& Sammenkædning af to tekststrenge
=,==,<,>,<=,>=,<> Sammenligning

Når operatorerne har samme prioritetsværdi, sorteres de fra venstre mod højre.

Normalt er operatorrækkefølgen den samme som den, der findes i Excel. Hvis du har brug for at tilsidesætte evalueringsrækkefølgen, skal du gruppere handlinger i parenteser.

Se f. eks. følgende definition af en beregnet kolonne:

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

I dette eksempel på en definition af en beregnet kolonne, opnås der et forkert resultat, fordi multiplikation finder sted før subtraktion. I den følgende korrekte definition af en beregnet kolonne bruges der parenteser til at sikre, at subtraktionerne finder sted før multiplikationerne.

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

Tip

Det kan være en udfordring at huske operatorrækkefølgen, især for DAX-begyndere. Derfor anbefaler vi, at du tester dine formler grundigt. Når formlerne ikke giver det korrekte resultat på grund af en forkert evalueringsrækkefølge, kan du eksperimentere ved at tilføje parenteser for at justere evalueringsrækkefølgen. Du kan også tilføje parenteser for at forbedre dine formlers læsbarhed.

Du kan finde flere oplysninger om DAX-operatorer og rækkefølgen i DAX-operatorer.

Implicit konvertering

Når du skriver en DAX-formel, der bruger operatorer til at kombinere forskellige datatyper, behøver du ikke at konvertere typer eksplicit. DAX identificerer normalt datatyperne for modelobjekter, der refereres til, og udfører implicitte konverteringer, hvor det er nødvendigt, for at fuldføre den angivne handling.

Der kan dog være nogle begrænsninger for de værdier, der kan konverteres korrekt. Hvis en værdi eller en kolonne har en datatype, der ikke er kompatibel med den aktuelle handling, returnerer DAX en fejl. Et forsøg på at multiplicere en datoværdi resulterer f. eks. i en fejl, fordi den ikke er logisk.

BLANK håndteres forskelligt, afhængigt af hvilken operator der bruges. Den håndteres på samme måde, som Excel behandler BLANK på, men anderledes end den måde databaser (SQL) behandler NULL på. BLANK behandles som nul, når der anvendes aritmetiske operatorer på den, og som en tom streng, når den sammenkædes med en streng.

Tip

Det kan være en udfordring at huske, hvordan BLANK håndteres, især for DAX-begyndere. Derfor anbefaler vi, at du tester dine formler grundigt. Når TOMME værdier giver uventede resultater, kan du overveje at bruge IF funktionerne og ISBLANK DAX til at teste for BLANK og derefter reagere på en passende måde.