Læs på engelsk

Del via


DAX operatorer

Sproget Data Analysis Expression (DAX) bruger operatorer til at oprette udtryk, der sammenligner values, udføre aritmetiske beregninger or arbejde med strenge.

Typer af operatorer

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

Aritmetiske operatorer

Hvis du vil udføre grundlæggende matematiske handlinger, f.eks. addition, subtraktion, or multiplikation; kombiner tal; and giver numeriske resultater, skal du bruge følgende aritmetiske operatorer.

Aritmetisk operator Betydning Eksempel
+ (plus sign) Tilføjelse 3+3
- (minus sign) Subtraktion orsign 3-1-1
* (stjerne) Multiplikation 3*3
/ (skråstreg) Division 3/3
^ (indsætning) Eksponentiation 16^4

Bemærk

Plus-sign kan både fungere som en binær operatorand som en monadisk operator. En binær operator kræver tal på begge sider af operatoren, and udfører addition. Når du bruger values i en DAX formel på begge sider af den binære operator, forsøger DAX at konvertere values til numeriske datatyper, if de not allerede er tal. I modsætning hertil kan den monadiske operator anvendes på alle typer argumenter. Plussymbolet påvirker not typen orvalueand ignoreres ganske enkelt, mens minusoperatoren opretter en negativ value, if anvendt på et numerisk value.

Sammenligningsoperatorer

Du kan sammenligne to values med følgende operatorer. Når to values sammenlignes ved hjælp af disse operatorer, er resultatet en logisk value, enten TRUEorFALSE.

Sammenligningsoperator Betydning Eksempel
= Lig med [Region] = "USA"
== Streng lig med [Region] == "USA"
> Større end [Sales Date] > "Jan 2009"
< Mindre end [Sales Date] < "Jan 1 2009"
>= Større end or lig med [Beløb] >= 20000
<= Mindre end or lig med [Beløb] <= 100
<> Not lig med [Område] <> "USA"

All sammenligningsoperatorer except == behandler BLANK som lig med tallet 0, tom streng "", DATE(1899, 12, 30), orFALSE. [Column] = 0 bliver derfor true, når value af [Column] enten er 0 orBLANK. I modsætning hertil er [Column] == 0 kun true, når value af [Column] er 0.

Operatoren Tekstsammenkædning

Brug tegnet (&) til at joinforbinde, orconcatenate, to or flere tekststrenge til at oprette et enkelt stykke tekst.

Tekstoperator Betydning Eksempel
& (og-tegn) Opretter forbindelse, or sammenkæder, to values for at oprette én fortløbende tekst value [Region] & ", " & [City]

Logiske operatorer

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

Tekstoperator Betydning Eksempler
&&(dobbelt-og-tegn) Opretter en AND betingelse mellem to udtryk, der hver især har et boolesk resultat. If begge udtryk returnerer TRUE, returnerer kombinationen af udtryk også TRUE. Ellers returnerer kombinationen FALSE. ([Region] = "France") && ([BikeBuyer] = "yes"))
|| (dobbelt rørsymbol) Opretter en OR betingelse mellem to logiske udtryk. If et af udtrykkene returnerer TRUE, er resultatet TRUE. kun, når begge udtryk FALSE er resultatet FALSE. (([Region] = "France") || ([BikeBuyer] = "yes"))
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 and prioriteret rækkefølge

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

Beregningsrækkefølge

Et udtryk evaluerer operatorerne andvalues i en bestemt rækkefølge. All udtryk starter altid med en lige sign (=). Den lige sign angiver, at de efterfølgende tegn udgør et udtryk.

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

Operatorrækkefølge

If du kombinerer flere operatorer i en enkelt formel, sorteres handlingerne i henhold til følgende tabel. If operatorerne har samme prioritet value, sorteres de fra left til right. if f.eks. et udtryk contains både en multiplikation and divisionsoperator, evalueres de i den rækkefølge, de vises i udtrykket, fra left til right.

Operatør Beskrivelse
^ Eksponentiation
Sign (f.eks. –1)
* and / Multiplikation and division
+ and Addition and subtraktion
& Forbinder 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 med parenteser, der skal beregnes first. Følgende formel producerer f.eks. 11, fordi multiplikation beregnes før addition. Formlen multiplicerer 2 med 3, and føjer derefter 5 til resultatet.

=5+2*3  

I modsætning hertil ændres rækkefølgen, if du bruger parenteser til at ændre syntaksen, så 5 and 2 lægges sammen, and resultatet ganget med 3 for at producere 21.

=(5+2)*3  

I følgende eksempel tvinger parenteserne omkring den first del af formlen beregningen til at evaluate udtrykket (3 + 0.25)firstand derefter divide resultatet af udtrykket (3 - 0.25).

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

I følgende eksempel anvendes eksponentieringsoperatoren firsti henhold til reglerne for prioritet for operatorer, and derefter anvendes operatoren sign. Resultatet for dette udtryk er -4.

=-2^2  

Hvis du vil sikre dig, at operatoren sign anvendes på den numeriske valuefirst, 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 nemt and sammenligner forskellige datatyper på samme måde som Microsoft Excel. Det underliggende beregningsprogram er dog baseret på SQL Server Analysis Servicesand indeholder yderligere avancerede funktioner i et relationsdatalager, herunder bedre understøttelse af dateandtime typer. I nogle tilfælde kan resultaterne af beregninger or funktionsmåden for funktioner derfor not være den samme som i Excel. Desuden understøtter DAX flere datatyper end Excel. I dette afsnit beskrives de vigtigste forskelle.

Gennemtvinger datatyper for operander

Generelt skal de to operander på de leftandright sider af en hvilken som helst operator være af samme datatype. Men if datatyperne er forskellige, vil DAXconvert 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, if 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, and resultatet kan indeholde mange decimaler. Det andet tal er et heltal, der er angivet som en streng value.

I dette tilfælde convertDAX begge tal til reelle tal i en numerisk formatved hjælp af den største numeriske format, der kan gemme begge typer tal. Derefter anvender DAX multiplikationen.

Afhængigt af kombinationen af datatypen kan typetvingning not anvendes til sammenligningshandlinger. Du kan se en komplet liste over de datatyper, der understøttes af DAX, under Datatyper, der understøttes i tabelmodellerandDatatyper i Power BI Desktop.

Integer, Real Number, Currency, Date/timeandBlank betragtes som numerisk til sammenligningsformål. Blank evalueres til nul, når der udføres en sammenligning. Følgende kombinationer af datatyper understøttes for sammenligningshandlinger.

datatype Left side datatype Right side
Numerisk Numerisk
Boolesk Boolesk
Streng Streng

Andre sammenligninger af blandede datatyper returnerer en error. En formel som f.eks. ="1" > 0 returnerer f.eks. en error, der angiver, at DAX sammenligningshandlinger not understøtter sammenligning af values af typen Tekst med values af typen Heltal.

Datatyper, der bruges i DAX Datatyper, der bruges i Excel
Tal (I8, R8) Tal (R8)
Streng Streng
Boolesk Boolesk
DateTime Variant
Currency Currency

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 not, f.eks. procent. Områder understøttes også not.

Når du kopierer and indsætte formler fra Excel, skal du derfor sørge for at gennemse formlen omhyggeligt, da nogle operatorer or elementer i formlerne not være 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 and fjerne enhver tvetydighed i resultatet.

syntaks
DAX navngivning af parametre