DAX-operatorer

DAX-sproget (Data Analysis Expression) bruger operatorer til at oprette udtryk, der sammenligner værdier, udfører aritmetiske beregninger eller arbejder med strenge.

Typer af operatorer

Der er fire forskellige typer beregningsoperatorer: aritmetik, sammenligning, tekstsammenkædning og logisk.

Aritmetiske operatorer

Til at udføre grundlæggende matematiske handlinger, f.eks. addition, subtraktion eller multiplikation; kombiner tal; og producere numeriske resultater, skal du bruge følgende aritmetiske operatorer.

Aritmetisk operator Betydning Eksempel
+ (plustegn) Tilføjelse 3+3
– (minustegn) Subtraktion eller fortegn 3–1–1
* (stjerne) Multiplikation 3*3
/ (skråstreg) Afdeling 3/3
^ (indsætning) Eksponentiering 16^4

Bemærk

Plustegnet kan fungere både som en binær operator og som en monadisk operator. En binær operator kræver tal på begge sider af operatoren og udfører addition. Når du bruger værdier i en DAX-formel på begge sider af den binære operator, forsøger DAX at konvertere værdierne til numeriske datatyper, hvis de ikke allerede er tal. I modsætning hertil kan den monadiske operator anvendes på alle typer argumenter. Plussymbolet påvirker ikke typen eller værdien og ignoreres ganske enkelt, mens minusoperatoren opretter en negativ værdi, hvis den anvendes på en numerisk værdi.

Sammenligningsoperatorer

Du kan sammenligne to værdier med følgende operatorer. Når to værdier sammenlignes ved hjælp af disse operatorer, er resultatet en logisk værdi, enten TRUE eller FALSE.

Sammenligningsoperator Betydning Eksempel
= Er lig med [Region] = "USA"
== Fuldstændig lig med [Region] == "USA"
> Større end [Salgsdato] > "Jan 2009"
< Mindre end [Salgsdato] < "Jan 1 2009"
>= Større end eller lig med [Beløb] >= 20000
<= Er mindre end eller lig med [Beløb] <= 100
<> Er ikke lig med [Område] <> "USA"

Alle sammenligningsoperatorer undtagen == behandler BLANK som lig med tal 0, tom streng "", DATE(1899, 12, 30) eller FALSE. Derfor vil [Column] = 0 være sand, når værdien af [Column] enten er 0 eller BLANK. I modsætning hertil er [Column] == 0 kun sand, når værdien af [Column] er 0.

Tekstsammenkædningsoperator

Brug tegnet (&) til at joinforbinde eller sammenkæde to eller flere tekststrenge for at oprette et enkelt stykke tekst.

Tekstoperator Betydning Eksempel
&(tegn) Forbind eller sammenkæder to værdier for at oprette én fortløbende tekstværdi [Region] & ", " & [City]

Logiske operatorer

Brug logiske operatorer (&) og (||) til at kombinere udtryk for at skabe et enkelt resultat.

Tekstoperator Betydning Eksempler
& (dobbelt&tegn) Opretter en AND-betingelse mellem to udtryk, der hver især har et boolesk resultat. Hvis begge udtryk returnerer TRUE, returnerer kombinationen af udtrykkene også TRUE. Ellers returnerer kombinationen FALSE. ([Region] = "France") & ([BikeBuyer] = "yes"))
|| (dobbelt rørsymbol) Opretter en OR-betingelse mellem to logiske udtryk. Hvis et af udtrykkene returnerer TRUE, er resultatet TRUE. kun, når begge udtryk er FALSE, er resultatet FALSE. (([Region] = "France") || ([BikeBuyer] = "ja"))
IN Opretter en logisk OR-betingelse mellem hver række, der sammenlignes med en tabel. Bemærk! Tabelkonstruktørsyntaksen bruger krøllede klammeparenteser. 'Product'[Color] IN { "Red", "Blue", "Black" }

Operatorer og prioriteret rækkefølge

I nogle tilfælde kan den rækkefølge, beregningen udføres i, påvirke returværdien. Derfor er det vigtigt at forstå, hvordan rækkefølgen bestemmes, og hvordan du kan ændre rækkefølgen for at opnå de ønskede resultater.

Beregningsrækkefølge

Et udtryk evaluerer operatorerne og værdierne i en bestemt rækkefølge. Alle udtryk starter altid med et lighedstegn (=). Lighedstegnet angiver, at de efterfølgende tegn udgør et udtryk.

Efter lighedstegnet er de elementer, der skal beregnes (operanderne), som er adskilt af beregningsoperatorer. Udtryk læses altid fra venstre mod højre, men den rækkefølge, som elementerne grupperes i, kan styres i en vis grad ved hjælp af parenteser.

Operatorrækkefølge

Hvis du kombinerer flere operatorer i en enkelt formel, sorteres handlingerne i henhold til følgende tabel. Hvis operatorerne har samme prioritetsværdi, sorteres de fra venstre mod højre. Hvis et udtryk f.eks. indeholder både en multiplikations- og divisionsoperator, evalueres de i den rækkefølge, de vises i udtrykket, fra venstre mod højre.

Operator Beskrivelse
^ Eksponentiering
Log på (som i –1)
*Og/ Multiplikation og division
+ og – Addition og subtraktion
& Forbind s to tekststrenge (sammenkædning)
=,==,<,>=<,>=,,<>IN Sammenligning
NOT NOT (monadisk operator)

Brug af parenteser til at styre beregningsrækkefølgen

Hvis du vil ændre evalueringsrækkefølgen, skal du omslutte den del af formlen, der skal beregnes først, med parenteser. Følgende formel producerer f.eks. 11, fordi multiplikation beregnes før addition. Formlen multiplicerer 2 med 3 og føjer derefter 5 til resultatet.

=5+2*3  

Hvis du derimod bruger parenteser til at ændre syntaksen, ændres rækkefølgen, så 5 og 2 lægges sammen, og resultatet multipliceres med 3 for at producere 21.

=(5+2)*3  

I følgende eksempel tvinger parenteserne omkring den første del af formlen beregningen til først at evaluere udtrykket (3 + 0.25) og derefter dividere resultatet med resultatet af udtrykket (3 - 0.25).

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

I følgende eksempel anvendes eksponentieringsoperatoren først i henhold til reglerne for prioritet for operatorer, og derefter anvendes tegnoperatoren. Resultatet for dette udtryk er -4.

=-2^2  

Hvis du vil sikre dig, at tegnoperatoren anvendes på den numeriske værdi først, kan du bruge parenteser til at styre operatorer som vist i følgende eksempel. Resultatet for dette udtryk er 4.

= (-2)^2  

Kompatibilitet

DAX håndterer og sammenligner nemt forskellige datatyper på samme måde som Microsoft Excel. Det underliggende beregningsprogram er dog baseret på SQL Server Analysis Services og indeholder yderligere avancerede funktioner i et relationsdatalager, herunder bedre understøttelse af dato- og klokkeslætstyper. I nogle tilfælde er resultaterne af beregninger eller funktionsmåden for funktioner derfor muligvis ikke de samme som i Excel. DAX understøtter desuden flere datatyper end Excel. I dette afsnit beskrives de vigtigste forskelle.

Gennemtvinger datatyper for operander

Generelt skal de to operander på venstre og højre side af en hvilken som helst operator være af samme datatype. Men hvis datatyperne er forskellige, konverterer DAX dem til en fælles datatype for at anvende operatoren i nogle tilfælde:

  1. Begge operander konverteres til den størst mulige fælles datatype.
  2. Operatoren anvendes, hvis det er muligt.

Lad os f.eks. antage, at du har to tal, som du vil kombinere. Et tal stammer fra en formel, f.eks. =[Price] * .20, og resultatet kan indeholde mange decimaler. Det andet tal er et heltal, der er angivet som en strengværdi.

I dette tilfælde konverterer DAX begge tal til reelle tal i et numerisk format ved hjælp af det største numeriske format, der kan gemme begge typer tal. Derefter anvender DAX multiplikationen.

Afhængigt af kombinationen af datatypen anvendes typetvingning muligvis ikke for sammenligningshandlinger. Du kan se en komplet liste over de datatyper, der understøttes af DAX, under Datatyper, der understøttes i tabelmodeller og Datatyper i Power BI Desktop.

Heltal, Reelt tal, Valuta, Dato/klokkeslæt og Tom anses for at være numeriske til sammenligningsformål. Blank evalueres til nul, når der udføres en sammenligning. Følgende kombinationer af datatyper understøttes for sammenligningshandlinger.

Datatype i venstre side Datatype i højre side
Numerisk Numerisk
Boolean Boolesk
String String

Andre sammenligninger af blandede datatyper returnerer en fejl. En formel som f.eks. ="1" > 0 returnerer f.eks. en fejl, der angiver, at DAX-sammenligningshandlinger ikke understøtter sammenligning af værdier af typen Text med værdier af typen Integer.

Datatyper, der bruges i DAX Datatyper, der bruges i Excel
Tal (I8, R8) Tal (R8)
String String
Boolean Boolean
Dato/klokkeslæt Variant
Valuta Valuta

Forskelle i prioriteret rækkefølge

Rækkefølgen af handlinger i DAX-formler er stort set den samme som den, der bruges af Microsoft Excel, men nogle Excel-operatorer understøttes ikke, f.eks. procent. Områder understøttes heller ikke.

Når du kopierer og indsætter formler fra Excel, skal du derfor gennemgå formlen omhyggeligt, da nogle operatorer eller elementer i formlerne muligvis ikke er gyldige. Når der er tvivl om den rækkefølge, handlingerne udføres i, anbefales det, at du bruger parenteser til at styre rækkefølgen af handlinger og fjerne eventuelle flertydigheder om resultatet.

DAX-syntaks
NAVNGIVNING AF DAX-parametre