Använda DAX-operatorer
Dina DAX-formler kan använda operatorer för att skapa uttryck som utför aritmetiska beräkningar, jämför värden, arbetar med strängar eller testvillkor.
Tips
Många DAX-operatorer och prioritetsordningar är desamma som de som finns i Excel.
Aritmetiska operatorer
I följande tabell visas de aritmetiska operatorerna.
Operator | Beskrivning |
---|---|
+ | Addition |
- | Subtraktion |
* | Multiplikation |
/ | Division |
^ | Exponentiering |
Kom ihåg att när du delar upp två uttryck, och när nämnaren kan returnera noll eller BLANK, är det effektivare och säkrare att använda DIVIDE
DAX-funktionen.
Jämförelseoperatorer
I följande tabell visas jämförelseoperatorer som används för att jämföra två värden. Resultatet är antingen TRUE eller FALSE.
Operator | Beskrivning |
---|---|
= | Lika med |
== | Strikt lika med |
> | Större än |
< | Mindre än |
>= | Större än eller lika med |
<= | Mindre än eller lika med |
<> | Inte lika med |
Alla jämförelseoperatorer, förutom strikt lika med (==), behandlar BLANK som lika med siffran noll, en tom sträng (””), datumet den 30 december, 1899 eller FALSE. Det innebär att uttrycket [Revenue] = 0
är TRUE när värdet [Revenue]
för är antingen noll eller BLANK. Däremot [Revenue] == 0
är true endast när värdet [Revenue]
för är noll.
Operator för textsammanlänkning
Använd et-tecknet (&) för att ansluta eller sammanfoga två textvärden för att skapa ett kontinuerligt textvärde. Se till exempel på följande definition av en beräknad kolumn:
Model Color = 'Product'[Model] & "-" & 'Product'[Color]
Logiska operatorer
Använd logiska operatorer för att kombinera uttryck som ger ett enda resultat. I följande tabell visas alla logiska operatorer.
Operator | Beskrivning |
---|---|
&& | Skapar ett AND-villkor mellan två uttryck där varje har ett booleskt resultat. Om båda uttrycken returnerar TRUE returnerar kombinationen av uttrycken även TRUE; annars returnerar kombinationen FALSE. |
|| (dubbelrör) | Skapar ett OR-villkor mellan två logiska uttryck. Om något av uttrycken returnerar TRUE är resultatet TRUE. Resultatet är bara FALSE om båda uttrycken är FALSE. |
IN | Skapar ett logiskt OR-villkor mellan varje rad som jämförs med en tabell. Obs! Syntaxen i tabellkonstruktören använder klammerparenteser. |
NOT | Inverterar tillståndet för ett booleskt uttryck (FALSE till TRUE och tvärtom). |
Ett exempel som använder den IN
logiska operatorn är ANZ Revenue-måttdefinitionenCALCULATE
, som använder DAX-funktionen för att framtvinga ett specifikt filter med två länder: Australien och Nya Zeeland.
Anteckning
Du kommer att introduceras för den kraftfulla CALCULATE
funktionen när du lär dig hur du ändrar filterkontexten.
ANZ Revenue =
CALCULATE(
[Revenue],
Customer[Country-Region] IN {
"Australia",
"New Zealand"
}
)
Prioritet för operator
När DAX-formeln innehåller flera operatorer, använder DAX regler för att fastställa utvärderingsordningen, som kallas för en operatörs prioritet. Operationerna ordnas enligt följande tabell.
Operator | Beskrivning |
---|---|
^ | Exponentiering |
- | Tecken (som i -1) |
* och / | Multiplikation och division |
NOT | NOT |
+ och - | Addition och subtraktion |
& | Sammanfogning av två textsträngar |
=,==,<,>,<=,>=,<> | Jämförelse |
När operatorerna har samma prioritetsvärde sorteras de från vänster till höger.
I allmänhet är operatorprioritet detsamma som i Excel. Om du behöver åsidosätta utvärderingsordningen kan du gruppera åtgärder inom parentes.
Se till exempel på följande definition av en beräknad kolumn:
Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * 1 - [Unit Price Discount Pct]
Detta exempel på en definition på en beräknad kolumn ger ett felaktigt resultat eftersom multiplikationen utförs före subtraktionen. Följande korrekta definition på den beräknade kolumnen använder parenteser för att se till att subtraktionen utförs före multiplikationen.
Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * (1 - [Unit Price Discount Pct])
Tips
Det kan vara svårt att komma ihåg prioritetsreglerna för operatorer, särskilt för DAX-nybörjare. Därför rekommenderar vi att du testar dina formler noggrant. När formlerna inte genererar rätt resultat på grund av en felaktig utvärderingsordning kan du experimentera genom att lägga till parenteser för att justera utvärderingsordningen. Du kan också lägga till parenteser för att förbättra läsbarheten i dina formler.
Mer information om DAX-operatorer och prioritetsordning finns i DAX-operatorer.
Implicit konvertering
När du skriver en DAX-formel som använder operatorer för att kombinera olika datatyper behöver du inte uttryckligen konvertera typer. Normalt identifierar DAX automatiskt datatyperna för refererade modellobjekt och utför implicita konverteringar om det behövs för att slutföra den angivna åtgärden.
Det kan dock finnas vissa begränsningar för de värden som kan konverteras. Om ett värde eller en kolumn har en datatyp som inte är kompatibel med den aktuella åtgärden returnerar DAX ett fel. Försöket att multiplicera ett datumvärde skapar till exempel ett fel eftersom det inte är logiskt.
BLANK hanteras på olika sätt beroende på vilken operator som används. Den hanteras på liknande sätt som i Excel, men skiljer sig från hur databaser (SQL) behandlar NULL. BLANK behandlas som noll när det används av aritmetiska operatorer och som en tom sträng när det sammanfogas till en sträng.
Tips
Det kan vara svårt att komma ihåg hur BLANK hanteras, särskilt för DAX-nybörjare. Därför rekommenderar vi att du testar dina formler noggrant. När BLANK:er skapar oväntade resultat bör du överväga att använda IF
dax- och ISBLANK
dax-funktionerna för att testa blank och sedan svara på ett lämpligt sätt.