Läs på engelska

Dela via


DAX operatorer

Språket Data Analysis Expression (DAX) använder operatorer för att skapa uttryck som jämför values, utför aritmetiska beräkningar or arbeta med strängar.

Typer av operatorer

Det finns fyra olika typer av beräkningsoperatorer: aritmetik, jämförelse, textsammanfogning and logiska.

Aritmetiska operatorer

För att utföra grundläggande matematiska operationer som addition, subtraktion, or multiplikation; kombinera tal; and ger numeriska resultat använder du följande aritmetiska operatorer.

Aritmetikoperator Betydelse Exempel
+ (plus sign) Addition 3+3
- (minus sign) Subtraktion orsign 3-1-1
* (asterisk) Multiplikation 3*3
/ (snedstreck) Division 3/3
^ (caret) Exponentiering 16^4

Anteckning

Plus-sign kan fungera både som en binär operatorand som en unär operator. En binär operator kräver tal på båda sidor av operatorn and utför addition. När du använder values i en DAX formel på båda sidor av den binära operatorn försöker DAX omvandla values till numeriska datatyper if de redan är not tal. Däremot kan den unary operatorn tillämpas på alla typer av argument. Plussymbolen påverkar typen not medan or,valueochand ignoreras helt enkelt, medan minusoperatorn skapar en negativ valueoch if tillämpas på ett numeriskt value.

Jämförelseoperatorer

Du kan jämföra två values med följande operatorer. När två values jämförs med dessa operatorer blir resultatet en logisk value, antingen TRUEorFALSE.

Jämförelseoperator Betydelse Exempel
= Lika med [Region] = "USA"
== Strikt lika med [Region] == "USA"
> Större än [Sales Date] > "Jan 2009"
< Mindre än [Sales Date] < "Jan 1 2009"
>= Större än or lika med [Belopp] >= 20000
<= Mindre än or lika med [Belopp] <= 100
<> Not lika med [Region] <> "USA"

All jämförelseoperatorer except == behandla BLANK som lika med nummer 0, tom sträng "", DATE(1899, 12, 30), orFALSE. Därför blir [Kolumn] = 0 true när value av [Kolumn] är antingen 0 orBLANK. [Kolumn] == 0 är däremot bara true när value för [Kolumn] är 0.

Textsammanfogningsoperator

Använd et-et (&) för att ansluta, orconcatenate, två or fler textsträngar för att skapa en enda textdel.

Textoperator Betydelse Exempel
& (et-tecken) Kopplar, or konkatenerar, två values för att skapa en kontinuerlig text value [Region] & ", " & [City]

Logiska operatorer

Använd logiska operatorer (&&) and (||) för att kombinera uttryck för att skapa ett enda resultat.

Textoperator Betydelse Exempel
&&(dubbla et-tecken) Skapar ett AND villkor mellan två uttryck som var och en har ett booleskt resultat. If returnerar båda uttrycken TRUE, kombinationen av uttrycken returnerar också TRUE; annars returnerar kombinationen FALSE. ([Region] = "France") && ([BikeBuyer] = "yes"))
|| (dubbelrörssymbol) Skapar ett OR villkor mellan två logiska uttryck. If båda uttrycken returnerar TRUEblir resultatet TRUE; endast när båda uttrycken är FALSE är resultatet FALSE. (([Region] = "France") || ([BikeBuyer] = "yes"))
IN Skapar ett logiskt OR villkor mellan varje rad som jämförs med en tabell. Obs! Tabellkonstruktorns syntax använder klammerparenteser. 'Product'[Color] IN { "Red", "Blue", "Black" }

Operatorer and prioritetsordning

I vissa fall kan den ordning i vilken beräkningen utförs påverka Return value; Därför är det viktigt att förstå hur ordningen bestäms and hur du kan ändra ordningen för att få önskat resultat.

Beräkningsordning

Ett uttryck utvärderar operatorerna andvalues i en viss ordning. All uttryck börjar alltid med lika med-tecknet sign (=). Det lika med sign visar att de efterföljande tecknen utgör ett uttryck.

Efter likhetstecken sign är de element som ska beräknas (operanderna), som avgränsas med beräkningsoperatorer. Uttryck läses alltid från left till right, men den ordning i vilken elementen grupperas kan styras i viss utsträckning med hjälp av parenteser.

Operatorprioritet

If du kombinerar flera operatorer i en enda formel sorteras åtgärderna enligt följande tabell. If operatorerna har samma prioritet valuesorteras de från left till right. Till exempel if ett uttryck contains både en multiplikationsoperator och and division, utvärderas i den ordning de visas i uttrycket, från left till right.

Operatör Beskrivning
^ Exponentiering
Sign (till exempel –1)
* and / Multiplikation and division
+ and Addition and subtraktion
& Ansluter två textsträngar (sammanlänkning)
=,==,<,>,<=,>=,<>,IN Jämförelse
NOT NOT (unär operator)

Använda parenteser för att styra beräkningsordningen

Om du vill ändra utvärderingsordningen bör du sätta den del av formeln som måste beräknas inom parenteser first. Följande formel genererar till exempel 11 eftersom multiplikation beräknas före addition. Formeln multiplicerar 2 med 3, and lägger sedan till 5 i resultatet.

=5+2*3  

Däremot if du använder parenteser för att ändra syntaxen ändras ordningen så att 5 and 2 läggs ihop, and resultatet multiplicerat med 3 för att skapa 21.

=(5+2)*3  

I följande exempel tvingar parenteserna runt den first delen av formeln beräkningen att evaluate uttrycket (3 + 0.25)firstand och sedan divide resultatet av uttryckets resultat (3 - 0.25).

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

I följande exempel tillämpas exponenteringsoperatorn first, enligt prioritetsreglerna för operatorer, and sedan tillämpas sign operatorn. Resultatet för det här uttrycket är -4.

=-2^2  

För att säkerställa att sign-operatorn tillämpas på den numeriska valuefirstkan du använda parenteser för att styra operatorer, som du ser i följande exempel. Resultatet för det här uttrycket är 4.

= (-2)^2  

Kompatibilitet

DAX hanterar enkelt and och jämför olika datatyper, ungefär som Microsoft Excel. Den underliggande beräkningsmotorn baseras dock på SQL Server Analysis Services and tillhandahåller ytterligare avancerade funktioner i ett relationsdatalager, inklusive mer omfattande stöd för dateandtime typer. I vissa fall kan därför resultatet av beräkningar or funktionsbeteendet not vara detsamma som i Excel. Dessutom stöder DAX fler datatyper än excel. I det här avsnittet beskrivs de viktigaste skillnaderna.

Tvinga datatyper av operander

I allmänhet bör de två operanderna på leftandright sidor av alla operatorer vara samma datatyp. Men if datatyperna skiljer sig. DAX kommer att convert dem till en gemensam datatyp för att tillämpa operatorn i vissa fall.

  1. Båda operanderna konverteras till den största möjliga gemensamma datatypen.
  2. Operatorn tillämpas, if är möjligt.

Anta till exempel att du har två tal som du vill kombinera. En siffra är resultatet av en formel, såsom =[Price] * .20, and, och resultatet kan innehålla många decimaler. Det andra talet är ett heltal som har angetts som en sträng value.

I det här fallet convertDAX båda talen till verkliga tal i ett numeriskt format, med hjälp av den största numeriska format som kan lagra båda typerna av tal. Sedan tillämpar DAX multiplikationen.

Beroende på kombinationen av datatyp kan typtvång not tillämpas för jämförelseåtgärder. En fullständig lista över datatyper som stöds av DAXfinns i Datatyper som stöds i tabellmodellerandDatatyper i Power BI Desktop.

Heltal, realnummer, Currency, Date/timeandBlank betraktas som numeriska i jämförelsesyfte. Blank utvärderas till noll när du utför en jämförelse. Följande kombinationer av datatyp stöds för jämförelseåtgärder.

Left Sidodatatyp Right Sidodatatyp
Numerisk Numerisk
Boolesk Boolesk
Sträng Sträng

Andra jämförelser av blandade datatyper returnerar en error. En formel som ="1" > 0 returnerar till exempel en error som anger att DAX jämförelseåtgärder not stöd för att jämföra values av typen Text med values av typen Heltal.

Datatyper som används i DAX Datatyper som används i Excel
Tal (I8, R8) Tal (R8)
Sträng Sträng
Boolesk Boolesk
DatumTid Variant
Currency Currency

Skillnader i prioritetsordning

Prioritetsordningen för åtgärder i DAX formler är i princip densamma som den som används av Microsoft Excel, men vissa Excel-operatorer stöds not, till exempel procent. Dessutom stöds intervall not.

När du kopierar and och klistrar in formler från Excel bör du därför granska formeln noggrant, eftersom vissa operatorer och or element i formler kan not vara giltiga. När det råder tvivel om i vilken ordning åtgärder utförs rekommenderar vi att du använder parenteser för att styra ordningen på åtgärder and ta bort eventuella tvetydigheter om resultatet.

DAX syntax
DAX namngivning av parametrar