Skriva DAX-formler

Slutförd

Varje modells beräkningstyp, beräknad tabell, beräknad kolumn eller mått definieras med dess namn, följt av symbolen lika med (=), som sedan följs av en DAX-formel. Använd följande mall för att skapa en modellberäkning:

<Calculation name> = <DAX formula>

Definitionen av den beräknade tabellen Transportdatum som duplicerar datumtabelldata är till exempel:

Ship Date = 'Date'

En DAX-formel består av uttryck som returnerar ett resultat. Resultatet är antingen ett tabellobjekt eller ett skalärt värde. Formler för beräknade tabeller måste returnera ett tabellobjekt. beräknade kolumn- och måttformler måste returnera ett skalärt värde (enskilt värde).

Formler sätt ihop med hjälp av:

  • DAX-funktioner
  • DAX-operatorer
  • Referenser till modellobjekt
  • Konstanta värden, till exempel talet 24 eller literaltexten "FY" (förkortning för räkenskapsåret)
  • DAX-variabler
  • Blanksteg

Tips

När du anger DAX-formler i Power BI Desktop har du fördelen med IntelliSense. IntelliSense är kodskrivningshjälp som visar funktioner och modellresurser. När du väljer en DAX-funktion ger den också en definition och en beskrivning. Vi rekommenderar att du använder IntelliSense för att snabbt bygga korrekta formler.

DAX-funktioner

Precis som i Microsoft Excel är DAX ett funktionellt språk, vilket innebär att formler förlitar sig på funktioner för att uppnå specifika mål. DAX-funktioner har vanligtvis argument som tillåter att variabler skickas. Formler kan använda många funktionsanrop och kapslar ofta in funktioner i andra funktioner.

I en formel måste funktionsnamn följas av parenteser. Variablerna placeras inom parentesen.

Anteckning

Vissa funktioner tar inte argument, eller så kan argument vara valfria.

Att arbeta med DAX-funktioner beskrivs senare i den här modulen.

DAX-operatorer

Formler förlitar sig också på operatorer som kan utföra aritmetiska beräkningar, jämföra värden, arbeta med strängar eller testvillkor.

DAX-operatörer beskrivs mer detaljerat senare i den här modulen.

Referenser till modellobjekt

Formler kan bara referera till tre typer av modellobjekt: tabeller, kolumner eller mått. En formel kan inte referera till en hierarki eller hierarkinivå. (Kom ihåg att en hierarkinivå baseras på en kolumn, så formeln kan referera till en hierarkinivås kolumn.)

Tabellreferenser

När du refererar till en tabell i en formel omges tabellnamnet officiellt av enkla citattecken. Observera att tabellen Datum omges av enkla citattecken i följande definition av den beräknade tabellen.

Ship Date = 'Date'

De enkla citattecknen kan dock utelämnas om båda följande villkor är uppfyllda:

  1. Tabellnamnet innehåller inte några inbäddade blanksteg.
  2. Tabellnamnet är inte ett reserverat ord som används av DAX. Alla DAX-funktionsnamn och -operatorer är reserverade ord. Datum är ett DAX-funktionsnamn, vilket förklarar varför du måste omge den inom enkla citattecken när du refererar till en tabell med namnet Datum.

I följande definition av den beräknade tabellen går det att utelämna enkla citattecken när du refererar till airporttabellen :

Arrival Airport = Airport

Kolumnreferenser

När du refererar till en kolumn i en formel måste kolumnnamnet omges av hakparenteser. Det kan också föregås av sitt tabellnamn. Till exempel refererar följande måttdefinition till kolumnen Försäljningsbelopp.

Revenue = SUM([Sales Amount])

Eftersom kolumnnamn är unika inom en tabell men inte nödvändigt vis är unika i modellen, kan du skilja kolumnreferensen åt genom att låta följa den föregås av tabellnamnet. Den här särskilda kolumnen kallas för en fullständigt kvalificerad kolumn. Vissa DAX-funktioner måste skickas som fullständigt kvalificerade kolumner.

Tips

För att förbättra formlernas läsbarhet rekommenderar vi att du alltid låter en kolumnreferens föregås av tabellnamnet.

Det föregående exemplet på en måttdefinition kan skrivas om som:

Revenue = SUM(Sales[Sales Amount])

Måttreferenser

När du refererar till ett mått i en formel, till exempel kolumnnamnsreferenser, måste måttnamnet omges av hakparenteser. Till exempel refererar följande måttdefinition till måtten Intäkter och Kostnad.

Profit = [Revenue] - [Cost]

Om du är nybörjare på DAX kan det faktum att kolumn- och måttreferenser alltid omges av hakparenteser orsaka förvirring när du försöker läsa en formel. Men när du blir kunnig med grunderna i DAX kan du avgöra vilken typ av objekt det är eftersom kolumner och mått i DAX används på olika sätt i DAX-formler.

Tips

Det går att skriva låta en måttreferens föregås av dess tabellnamn. Mått är dock ett objekt på modellnivå. De är kopplade till en starttabell, men det är bara en kosmetisk relation för att logiskt organisera måtten i fönstret i Fält.

Därför rekommenderar vi att du alltid låter en kolumnreferens föregås av dess tabellnamn, det omvända gäller för mått: Vi rekommenderar att du aldrig låter en måttreferens föregås av dess tabellnamn.

Mer information finns i Kolumn- och måttreferenser.

DAX-variabler

Formler kan deklarera DAX-variabler för att lagra resultat.

Hur och när du ska använda DAX-variabler beskrivs senare i den här modulen.

Blanksteg

Blanksteg refererar till tecken som du kan använda för att formatera formler på ett sätt som är snabbt och enkelt att förstå. Blankstegstecken omfattar:

  • Mellanslag
  • Tabbar
  • Vagnreturer

Blanksteg är valfritt och ändrar inte din formellogik eller påverkar prestandan negativt. Vi rekommenderar starkt att du använder en formatmall och tillämpar den konsekvent och tänker på följande rekommendationer:

  • Använd mellanslag mellan operatorer.
  • Använd tabbar för att dra in kapslade funktionsanrop.
  • Använd vagnreturer för att särskilja funktionsargument, särskilt när det är för långt för att få plats på en enda rad. Om du formaterar på det här sättet blir det enklare att felsöka, särskilt när formeln saknar en parentes.
  • Använd hellre för många blankstegstecken än för få.

Tips

Tryck på Skift+Retur för att ange en vagnretur i formelfältet. Om du trycker på Retur ensam checkas formeln in.

Titta på följande måttdefinition som är skriven på en enda rad och som omfattar fem DAX-funktionsanrop:

Revenue YoY % = DIVIDE([Revenue] - CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date])), CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date])))

Följande exempel är samma måttdefinition, men nu har den formaterats så att den är lättare att läsa och förstå:

Revenue YoY % =
DIVIDE(
    [Revenue]
        - CALCULATE(
            [Revenue],
            SAMEPERIODLASTYEAR('Date'[Date])
    ),
    CALCULATE(
        [Revenue],
        SAMEPERIODLASTYEAR('Date'[Date])
    )
)

Testa att formatera måttet på egen hand. Öppna filen Adventure Works DW 2020 M02.pbix Power BI Desktop och expandera sedan tabellen Försäljning i fönstret Fält och välj sedan måttet Intäkt år för år i % . Använd tabb- och vagnreturtecken i formelfältet för att producera samma resultat som i föregående exempel. Kom ihåg att trycka på Skift+Retur när du lägger till en vagnretur.

Den här måttdefinitionen kan förbättras ytterligare för läsbarhet och prestanda, vilket förklaras senare i den här modulen.

Tips

Ett utmärkt formateringsverktyg från en annan källa som kan hjälpa dig att formatera beräkningarna är DAX Formatter. Med det här verktyget kan du klistra in beräkningen och formatera den. Du kan sedan kopiera den formaterade beräkningen till Urklipp och klistra in den i Power BI Desktop igen.