Del via


DAX-operatorer

Dax-språket (Data Analysis Expression) bruker operatorer til å opprette uttrykk som sammenligner verdier, utfører aritmetiske beregninger eller arbeider med strenger.

Operatortyper

Det finnes fire forskjellige typer beregningsoperatorer: aritmetisk, sammenligning, tekstsammenkjeding og logisk.

Aritmetiske operatorer

Slik utfører du grunnleggende matematiske operasjoner, for eksempel addisjon, subtraksjon eller multiplikasjon. kombinere tall; og produsere numeriske resultater, bruk følgende aritmetiske operatorer.

Aritmetisk operator Betydning Eksempel
+ (plusstegn) Addisjon 3+3
– (minustegn) Subtraksjon eller tegn 3–1–1
* (stjerne) Multiplikasjon 3*3
/ (skråstrek) Divisjon 3/3
^ (caret) Eksponentiering 16^4

Merk

Plusstegnet kan fungere både som en binær operator og som en ikke-ær operator. En binær operator krever tall på begge sider av operatoren og utfører tillegg. Når du bruker verdier i en DAX-formel på begge sider av binæroperatoren, prøver DAX å gi verdiene til numeriske datatyper hvis de ikke allerede er tall. Derimot kan den uary operatoren brukes på alle typer argumenter. Plusssymbolet påvirker ikke typen eller verdien og ignoreres ganske enkelt, mens minusoperatoren oppretter en negativ verdi, hvis den brukes på en numerisk verdi.

Sammenligningsoperatorer

Du kan sammenligne to verdier med følgende operatorer. Når to verdier sammenlignes ved hjelp av disse operatorene, er resultatet en logisk verdi, enten SANN eller USANN.

Sammenligningsoperator Betydning Eksempel
= Er lik [Region] = "USA"
== Nøyaktig lik [Område] == "USA"
> Større enn [Salgsdato] > "Jan 2009"
< Mindre enn [Salgsdato] < "1. januar 2009"
>= Større enn eller lik [Beløp] >= 20000
<= Mindre enn eller lik [Beløp] <= 100
<> Ikke lik [Område] <> "USA"

Alle sammenligningsoperatorer unntatt == behandler BLANK som lik tall 0, tom streng «», DATO(1899, 12, 30) eller USANN. Som et resultat vil [Kolonne] = 0 være sant når verdien av [Kolonne] er enten 0 eller BLANK. [Kolonne] == 0 er derimot bare sann når verdien for [Kolonne] er 0.

Sammenslåingsoperator for tekst

Bruk &ersanden (&) til å koble sammen, eller kjede sammen, to eller flere tekststrenger for å produsere ett enkelt stykke tekst.

Tekstoperator Betydning Eksempel
&ersand) Koble til s, eller kjeder sammen, to verdier for å produsere én kontinuerlig tekstverdi [Område] & ", " & [By]

Logiske operatorer

Bruk logiske operatorer (&&) og (||) til å kombinere uttrykk for å produsere ett enkelt resultat.

Tekstoperator Betydning Eksempler
&&&(dobbeltsand) Oppretter en AND-betingelse mellom to uttrykk som hver har et boolsk resultat. Hvis begge uttrykkene returnerer SANN, returnerer kombinasjonen av uttrykkene også SANN, ellers returnerer kombinasjonen USANN. ([Region] = "Frankrike") && ([BikeBuyer] = "ja"))
|| (dobbel rørsymbol) Oppretter en OR-betingelse mellom to logiske uttrykk. Hvis et av uttrykkene returnerer SANN, er resultatet SANN. bare når begge uttrykkene er USANN, er resultatet USANN. (([Område] = "Frankrike") || ([BikeBuyer] = "ja"))
INN Oppretter en logisk OR-betingelse mellom hver rad som sammenlignes med en tabell. Obs! Tabellkonstruktørsyntaksen bruker klammeparenteser. 'Product'[Color] IN { "Red", "Blue", "Black" }

Operatorer og prioritetsrekkefølge

I noen tilfeller kan rekkefølgen beregningen utføres i påvirke returverdien. Derfor er det viktig å forstå hvordan rekkefølgen bestemmes og hvordan du kan endre rekkefølgen for å oppnå de ønskede resultatene.

Beregningsrekkefølge

Et uttrykk evaluerer operatorene og verdiene i en bestemt rekkefølge. Alle uttrykk begynner alltid med et likhetstegn (=). Likhetstegnet angir at de etterfølgende tegnene utgjør et uttrykk.

Etter likhetstegnet er elementene som skal beregnes (operandene), som er atskilt med beregningsoperatorer. Uttrykk leses alltid fra venstre mot høyre, men rekkefølgen elementene grupperes i, kan styres til en viss grad ved hjelp av parenteser.

Operatorprioriteten

Hvis du kombinerer flere operatorer i én enkelt formel, ordnes operasjonene i henhold til tabellen nedenfor. Hvis operatorene har lik prioritetsverdi, blir de sortert fra venstre mot høyre. Hvis et uttrykk for eksempel inneholder både en multiplikasjons- og divisjonsoperator, evalueres de i den rekkefølgen de vises i uttrykket, fra venstre mot høyre.

Operatør Bekrivelse
^ Eksponentiering
Logg på (som i –1)
*Og/ Multiplikasjon og divisjon
+ og – Addisjon og subtraksjon
& Koble til to tekststrenger (sammenkobling)
=,==,<,>=<,=,>=,<>,,IN Sammenligning
NOT NOT (unary operator)

Bruke parenteser til å kontrollere beregningsrekkefølgen

Hvis du vil endre rekkefølgen på evalueringen, bør du omslutte den delen av formelen som må beregnes først, i parenteser. Formelen nedenfor produserer for eksempel 11 fordi multiplikasjon beregnes før tillegg. Formelen multipliserer 2 med 3, og legger deretter til 5 i resultatet.

=5+2*3  

Hvis du derimot bruker parenteser til å endre syntaksen, endres rekkefølgen slik at 5 og 2 legges sammen, og resultatet multipliseres med 3 for å produsere 21.

=(5+2)*3  

I eksemplet nedenfor tvinger parentesene rundt den første delen av formelen beregningen til å evaluere uttrykket (3 + 0.25) først og deretter dele resultatet med resultatet av uttrykket (3 - 0.25).

=(3 + 0.25)/(3 - 0.25)  

I eksemplet nedenfor brukes eksponentiasjonsoperatoren først, i henhold til regler for prioritet for operatorer, og deretter brukes tegnoperatoren. Resultatet for dette uttrykket er -4.

=-2^2  

Hvis du vil sikre at tegnoperatoren brukes på den numeriske verdien først, kan du bruke parenteser til å kontrollere operatorer, som vist i eksemplet nedenfor. Resultatet for dette uttrykket er 4.

= (-2)^2  

Kompatibilitet

DAX håndterer og sammenligner enkelt ulike datatyper, på samme måte som Microsoft Excel. Den underliggende beregningsmotoren er imidlertid basert på SQL Server Analysis Services og gir flere avanserte funksjoner i et relasjonsdatalager, inkludert rikere støtte for dato- og klokkesletttyper. Resultatene av beregninger eller virkemåten til funksjoner kan derfor ikke være de samme som i Excel i noen tilfeller. I tillegg støtter DAX flere datatyper enn Excel. Denne delen beskriver de viktigste forskjellene.

Tvinge datatyper av operander

Generelt sett bør de to operandene på venstre og høyre side av en hvilken som helst operator være den samme datatypen. Hvis datatypene imidlertid er forskjellige, konverterer DAX dem til en felles datatype for å bruke operatoren i noen tilfeller:

  1. Begge operandene konverteres til den største mulige felles datatypen.
  2. Operatoren brukes hvis mulig.

Anta for eksempel at du har to tall du vil kombinere. Ett tall resultater fra en formel, for eksempel =[Price] * .20, og resultatet kan inneholde mange desimaler. Det andre tallet er et heltall som er angitt som en strengverdi.

I dette tilfellet konverterer DAX begge tallene til reelle tall i et numerisk format, ved hjelp av det største numeriske formatet som kan lagre begge talltypene. Da vil DAX bruke multiplikasjonen.

Avhengig av datatypekombinasjonen kan det hende at type tvang ikke brukes for sammenligningsoperasjoner. Hvis du vil ha en fullstendig liste over datatyper som støttes av DAX, kan du se Datatyper som støttes i tabellmodeller og datatyper i Power BI Desktop.

Heltall, Reelt tall, Valuta, Dato/klokkeslett og Tom regnes som numeriske for sammenligningsformål. Tom evalueres til null når du utfører en sammenligning. Følgende kombinasjoner av datatyper støttes for sammenligningsoperasjoner.

Venstre datatype Høyre datatype
Numerisk Numerisk
Boolean Boolsk
Streng Streng

Andre sammenligninger av blandet datatype returnerer en feil. En formel som ="1" > 0 returnerer for eksempel en feil som sier at DAX-sammenligningsoperasjoner ikke støtter sammenligning av verdier av typen Tekst med verdier av typen Heltall.

Datatyper som brukes i DAX Datatyper som brukes i Excel
Tall (I8, R8) Tall (R8)
Streng Streng
Boolean Boolean
Date/klokkeslett Variant
Valuta. Valuta.

Forskjeller i prioritetsrekkefølge

Prioritetsrekkefølgen for operasjoner i DAX-formler er i utgangspunktet den samme som den som brukes av Microsoft Excel, men noen Excel-operatorer støttes ikke, for eksempel prosent. Områder støttes heller ikke.

Når du kopierer og limer inn formler fra Excel, må du derfor passe på å se nøye gjennom formelen, ettersom noen operatorer eller elementer i formlene kanskje ikke er gyldige. Når det er tvil om rekkefølgen operasjonene utføres i, anbefales det at du bruker parenteser til å kontrollere rekkefølgen på operasjonene og fjerne tvetydighet om resultatet.

DAX-syntaks
NAVNGIVING av DAX-parameter