Använda DAX-operatorer

Slutförd

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.