Skriv DAX-formler

Fuldført

Hver modelberegningstype, beregnet tabel, beregnet kolonne eller måling defineres ud fra sit navn efterfulgt af lighedstegnet (=), som igen efterfølges af en DAX-formel. Brug følgende skabelon til at oprette en modelberegning:

<Calculation name> = <DAX formula>

Definitionen af den beregnede tabel Ship Date , der duplikerer dataene i tabellen Date , er f.eks.:

Ship Date = 'Date'

En DAX-formel består af udtryk, der returnerer et resultat. Resultatet er enten et tabelobjekt eller en skalarværdi. Formler for beregnede tabeller skal returnere et tabelobjekt. formler for beregnede kolonner og målinger skal returnere en skalarværdi (enkelt værdi).

Formler samles ved hjælp af:

  • DAX-funktioner
  • DAX-operatorer
  • Referencer til modelobjekter
  • Konstantværdier, f.eks. tallet 24 eller konstantteksten "FY" (forkortelse for regnskabsår)
  • DAX-variabler
  • Mellemrum

Tip

Når du indtaster DAX-formler i Power BI Desktop, har du fordel af IntelliSense. IntelliSense er en hjælp til kodefuldførelse, der viser funktioner og modelressourcer. Når du vælger en DAX-funktion, får du også en definition og en beskrivelse. Vi anbefaler, at du bruger IntelliSense, så du hurtigt kan oprette nøjagtige formler.

DAX-funktioner

På samme måde som Microsoft Excel er DAX et funktionelt sprog, hvilket betyder, at formler er afhængige af funktioner for at nå bestemte mål. DAX-funktioner har typisk argumenter, der tillader overførsel af variabler. Formler kan bruge mange funktionskald og indlejrer ofte funktioner i andre funktioner.

I en formel skal funktionsnavne efterfølges af parenteser. Variablerne angives i parentesen.

Bemærk

Nogle funktioner kræver ikke argumenter, eller argumenter kan være valgfri.

Arbejde med DAX-funktioner beskrives senere i dette modul.

DAX-operatorer

Formler er også afhængige af operatorer, som kan udføre aritmetiske beregninger, sammenligne værdier, arbejde med strenge eller teste betingelser.

DAX-operatorer beskrives mere detaljeret senere i dette modul.

Referencer til modelobjekter

Formler kan kun referere til tre typer modelobjekter: tabeller, kolonner og målinger. En formel kan ikke referere til et hierarki eller et hierarkiniveau. Husk, at et hierarkiniveau er baseret på en kolonne, så formlen kan referere til et hierarkiniveaus kolonne.

Tabelreferencer

Når du refererer til en tabel i en formel officielt, er tabelnavnet omsluttet af enkelte anførselstegn. I følgende definition af en beregnet tabel kan du se, at tabellen Date er omsluttet af enkelte anførselstegn.

Ship Date = 'Date'

Enkelte anførselstegn kan dog udelades, når følgende betingelser er opfyldt:

  1. Tabelnavnet indeholder ikke integrerede mellemrum.
  2. Tabelnavnet er ikke et reserveret ord, der bruges af DAX. Alle DAX-funktionsnavne og -operatorer er reserverede ord. Date er et DAX-funktionsnavn, hvilket forklarer, hvorfor du skal omslutte den i enkelte anførselstegn, når du refererer til en tabel med navnet Date.

I følgende definition af en beregnet tabel er det muligt at udelade de enkelte anførselstegn, når der refereres til tabellen Lufthavn :

Arrival Airport = Airport

Kolonnereferencer

Når du refererer til en kolonne i en formel, skal kolonnenavnet være omsluttet af kantede parenteser. Alternativt kan dens tabelnavn være foranstillet. Følgende målingsdefinition refererer f. eks. til kolonnen Sales Amount.

Revenue = SUM([Sales Amount])

Da kolonnenavne er entydige i en tabel, men ikke nødvendigvis entydige i modellen, kan du gøre kolonnereferencen utvetydig ved at foranstille dens tabelnavn. Denne utvetydige kolonne kaldes en fuldt kvalificeret kolonne. Nogle DAX-funktioner kræver angivelse af fuldt kvalificerede kolonner.

Tip

Hvis du vil forbedre læsbarheden af dine formler anbefaler vi, at du altid foranstiller en kolonnereferences tabelnavn.

Det tidligere eksempel på en målingsdefinition kan omskrives som:

Revenue = SUM(Sales[Sales Amount])

Målingsreferencer

Når du refererer til en måling i en formel, f.eks. referencer til kolonnenavne, skal målingsnavnet være omsluttet af kantede parenteser. Følgende målingsdefinition refererer f. eks. til målingerne Revenue og Cost.

Profit = [Revenue] - [Cost]

Hvis du er DAX-begynder, kan det faktum, at kolonne- og målingsreferencer altid er omsluttet af kantede parenteser, medføre forvirring, når du forsøger at læse en formel. Men når du bliver dygtige til grundlæggende DAX-elementer, kan du afgøre, hvilken type objekt det er, fordi kolonner og målinger bruges på forskellige måder i DAX-formler.

Tip

Det er muligt at foranstille en målingsreferences tabelnavn. Målingerne er imidlertid et objekt på modelniveau. Selvom de er knyttet til en hjemmetabel, er det kun en kosmetisk relation for at organisere målinger logisk i ruden Felter.

Derfor anbefaler vi, at du altid foranstiller en kolonnereferences tabelnavn, mens det modsatte gælder for målinger: Vi anbefaler, at du aldrig foranstiller en målingsreferences tabelnavn.

Du kan finde flere oplysninger under Kolonne- og målingsreferencer.

DAX-variabler

Formler kan deklarere DAX-variabler for at lagre resultater.

Hvordan og hvornår du skal bruge DAX-variabler, beskrives senere i dette modul.

Mellemrum

Mellemrum refererer til tegn, som du kan bruge til at formatere formler på en måde, der er hurtig og nem at forstå. Blanktegn omfatter:

  • Mellemrum
  • Tabulatorer
  • Vognretur

Blanktegn er valgfri, og det ændrer ikke din formellogik eller påvirker ydeevnen negativt. Det anbefales på det kraftigste, at du vælger en formattypografi og anvender den konsekvent og overvejer følgende anbefalinger:

  • Brug mellemrum mellem operatorer.
  • Brug faner til at indrykke indlejrede funktionskald.
  • Brug vognretur til at adskille funktionsargumenter, især når de er for lange til at kunne være på en enkelt linje. Formatering på denne måde gør det lettere at foretage fejlfinding, især hvis formlen mangler en parentes.
  • Hellere for mange mellemrum end for få.

Tip

Tryk på Skift+Enter for at angive et vognretur på formellinjen. Hvis du trykker på Enter alene, bekræftes formlen.

Overvej følgende målingsdefinition, der skrives på en enkelt linje, og som omfatter fem DAX-funktionskald:

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

Følgende eksempel er den samme målingsdefinition, men nu formateret, hvilket gør den lettere at læse og forstå:

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

Prøv selv at formatere målingen. Åbn filen Adventure Works DW 2020 M02.pbix Power BI Desktop, udvid derefter tabellen Sales i ruden Felter, og vælg derefter målingen Revenue YoY %. På formellinjen skal du bruge tabulator- og vognreturtegn for at få det samme resultat som i det forrige eksempel. Når du tilføjer en vognretur, skal du huske at trykke på Skift+Enter.

Denne målingsdefinition kan forbedres yderligere for læsbarhed og ydeevne, hvilket forklares senere i dette modul.

Tip

Et fremragende formateringsværktøj fra en anden kilde, der kan hjælpe dig med at formatere dine beregninger, er DAX-formateringsfunktionen. Med dette værktøj kan du indsætte din beregning og formatere den. Du kan derefter kopiere den formaterede beregning til Udklipsholder og indsætte den i Power BI Desktop igen.