Gå til indholdet
Modul 9 af 9
Modul 9 · 10 min

Modul 9 - Den samlede rapport

Alle fem funktioner i ét stort mål. Du afleverer rapporten fredag og runder af med snydeark og videre læsning.

Fredag eftermiddag. CFO'en stikker hovedet ind igen:

"En sidste ting - jeg vil have ét mål øverst i rapporten der siger om vi som helhed er i 'Vækst' eller 'Tilbagegang' sammenlignet med sidste år. Skal være på de store handler - over 10.000. Brug omsætning som mål."

Det her er ikke ét nyt problem - det er alle fem funktioner i én formel. Lad os bygge det op.

Hvad vi har brug for

  1. Omsætning fra de store handler i indeværende år (SUMX + FILTER).
  2. Omsætning fra de store handler i sidste år (CALCULATE der overskriver datofiltret).
  3. Sammenligning af de to (IF).
  4. Pr. kategori (kommer automatisk via filterkontekst - slicer eller række).
  5. Kategori-informationen hentes via RELATED.

Det er præcis den øvelse Anthony Obot afslutter sin artikel med - bare tilpasset vores controller-case.

Trin 1 - omsætning over 10.000

Vi har den allerede fra modul 7, men her er den igen med en VAR der renser op:

Omsætning fra store handler
Omsætning Store Handler =
VAR StorTærskel = 10000
RETURN
SUMX(
    FILTER(
        Salg,
        Salg[Antal] * Salg[EnhedsPris] * ( 1 - Salg[Rabat] ) > StorTærskel
    ),
    Salg[Antal] * Salg[EnhedsPris] * ( 1 - Salg[Rabat] )
)

VAR gør to ting: tærsklen er nu nem at ændre på ét sted, og hvis du bruger linjeomsætningen flere gange (det gør vi nedenfor) bliver formlen kortere.

Trin 2 - samme tal for sidste år

Antag du har en kalender-tabel Kalender med en relation til Salg[Dato]. Hvis ikke, kan du gøre det enkelt med et eksplicit datofilter - men i en rigtig rapport vil du altid have en kalendertabel. Det er emne for et andet kursus.

For at sammenligne med sidste år, bruger vi CALCULATE til at overskrive datofiltret:

Omsætning store handler - sidste år
Omsætning Store Handler SidsteÅr =
CALCULATE(
    [Omsætning Store Handler],
    SAMEPERIODLASTYEAR( Kalender[Dato] )
)

SAMEPERIODLASTYEAR er en tids-intelligens-funktion der flytter datofiltret ét år tilbage. Den er ikke en af kursets fem funktioner, men du kommer til at bruge den så ofte at den fortjener en omtale her.

Hvis du ikke har en kalendertabel

Det er fint for at lære DAX, men ikke for en rigtig rapport. Hurtigste fix: gå i Modellering → Ny tabel og indsæt:

Kalender = CALENDAR( DATE(2025, 1, 1), DATE(2026, 12, 31) )
Markér den, og under Tabelværktøjer → Markér som datotabel. Lav relation fra Kalender[Date] til Salg[Dato].

Trin 3 - vækst eller tilbagegang

Nu kombinerer vi det hele:

Vækststatus - den endelige formel
Vækststatus =
VAR Nu = [Omsætning Store Handler]
VAR Før = [Omsætning Store Handler SidsteÅr]
VAR Vækst = Nu - Før
VAR VækstProcent = DIVIDE( Vækst, Før, 0 )
RETURN
SWITCH(
    TRUE(),
    ISBLANK( Før ), "Ingen sammenligning",
    VækstProcent >= 0.05, "Vækst",
    VækstProcent >= -0.05, "Stabilt",
    "Tilbagegang"
)

Læg mærke til strukturen:

  • VAR-blokken øverst gemmer mellemresultater - gør formlen læsbar.
  • RETURN definerer det endelige output.
  • SWITCH med TRUE() håndterer tre udfald + en kantsag (ingen sammenligning).

Det her mål bruger nu alle fem funktioner indirekte: SUMX (i [Omsætning Store Handler]), FILTER (samme sted), CALCULATE (i sidste-år-målet), RELATED (gennem Kalender-relationen), og IF/SWITCH (her).

Visuel opsætning - det færdige produkt

Når målene er på plads, byg det her layout:

Visual Indhold
Card øverst Vækststatus - stort, fed tekst
Card ved siden af Omsætning Store Handler med formattering DKK
Søjlediagram x = Produkter[Kategori], værdi = Total Omsætning, betinget farve via Status Farve
Tabel nederst Kolonner: Kategori, Total Omsætning, Månedsbudget, Budget Status 3
Slicer Salg[Afdeling] til at filtrere alt

Send et screenshot til CFO klokken 16:47 fredag.

"Perfekt. Tak."

Hvad du har lært i denne uge

Spørgsmål Funktion Hvad den løste
Lås filteret til Salg CALCULATE Overskriv eller fjern filtre
Omsætning der ikke findes som kolonne SUMX Beregn pr. række, summér efter
Kategori fra den anden tabel RELATED Slå op via relationen
Kun handler over 10.000 FILTER Komplekse filterbetingelser
Over eller under budget IF / SWITCH Betinget logik

Og det er det. Fem funktioner. De dækker virkelig 80-90% af konkrete forretningsanalyser i Power BI.

Hvad du bør lære som det næste

Hvis du er fortsat sulten:

  1. VAR / RETURN - du har set det her. Brug det altid på sammensatte mål. Gør koden læselig og hurtigere.
  2. Tids-intelligens-funktioner - DATEADD, SAMEPERIODLASTYEAR, TOTALYTD. Forudsætter en kalendertabel; så er de magi.
  3. DIVIDE i stedet for / - undgår #DIV/0!-fejl, returnerer BLANK eller en alternativ værdi.
  4. ALL / ALLEXCEPT - i kombination med CALCULATE giver det dig procentdele, andele, og "alt undtagen denne kolonne"-effekter.
  5. Calculation groups - Tabular Editor-feature. Når du gentager den samme formel for "i år", "sidste år", "to år siden", "år til dato" - det her er svaret.

Hvor du finder hjælp

  • sqlbi.com - Marco Russo og Alberto Ferraris site. Den autoritative DAX-kilde.
  • The Definitive Guide to DAX (2. udg.) - bibelen. Tung men værd at have.
  • dax.do - sandkasse i browseren.
  • Guy in a Cube - daglige korte videoer om Power BI.

Et sidste råd

DAX bliver først rigtig din, når du stopper med at copy-paste formler du ikke forstår. Når du finder en formel på et forum, læs den. Pak den ud. Byg den selv. Lege med den. Det er først dér den sætter sig fast.

Lykke til. Du har værktøjerne nu.

Til snydearket Til DAX-filen