Snydeark¶
Print eller bogmærk. Hurtig reference når du er færdig med kurset.
De fem funktioner i én tabel¶
| Funktion | Formål | Minimumseksempel |
|---|---|---|
| CALCULATE | Modificer filterkontekst | CALCULATE( SUM( T[X] ), T[Y] = "A" ) |
| SUMX | Row-by-row sum | SUMX( T, T[A] * T[B] ) |
| RELATED | Hent værdi fra én-siden | RELATED( Dim[Kategori] ) |
| FILTER | Kompleks filterbetingelse | FILTER( T, T[A] * T[B] > 100 ) |
| IF | Betinget logik | IF( [Salg] > [Budget], "Over", "Under" ) |
Beslutningstræ¶
Vil du beregne en aggregering?
├── Simpelt (kolonne der findes)? → SUM, COUNT, AVERAGE
└── Pr. række så sum? → SUMX
Vil du dele to tal? → DIVIDE (sikker mod /0)
Vil du modificere filterkonteksten? → CALCULATE
├── Simpelt filter (én kolonne)? → CALCULATE( udtryk, Tabel[Kol] = "x" )
└── Kompleks (flere kolonner)? → CALCULATE( udtryk, FILTER(...) )
Vil du slå op i en relateret tabel?
├── Fra mange-siden? → RELATED
└── Fra én-siden? → RELATEDTABLE eller en aggregering
Betinget logik?
├── To udfald? → IF
└── Flere udfald? → SWITCH( TRUE(), ... )
Filterkontekst - det vigtigste¶
Filterkontekst er den mængde filtre der gælder i det øjeblik et mål bliver evalueret. Den kommer fra:
- Slicers
- Række og kolonne i visual'en
- Visual-level filters
- Page filters, report filters
- DAX-funktioner som CALCULATE (modificerer eksisterende kontekst)
Når du forstår filterkontekst, forstår du DAX.
Mål vs. beregnet kolonne¶
| Mål | Beregnet kolonne |
|---|---|
| Dynamisk - beregnes når visualet viser det | Statisk - beregnes ved datasæt-opdatering |
| Til aggregeringer, KPI'er, totaler, procent | Til kategoriseringer, opslag, flag pr. række |
| Fylder ingenting i modellen | Fylder rigtig plads |
| Kan ikke filtreres på direkte | Kan filtreres som almindelig kolonne |
| Foretræk altid mål | Kun når du virkelig har brug for det |
Performance - tommelfingerregler¶
| Hurtigt | Langsomt |
|---|---|
| Simple CALCULATE-filtre | FILTER over store fakta-tabeller |
| SUM på beregnet kolonne | SUMX over millioner af rækker |
| Stjernemodel | Mange-til-mange-relationer |
| Forberedelse i Power Query | Beregnede kolonner i DAX |
Skabeloner du genbruger¶
Total med ét fast filter¶
Andel af total¶
Iteration med opslag¶
Sikker procent (forudsætter DIVIDE)¶
Status med flere niveauer¶
Status =
SWITCH(
TRUE(),
[Værdi] >= 1.10 * [Mål], "Stærkt over",
[Værdi] >= 0.90 * [Mål], "På sporet",
"Under"
)
Sammenligning med sidste år¶
Gode vaner¶
- Brug VAR / RETURN når et udtryk gentages eller bliver kompliceret.
- Navngiv mål så de forklarer sig selv:
Omsætning Store Handler, ikkeMål27. - Indryk lange formler -
Shift+Enteri formelboksen. - Test små formler først - byg komplekse mål op i lag.
- Undgå bidirektionel filtrering med mindre du virkelig ved hvad du gør.
- Undgå beregnede DAX-kolonner hvis Power Query kunne klare det.