Du går i gang. Det første du tænker er: "Jeg laver en omsætningskolonne i Salg-tabellen. Antal gange enhedspris. Så har jeg den."
Det er den klassiske Excel-controllers reaktion. Det er også vejen til en langsom, oppustet model du fortryder om tre måneder. Lad mig forklare hvorfor.
Den lille forskel der gør al forskel¶
Power BI har to slags DAX-formler. De ligner hinanden på overfladen, men opfører sig fundamentalt forskelligt:
- Beregnes dynamisk når et visual viser det.
- Bruges til aggregeringer: summer, gennemsnit, andele, KPI'er.
- Eksisterer ikke som tal i din tabel - bliver først regnet ud i øjeblikket.
- Tilpasser sig automatisk til filtre, slicers, hierarkier.
Tommelfingerregel: Brug mål. Lav kun beregnede kolonner når du har en konkret grund.
Du laver ikke en beregnet kolonne der hedder Omsætning = Antal * Pris. Du laver et mål der hedder Total Omsætning = SUMX(Salg, Salg[Antal] * Salg[EnhedsPris]). Det er hvad modul 5 handler om.
Filterkontekst - DAX' vigtigste begreb¶
Inden vi går videre skal vi have ét begreb på plads. Forstår du det, kan du DAX. Forstår du det ikke, kommer du til at copy-paste formler du ikke kan tilpasse.
Forestil dig at du laver denne tabel-visual:
| Afdeling | Total Omsætning |
|---|---|
| Erhverv | 412.500 |
| Salg | 1.247.000 |
| Webshop | 689.300 |
For hver eneste celle kører Power BI samme formel - Total Omsætning. Men resultatet er forskelligt. Hvorfor?
Fordi hver celle har sin egen filterkontekst. For cellen "1.247.000" er filterkonteksten:
Salg[Afdeling] = "Salg"(det kommer fra rækkens label)
Måske er der også en slicer der filtrerer til september. Så er filterkonteksten:
Salg[Afdeling] = "Salg"Salg[Dato]mellem 1. og 30. september
Målet ser den her kombinerede filterkontekst og siger: "OK, summér de rækker."
Den sætning du skal kunne i søvne
Filterkontekst er den mængde filtre der gælder i det øjeblik et mål bliver evalueret. Filtrene kommer fra slicers, fra rækken/kolonnen i et visual, og fra DAX-funktioner som CALCULATE.
Test dig selv¶
Du har et tabel-visual med Produkter[Kategori] som rækker og målet Total Omsætning som værdi. I hver række står et tal.
Hvad er filterkonteksten for cellen ud for "Audio"?
Svar
Produkter[Kategori] = "Audio".
Power BI bruger relationen mellem Produkter og Salg til automatisk at filtrere Salg-tabellen til kun de rækker hvor produktet er audio. Det er derfor vi insisterede på at relationen var sat op rigtigt i modul 2.
Det første mål - det enkleste tænkelige¶
Lav dit første mål nu. Højreklik på Salg-tabellen i feltlisten → Nyt mål:
Tryk Enter. Træk målet ind på rapport-canvas - det giver et stort tal. Tilføj Afdeling som filter eller række - nu varierer tallet. Du har lige set filterkontekst i aktion.
Klar til det første rigtige problem? CFO'en vil have salgsafdelingen låst.