Slik skriver du DAX-formler i Power BI

Lær grunnleggende DAX i Power BI: syntaks, SUM, COUNT, DISTINCTCOUNT og datofunksjoner. Praktiske eksempler og gratis video.

Du har nettopp bygget din første rapport i Power BI, men tallene i tabellen viser bare rå data. Du trenger en sum av salg, antall unike kunder og en beregning som alltid viser inneværende år. Det er her DAX kommer inn.

Hva er DAX?

DAX står for Data Analysis Expressions og er formelspråket som driver alle beregninger i Power BI. Hver gang du lager et measure, en kalkulert kolonne eller en beregnet tabell, skriver du DAX. Syntaksen minner om Excel-formler, men DAX er bygget for å jobbe med tabeller og relasjoner i stedet for enkelceller.

En DAX-formel starter alltid med likhetstegn. Etter likhetstegnet skriver du en funksjon, og inne i parentesen angir du argumentene funksjonen trenger. Enkelt eksempel:

Total Salg = SUM(Salg[Beloep])

Her er SUM funksjonen, Salg er tabellnavnet og Beloep er kolonnen. Hakeparentesene rundt kolonnenavnet er standard DAX-syntaks når du refererer til en kolonne i en bestemt tabell.

Operatorer du bruker daglig

DAX støtter de vanlige matematiske operatorene: pluss (+), minus (-), gange (*) og dele (/). Du kan også bruke sammenligningsoperatorer som større enn (>), mindre enn (<) og lik (=). Disse dukker opp overalt, fra enkle summeringer til betingede beregninger med IF-funksjonen.

Tekstoperatoren & setter sammen tekst. Skal du kombinere fornavn og etternavn i en kalkulert kolonne, skriver du:

Fullt Navn = Ansatte[Fornavn] & " " & Ansatte[Etternavn]

Logiske operatorer som && (og) og || (eller) lar deg sette sammen flere vilkår i IF- og FILTER-funksjoner.

Grunnleggende funksjoner

De funksjonene du kommer til å bruke oftest i starten er overraskende få. SUM legger sammen alle verdier i en kolonne. COUNT teller antall rader som har en verdi. DISTINCTCOUNT teller antall unike verdier, noe som er uvurderlig når du vil vite hvor mange forskjellige produkter som er solgt eller hvor mange kunder som har handlet.

Et konkret eksempel: Du har en salgstabell og vil vite hvor mange unike produkter som ble solgt.

Unike Produkter = DISTINCTCOUNT(Salg[ProduktID])

Legger du dette measuret inn i en matrise sammen med en slicer for region, ser du automatisk antall unike produkter per region. DAX reagerer på filterkonteksten i rapporten uten at du trenger å gjøre noe ekstra.

Datofunksjoner for dynamiske rapporter

TODAY() returnerer dagens dato og NOW() returnerer dato og klokkeslett. YEAR() trekker ut årstallet fra en dato. Disse funksjonene er nyttige når du vil lage beregninger som alltid er oppdaterte.

Si at du vil lage et measure som viser salg bare for inneværende år. Da kombinerer du CALCULATE med en YEAR-filtrering:

Salg Dette Aaret = CALCULATE(SUM(Salg[Beloep]), YEAR(Salg[Dato]) = YEAR(TODAY()))

Hver gang noen åpner rapporten, beregner Power BI dette measuret basert på dagens dato. Du slipper å oppdatere filtre manuelt ved årsskiftet.

SUM vs. SUMX

SUM er enkel: den legger sammen alle verdier i en kolonne. SUMX er en iterator som går gjennom tabellen rad for rad og evaluerer et uttrykk for hver rad før den summerer resultatet. Forskjellen blir tydelig når du trenger å gange to kolonner sammen.

Skal du beregne total omsetning der hver rad har antall og pris, fungerer ikke SUM alene. Du trenger SUMX:

Total Omsetning = SUMX(Salg, Salg[Antall] * Salg[Pris])

SUMX tar tabellen Salg som første argument og uttrykket Salg[Antall] * Salg[Pris] som andre. Den evaluerer uttrykket for hver rad og summerer sluttresultatet.

COUNT, COUNTA og COUNTROWS

COUNT teller rader der kolonnen inneholder et tall. COUNTA teller rader der kolonnen ikke er tom, uavhengig av datatype. COUNTROWS teller alle rader i en tabell, uansett innhold. Hvilket du velger avhenger av hva du faktisk vil telle.

Vil du vite hvor mange ordrer som finnes i ordretabellen, er COUNTROWS det riktige valget:

Antall Ordrer = COUNTROWS(Ordrer)

Vil du telle hvor mange ordrer som har fått et leveringsdato-stempel, bruker du COUNTA:

Leverte Ordrer = COUNTA(Ordrer[Leveringsdato])

CALCULATE endrer spillereglene

CALCULATE er den viktigste funksjonen i DAX. Den tar en beregning og endrer filterkonteksten den evalueres i. Alle de andre funksjonene blir kraftigere når du kombinerer dem med CALCULATE.

Vil du se totalt salg bare for produktkategori "Elektronikk", skriver du:

Salg Elektronikk = CALCULATE(SUM(Salg[Beloep]), Produkt[Kategori] = "Elektronikk")

CALCULATE overprøver eksisterende filtre med de du spesifiserer. Du kan legge til flere filterargumenter, og alle må være oppfylt samtidig. Funksjonen er grunnlaget for mer avanserte DAX-mønstre som tidsintelligensfunksjoner og virtuelle tabeller.

Vanlige feil og hvordan du unngår dem

Den vanligste feilen er å glemme tabellreferansen. DAX krever at du skriver Tabell[Kolonne], ikke bare kolonnenavnet. Utelater du tabellen, kan Power BI gjette feil eller gi en feilmelding.

En annen klassiker er å dele på null. DAX returnerer en feil hvis nevneren er null. Bruk DIVIDE-funksjonen i stedet for vanlig deling:

Margin = DIVIDE(Salg[Fortjeneste], Salg[Omsetning], 0)

Det tredje argumentet er verdien som returneres hvis nevneren er null. Enkel forsikring mot stygge feilmeldinger i rapporten.

Neste steg

Når du har kontroll på grunnleggende DAX-syntaks, er neste steg å forstå forskjellen mellom measures og kalkulerte kolonner. Measures beregnes dynamisk basert på filterkontekst, mens kalkulerte kolonner lagres i tabellen. Valget mellom dem påvirker både ytelse og fleksibilitet.

For en fullstendig oversikt over alle tilgjengelige funksjoner kan du bruke Microsofts offisielle DAX-referanse. Den dekker hver funksjon med eksempler og forklaringer.

Vil du lære DAX fra bunnen av med praktiske oppgaver og videoer? Power BI-kurset tar deg gjennom alt fra grunnleggende formler til avanserte beregninger, med reelle datasett du kan følge med på.