Brug DAX-operatorer
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.