Bruke DAX-operatorer
DAX-formlene kan bruke operatorer til å opprette uttrykk som utfører aritmetiske beregninger, sammenligne verdier, arbeide med strenger eller testbetingelser.
Tips
Mange DAX-operatorer og prioritetsrekkefølge er de samme som finnes i Excel.
Aritmetiske operatorer
I tabellen nedenfor ser du de aritmetiske operatorene.
Operator | Beskrivelse |
---|---|
+ | Addisjon |
- | Subtraksjon |
* | Multiplikasjon |
/ | Divisjon |
^ | Eksponentiering |
Husk at når du deler to uttrykk, og når nevneren kan returnere null eller BLANK, er det mer effektivt og tryggere å bruke DIVIDE
DAX-funksjonen.
Sammenligningsoperatorer
I tabellen nedenfor ser du sammenligningsoperatorer som brukes til å sammenligne to verdier. Resultatet er enten SANN eller USANN.
Operator | Beskrivelse |
---|---|
= | Er lik |
== | Nøyaktig lik |
> | Større enn |
< | Mindre enn |
>= | Større enn eller lik |
<= | Mindre enn eller lik |
<> | Ikke lik |
Alle sammenligningsoperatorer, med unntak av nøyaktig lik (==), behandler BLANK som lik tallet null, en tom streng (""), datoen 30. desember 1899, eller USANN. Det betyr at uttrykket [Revenue] = 0
er SANN når verdien er [Revenue]
null eller BLANK. Sann er derimot [Revenue] == 0
bare når verdien er [Revenue]
null.
Sammenslåingsoperator for tekst
Bruk ampersandtegnet (&) til å koble til, eller sette sammen, to tekstverdier for å produsere én kontinuerlig tekstverdi. Du kan for eksempel vurdere følgende beregnede kolonnedefinisjon:
Model Color = 'Product'[Model] & "-" & 'Product'[Color]
Logiske operatorer
Bruk logiske operatorer til å kombinere uttrykk som produserer et enkelt resultat. I tabellen nedenfor ser du alle de logiske operatorene.
Operator | Beskrivelse |
---|---|
&& | Oppretter en AND-betingelse mellom to uttrykk der hver av dem har et boolsk resultat. Hvis begge uttrykkene returnerer SANN, returnerer kombinasjonen av uttrykkene også SANN, ellers returnerer kombinasjonen USANN. |
|| (dobbel strek) | Oppretter en OR-betingelse mellom to logiske uttrykk. Hvis ett av uttrykkene returnerer TRUE, blir resultatet TRUE. Resultatet blir FALSE bare når begge uttrykkene returnerer FALSE. |
IN | Oppretter en logisk OR-betingelse mellom hver rad som sammenlignes med en tabell. Merk: Syntaksen for tabellkonstruktøren bruker klammeparenteser. |
NOT | Inverterer tilstanden til et boolsk uttrykk (USANN til SANN og omvendt). |
Et eksempel som bruker den IN
logiske operatoren, er måldefinisjonen CALCULATE
FOR ANZ Revenue, som bruker DAX-funksjonen til å håndheve et bestemt filter i to land: Australia og New Zealand.
Obs!
Du blir introdusert for den kraftige CALCULATE
funksjonen når du lærer hvordan du endrer filterkonteksten.
ANZ Revenue =
CALCULATE(
[Revenue],
Customer[Country-Region] IN {
"Australia",
"New Zealand"
}
)
Operatorprioriteten
Når DAX-formelen inneholder flere operatorer, bruker DAX regler for å avgjøre evalueringsrekkefølgen, som er kjent som en operatorprioritet. Operasjoner sorteres i henhold til følgende tabell.
Operator | Beskrivelse |
---|---|
^ | Eksponentiering |
- | Tegn (som i -1) |
* og / | Multiplikasjon og divisjon |
NOT | NOT |
+ og - | Addisjon og subtraksjon |
& | Sammenkobling av to tekststrenger |
=,==,<,>=<,=,>=,<> | Sammenligning |
Når operatorene har lik prioritetsverdi, blir de sortert fra venstre mot høyre.
Generelt sett er operatorprioriteten den samme som du finner i Excel. Hvis du trenger å overskride evalueringsrekkefølgen, kan du gruppere operasjonene i parenteser.
Du kan for eksempel vurdere følgende beregnede kolonnedefinisjon:
Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * 1 - [Unit Price Discount Pct]
Dette eksemplet på en definisjon for en beregnet kolonne produserer et ukorrekt resultat fordi multiplikasjonen skjer før subtraksjonen. Følgende definisjon for en beregnet kolonne er korrekt og bruker parenteser for å sikre at subtraksjonen skjer før multiplikasjonen.
Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * (1 - [Unit Price Discount Pct])
Tips
Det kan være utfordrende å huske regler for operatorprioritet, spesielt for nybegynnere av DAX. Derfor anbefaler vi konsekvent at du tester formlene grundig. Når en formel ikke produserer korrekt resultat på grunn av feil evalureringsrekkefølge, kan du eksperimentere ved å legge til parenteser for å justere evalueringsrekkefølgen. Du kan også legge til parenteser for å forbedre lesbarheten til formlene.
For mer informasjon om DAX-operatorer og prioritetsrekkefølge, kan du se DAX-operatorer.
Implisitt konvertering
Når du skriver en DAX-formel som bruker operatorer til å kombinere forskjellige datatyper, trenger du ikke å eksplisitt konvertere typer. Vanligvis identifiserer DAX datatypene til refererte modellobjekter automatisk og utfører implisitte konverteringer der det er nødvendig for å fullføre den angitte operasjonen.
Noen begrensninger kan likevel finnes på verdiene som kan konverteres. Hvis en verdi eller en kolonne har en datatype som er inkompatibel med den gjeldende operasjonen, returnerer DAX en feil. Forsøket på å multiplisere en datoverdi vil for eksempel opprette en feil fordi det ikke er logisk.
BLANK håndteres forskjellig, avhengig av hvilken operator som brukes. Den håndteres på samme måte som Excel behandler BLANK, men forskjellig fra hvordan databaser (SQL) behandler NULL. BLANK blir behandlet som null når den utføres på aritmetiske operasjoner og som en tom streng når den settes sammen til en streng.
Tips
Det kan være utfordrende å huske hvordan BLANK skal håndteres, spesielt for nybegynnere av DAX. Derfor anbefaler vi konsekvent at du tester formlene grundig. Når TOMME oppretter uventede resultater, bør du vurdere å bruke IF
OG ISBLANK
DAX-funksjonene til å teste for BLANK, og deretter svare på en passende måte.