Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Språket dataanalysuttryck (DAX) använder operatorer för att skapa uttryck som jämför värden, utföra aritmetiska beräkningar eller arbeta med strängar.
Typer av operatorer
Det finns fyra olika typer av beräkningsoperatorer: aritmetik, jämförelse, textsammanfogning och logisk.
Aritmetiska operatorer
För att utföra grundläggande matematiska operationer som addition, subtraktion eller multiplikation; kombinera tal; och ger numeriska resultat använder du följande aritmetiska operatorer.
Aritmetikoperator | Betydelse | Exempel |
---|---|---|
+ (plustecken) |
Addition | 3+3 |
- (minustecken) |
Subtraktion eller tecken | 3-1-1 |
* (asterisk) |
Multiplikation | 3*3 |
/ (snedstreck) |
Division | 3/3 |
^ (caret) |
Exponentiering | 16^4 |
Notera
Plustecknet kan fungera både som en binär operator och som en unär operator. En binär operator kräver tal på båda sidor av operatorn och utför addition. När du använder värden i en DAX formel på båda sidor av den binära operatorn DAX försöker du omvandla värdena till numeriska datatyper om de inte redan är tal. Däremot kan den unary operatorn tillämpas på alla typer av argument. Plussymbolen påverkar inte typen eller värdet och ignoreras helt enkelt, medan minusoperatorn skapar ett negativt värde om det tillämpas på ett numeriskt värde.
Jämförelseoperatorer
Du kan jämföra två värden med följande operatorer. När två värden jämförs med dessa operatorer är resultatet ett logiskt värde, antingen TRUE
eller FALSE
.
Jämförelseoperator | Betydelse | Exempel |
---|---|---|
= |
Lika med | [Region] = "USA" |
== |
Strikt lika med | [Region] == "USA" |
> |
Större än | [Försäljningsdatum] > "Jan 2009" |
< |
Mindre än | [Försäljningsdatum] < "1 januari 2009" |
>= |
Större än eller lika med | [Belopp] >= 20000 |
<= |
Mindre än eller lika med | [Belopp] <= 100 |
<> |
Inte lika med | [Region] <> "USA" |
Alla jämförelseoperatorer utom == behandlar BLANK som lika med nummer 0, tom sträng "", DATE(1899, 12, 30) eller FALSE
. Därför är [Kolumn] = 0 sant när värdet för [Kolumn] är antingen 0 eller BLANK. [Kolumn] == 0 är däremot bara sant när värdet för [Kolumn] är 0.
Textsammanfogningsoperator
Använd ampersand (&
) för att koppla ihop, eller sammanfoga, två eller flera textsträngar för att skapa en enda textsträng.
Textoperator | Betydelse | Exempel |
---|---|---|
& (et-tecken) |
Ansluter, eller sammanfogar, två värden för att skapa ett kontinuerligt textvärde | [Region] & ", " & [City] |
Logiska operatorer
Använd logiska operatorer (&&
) och (||
) för att kombinera uttryck för att skapa ett enda resultat.
Textoperatör | Betydelse | Exempel |
---|---|---|
&& (dubbla et-tecken) |
Skapar ett AND villkor mellan två uttryck som var och en har ett booleskt resultat. Om båda uttrycken returnerar TRUE returnerar kombinationen av uttrycken även TRUE ; annars returnerar kombinationen FALSE . |
([Region] = "France") && ([BikeBuyer] = "yes")) |
|| (dubbelrörssymbol) |
Skapar ett OR villkor mellan två logiska uttryck. Om något av uttrycken returnerar TRUE blir 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 och prioritetsordning
I vissa fall kan den ordning i vilken beräkningen utförs påverka returvärdet. Därför är det viktigt att förstå hur ordningen bestäms och hur du kan ändra ordningen för att få önskat resultat.
Beräkningsordning
Ett uttryck utvärderar operatorerna och värdena i en viss ordning. Alla uttryck börjar alltid med ett likhetstecken (=). Likhetstecknet anger att de efterföljande tecknen utgör ett uttryck.
Efter likhetstecknet följer de element som ska beräknas (operanderna), som avgränsas med beräkningsoperatorer. Uttryck läses alltid från vänster till höger, men ordningen i vilken elementen grupperas kan i viss mån styras med parenteser.
Operatorprioritet
Om du kombinerar flera operatorer i en enda formel sorteras åtgärderna enligt följande tabell. Om operatorerna har samma prioritetsvärde sorteras de från vänster till höger. Om ett uttryck till exempel innehåller både en multiplikations- och divisionsoperator utvärderas de i den ordning som de visas i uttrycket, från vänster till höger.
Operatör | Beskrivning |
---|---|
^ |
Exponentiering |
– |
Tecken (till exempel –1) |
* och / |
Multiplikation och division |
+ och – |
Addition och 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 omsluta den del av formeln som måste beräknas först med parenteser. Följande formel genererar till exempel 11 eftersom multiplikation beräknas före addition. Formeln multiplicerar 2 med 3 och lägger sedan till 5 i resultatet.
=5+2*3
Om du däremot använder parenteser för att ändra syntaxen ändras ordningen så att 5 och 2 läggs ihop och resultatet multipliceras med 3 för att skapa 21.
=(5+2)*3
I följande exempel tvingar parenteserna runt den första delen av formeln beräkningen att utvärdera uttrycket (3 + 0.25)
först och sedan dividera resultatet med resultatet av uttrycket, (3 - 0.25)
.
=(3 + 0.25)/(3 - 0.25)
I följande exempel tillämpas exponenteringsoperatorn först, enligt reglerna för prioritet för operatorer, och sedan tillämpas teckenoperatorn. Resultatet för det här uttrycket är -4.
=-2^2
För att säkerställa att teckenoperatorn tillämpas på det numeriska värdet först kan 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 och jämför enkelt olika datatyper, ungefär som Microsoft Excel. Den underliggande beräkningsmotorn baseras dock på SQL Server Analysis Services och tillhandahåller ytterligare avancerade funktioner i ett relationsdatalager, inklusive mer omfattande stöd för datum- och tidstyper. I vissa fall kanske resultatet av beräkningar eller funktionsbeteendet inte är samma som i Excel. Dessutom stöder DAX fler datatyper än excel. I det här avsnittet beskrivs de viktigaste skillnaderna.
Tvinga datatyper på operander
Generellt bör de två operanderna på vänster och höger sida av en operator vara av samma datatyp. Men om datatyperna är olika DAX konverteras de till en gemensam datatyp för att tillämpa operatorn i vissa fall:
- Båda operanderna konverteras till den största möjliga gemensamma datatypen.
- Operatorn tillämpas om möjligt.
Anta till exempel att du har två tal som du vill kombinera. Ett tal är resultatet av en formel, till exempel =[Price] * .20
, och resultatet kan innehålla många decimaler. Det andra talet är ett heltal som har angetts som ett strängvärde.
I det här fallet DAX konverterar båda talen till verkliga tal i ett numeriskt format, med det största numeriska formatet som kan lagra båda typerna av tal. Sedan tillämpar DAX multiplikationen.
Beroende på kombinationen av datatyp kan det hända att typtvång inte 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 tabellmodeller och datatyper i Power BI Desktop.
Heltal, Real Number, Currency, Date/time och Blank anses vara numeriska i jämförelsesyfte. Ett tomt värde utvärderas till noll vid en jämförelse. Följande kombinationer av datatyp stöds för jämförelseåtgärder.
Datatyp på vänster sida | Datatyp på höger sida |
---|---|
Numerisk | Numerisk |
Boolesk | Boolesk |
Sträng | Sträng |
Andra jämförelser av blandade datatyper returnerar ett fel. En formel som ="1" > 0 returnerar till exempel ett fel som anger att DAX jämförelseåtgärder inte stöder jämförelse av värden av typen Text med värden 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 |
Valuta | Valuta |
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 inte, till exempel procent. Dessutom stöds inte intervall.
När du kopierar och klistrar in formler från Excel bör du därför granska formeln noggrant eftersom vissa operatorer eller element i formler kanske inte är giltiga. När det råder tvivel om i vilken ordning åtgärderna utförs rekommenderar vi att du använder parenteser för att kontrollera ordningen på åtgärder och ta bort eventuella tvetydigheter om resultatet.