Power BI Studio
Terug naar alle artikelen
Complete gids

De complete DAX-gids voor Power BI: van CALCULATE tot calculation groups

Jan Willem den Hollander
Jan Willem den Hollander

Power BI architect, LSS Black Belt. 15 jaar ervaring in data & business intelligence.

De complete DAX-gids voor Power BI: van CALCULATE tot calculation groups

DAX (Data Analysis Expressions) is de formule-taal die Power BI tot een krachtig analytics-platform maakt. In deze gids leer je alles wat je nodig hebt om van DAX-beginner tot gevorderde gebruiker te groewen — van basisberekeningen tot geavanceerde calculation groups die je rapportages naar een hoger niveau tillen.

Wat is DAX en waarom is het belangrijk?

DAX is de formule-taal die Microsoft ontwikkelde voor het berekenen van waarden in Power BI, Power Pivot en Analysis Services. Het is veel meer dan een simpele rekenmachine — DAX begrijpt de context van je data en past berekeningen automatisch aan op basis van filters, slicers en andere selecties in je rapport.

Het verschil tussen DAX en Excel-formules zit in de manier waarop ze met data omgaan. Waar Excel-formules werken met celreferenties, werkt DAX met hele kolommen en tabellen. Dit maakt DAX extreem krachtig voor het analyseren van grote datasets, maar vereist ook een andere denkwijze.

Een typische DAX-measure ziet er zo uit:

Omzet = SUM(Verkoop[Bedrag])

Deze simpele formule berekent de totale omzet, maar past zich automatisch aan wanneer gebruikers filters toepassen. Selecteer een specifieke maand? De measure toont alleen die maand. Filter op een productcategorie? Je ziet alleen die categorie.

De anatomie van DAX: measures, calculated columns en calculated tables

DAX kent drie hoofdtypen berekeningen, elk met hun eigen doel en gedrag. Het begrijpen van deze verschillen is cruciaal voor effectief DAX-gebruik.

Measures: het hart van je analyses

Measures zijn dynamische berekeningen die reageren op de context van je rapport. Ze worden niet opgeslagen in je datamodel maar berekend op het moment dat ze nodig zijn. Dit maakt ze ideaal voor aggregaties zoals sommen, gemiddelden en percentages.

Voorbeelden van goede measure-toepassingen:

  • Totale omzet per periode
  • Gemiddelde orderwaarde
  • Percentage groei ten opzichte van vorig jaar
  • Aantal unieke klanten

Calculated columns: statische berekeningen

Calculated columns voegen nieuwe kolommen toe aan je tabellen met waarden die bij het laden van de data worden berekend. Ze zijn statisch — de waarde verandert niet op basis van filters in je rapport.

Gebruik calculated columns voor:

  • Het categoriseren van data (bijvoorbeeld leeftijdsgroepen)
  • Het berekenen van waarden per rij
  • Het combineren van tekstvelden

Calculated tables: nieuwe tabellen maken

Calculated tables creëren volledig nieuwe tabellen op basis van DAX-expressies. Ze zijn handig voor het maken van datumtabellen, lookup-tabellen of gefilterde versies van bestaande tabellen.

CALCULATE: de krachtigste DAX-functie

CALCULATE is het hart van elke Power BI measure en waarschijnlijk de belangrijkste DAX-functie die je moet begrijpen. Deze functie stelt je in staat om de filtercontext van je berekening te wijzigen.

De basissyntax van CALCULATE is:

CALCULATE(expressie, filter1, filter2, ...)

Een praktijkvoorbeeld:

Omzet Dit Jaar = CALCULATE(
    SUM(Verkoop[Bedrag]),
    YEAR(Verkoop[Datum]) = YEAR(TODAY())
)

Deze measure berekent alleen de omzet voor het huidige jaar, ongeacht welke datumfilters er in het rapport actief zijn.

CALCULATE kan veel meer dan alleen filters toevoegen. Je kunt er ook filters mee wegnemen, vervangen of combineren. Het begrijpen van hoe CALCULATE werkt met filtercontext is essentieel voor het schrijven van krachtige DAX-measures.

Context in DAX: row context en filter context

DAX werkt met twee soorten context die bepalen welke waarden worden gebruikt in berekeningen. Het begrijpen van deze contexten is cruciaal voor het schrijven van correcte DAX-formules.

Row context

Row context ontstaat wanneer DAX door de rijen van een tabel itereert. Dit gebeurt automatisch in calculated columns en wanneer je functies zoals SUMX of FILTER gebruikt. In row context kun je direct naar kolommen verwijzen zonder aggregatiefuncties.

Filter context

Filter context wordt bepaald door alle actieve filters in je rapport — denk aan slicers, visuele filters en cross-filtering tussen tabellen. Deze context bepaalt welke rijen van je data worden meegenomen in berekeningen.

Het samenspel tussen deze contexten kan complex zijn, vooral wanneer je geavanceerde berekeningen maakt. Functies zoals CALCULATE kunnen de filter context wijzigen, terwijl functies zoals EARLIER toegang geven tot verschillende niveaus van row context.

Variables in DAX: performance en leesbaarheid

Variables maken je measures niet alleen 10x sneller, maar ook veel beter leesbaar. De VAR en RETURN syntax stelt je in staat om complexe berekeningen op te delen in logische stappen.

Een voorbeeld zonder variables:

Percentage van Totaal = 
DIVIDE(
    SUM(Verkoop[Bedrag]),
    CALCULATE(SUM(Verkoop[Bedrag]), ALL(Product))
)

Dezelfde berekening met variables:

Percentage van Totaal = 
VAR HuidigeBedrag = SUM(Verkoop[Bedrag])
VAR TotaalBedrag = CALCULATE(SUM(Verkoop[Bedrag]), ALL(Product))
RETURN DIVIDE(HuidigeBedrag, TotaalBedrag)

Variables bieden meerdere voordelen:

  • Betere performance door hergebruik van berekeningen
  • Verbeterde leesbaarheid en onderhoudbaarheid
  • Makkelijker debuggen van complexe formules
  • Minder kans op fouten bij lange formules

Time intelligence: werken met datums en periodes

Time intelligence is een van de krachtigste aspecten van DAX. Deze 12 time intelligence measures zijn essentieel voor elke finance dashboard en laten zien hoe je eenvoudig kunt vergelijken tussen periodes.

De basis van time intelligence in DAX begint met een goede datumtabel. Deze tabel moet:

  • Alle datums bevatten in je datarange
  • Geen gaten hebben (elke dag moet aanwezig zijn)
  • Gemarkeerd zijn als datumtabel in Power BI
  • Gerelateerd zijn aan je feitentabellen

Met een goede datumtabel kun je functies gebruiken zoals:

  • SAMEPERIODLASTYEAR voor vorig jaar vergelijkingen
  • DATEADD voor flexibele periode-verschuivingen
  • TOTALYTD voor year-to-date berekeningen
  • DATESQTD voor quarter-to-date waarden

Een praktijkvoorbeeld van year-over-year groei:

Groei YoY = 
VAR DitJaar = SUM(Verkoop[Bedrag])
VAR VorigJaar = CALCULATE(SUM(Verkoop[Bedrag]), SAMEPERIODLASTYEAR(Datum[Datum]))
RETURN DIVIDE(DitJaar - VorigJaar, VorigJaar)

Geavanceerde DAX-patronen voor business analyses

Zodra je de basis van DAX beheerst, kun je complexere analyses maken die echte business value toevoegen. Deze DAX patterns voor budget versus actuals zijn voorbeelden van hoe geavanceerde DAX business problemen oplost.

Ranking en top-N analyses

Voor het maken van top-10 lijsten of ranking-analyses gebruik je functies zoals RANKX en TOPN:

Product Ranking = 
RANKX(
    ALL(Product[ProductNaam]),
    [Totale Omzet],
    ,
    DESC
)

What-if parameters en scenario analyses

Disconnected tables zijn de truc voor what-if analyses en stellen gebruikers in staat om verschillende scenario's te verkennen zonder de onderliggende data te wijzigen.

Complexe aggregaties met SUMX en AVERAGEX

Voor berekeningen die per rij moeten worden uitgevoerd voordat ze worden geaggregeerd, gebruik je de X-functies:

Gewogen Gemiddelde = 
SUMX(
    Product,
    Product[Gewicht] * Product[Waarde]
) / SUM(Product[Gewicht])

Calculation groups: één measure voor tientallen varianten

Calculation groups stellen je in staat om één measure te maken voor 20 verschillende KPI-varianten. Deze geavanceerde functie elimineert de noodzaak om tientallen vergelijkbare measures te maken.

Calculation groups werken door een nieuwe dimensie toe te voegen aan je model die verschillende berekeningen bevat. In plaats van aparte measures voor 'Omzet', 'Omzet YoY', 'Omzet YTD', etc., maak je één 'Omzet' measure en laat de calculation group de verschillende varianten berekenen.

Voordelen van calculation groups:

  • Minder measures in je model
  • Consistente berekeningen across alle KPI's
  • Makkelijker onderhoud en updates
  • Flexibelere rapportages voor eindgebruikers

Calculation groups vereisen wel Tabular Editor voor het maken en bewerken, omdat deze functionaliteit nog niet beschikbaar is in de standaard Power BI interface.

DAX performance optimalisatie

Naarmate je datamodellen groter worden en je DAX-formules complexer, wordt performance steeds belangrijker. Deze 7 technieken maken je modellen aanzienlijk sneller en zorgen voor een betere gebruikerservaring.

Query-plannen begrijpen

DAX Studio is een onmisbare tool voor het analyseren van je DAX-performance. Het toont je precies hoe DAX je formules uitvoert en waar knelpunten zitten.

Materialisatie versus berekening

Niet alles hoeft in DAX berekend te worden. Soms is het efficiënter om berekeningen in Power Query te doen tijdens het laden van data, vooral voor statische waarden die niet afhankelijk zijn van filters.

Relationele optimalisaties

De structuur van je datamodel heeft grote impact op DAX-performance. Star schema's presteren beter dan complexe relationele structuren, en het vermijden van bidirectionele relaties verbetert de snelheid.

DAX best practices en veelgemaakte fouten

Het schrijven van goede DAX-code gaat verder dan alleen werkende formules. Hier zijn de belangrijkste best practices die je moet kennen.

Naamgeving en documentatie

Gebruik duidelijke, beschrijvende namen voor je measures. 'Omzet YTD' is beter dan 'Measure1'. Voeg comments toe aan complexe formules om ze later nog te begrijpen.

Herbruikbaarheid

Maak base measures die je kunt hergebruiken in andere berekeningen. In plaats van dezelfde berekening steeds opnieuw te schrijven, verwijs naar bestaande measures.

Veelgemaakte fouten vermijden

De meest voorkomende DAX-fouten zijn:

  • Het gebruik van calculated columns waar measures beter zouden zijn
  • Het niet begrijpen van filter context en row context
  • Inefficiënte formules die de hele dataset scannen
  • Het mixen van aggregatie-niveaus zonder SUMX/AVERAGEX

Tools en resources voor DAX-ontwikkeling

Professionele DAX-ontwikkeling vereist de juiste tools. DAX Studio is essentieel voor performance-analyse en het testen van formules. De DAX Formula Assistant kan helpen bij het genereren van complexe formules en het begrijpen van DAX-syntax.

Voor calculation groups en geavanceerde modelleringen is Tabular Editor onmisbaar. Deze tool geeft je toegang tot functionaliteiten die niet beschikbaar zijn in de standaard Power BI interface.

Online resources zoals sqlbi.com en daxpatterns.com bieden uitgebreide libraries van DAX-patronen en best practices voor veel voorkomende business scenario's.

Samenvatting

DAX is een krachtige taal die Power BI tot een professioneel analytics-platform maakt. De belangrijkste punten uit deze gids:

  • Begin met het begrijpen van measures versus calculated columns — measures zijn meestal de betere keuze voor analyses
  • CALCULATE is de belangrijkste functie die je moet beheersen voor het manipuleren van filter context
  • Variables (VAR/RETURN) maken je formules sneller, leesbaarder en onderhoudbaarder
  • Time intelligence vereist een goede datumtabel maar biedt krachtige mogelijkheden voor periode-analyses
  • Calculation groups elimineren duplicate measures en maken je model schoner
  • Performance optimalisatie wordt cruciaal naarmate je modellen groeien

Volgende stappen

Om je DAX-vaardigheden verder te ontwikkelen, focus je op deze concrete acties:

  • Installeer DAX Studio en analyseer de performance van je huidige measures — identificeer de langzaamste berekeningen en optimaliseer deze eerst
  • Experimenteer met calculation groups voor je meest gebruikte KPI's — begin met een simpele time intelligence calculation group
  • Bouw een library op van herbruikbare base measures die je in verschillende projecten kunt toepassen

Verder lezen

Diepgaande artikelen die op de deelthema's uit deze gids ingaan.