DAX Functions Complete Guide: Alle Formules voor Power BI
Complete handleiding voor Data Analysis Expressions (DAX) in Power BI. Leer alle essentiële formules voor data-analyse, aggregaties, tijd-intelligentie en meer met praktische voorbeelden.
Zoek je Power BI DAX experts?
Vind gespecialiseerde BI Consultants voor complexe Power BI implementaties en DAX-ontwikkeling
Inhoudsopgave
1. Wat is Data Analysis Expressions (DAX)?
DAX (Data Analysis Expressions) is een formule- en queryscripttaal die wordt gebruikt in Power BI, Analysis Services en Power Pivot in Excel. Het is speciaal ontworpen voor data-analyse en werkt met relationele data en dynamische aggregaties.
Eenvoudige uitleg
Denk aan DAX als Excel-formules op steroïden. Waar Excel werkt met cellen, werkt DAX met kolommen en tabellen. Het kan complexe berekeningen uitvoeren over hele datasets, niet alleen individuele cellen.
Waarom DAX leren?
Dynamische berekeningen
Bereken totalen die automatisch aanpassen bij filters en slicers
Tijd-intelligentie
Vergelijk periodes (YTD, QoQ, YoY) eenvoudig
Geavanceerde filtering
Complexe voorwaarden voor data-analyse
Prestatie optimalisatie
Snellere rapporten met efficiënte formules
2. Basis DAX Functions
De belangrijkste DAX function! Past filters toe op een berekening. Dit is je Zwitsers zakmes in DAX.
Voert voorwaardelijke berekeningen uit (vergelijkbaar met Excel IF).
Meerdere voorwaarden in één formule (beter dan geneste IFs).
Team nodig voor Power BI DAX ontwikkeling?
Vind ervaren BI Consultants gespecialiseerd in DAX en complexe berekeningen
3. Aggregatie Functions
| Function | Beschrijving | Voorbeeld | Niveau |
|---|---|---|---|
SUM |
Tel waarden op | Totale omzet berekenen | Beginner |
AVERAGE |
Gemiddelde berekenen | Gemiddelde orderwaarde | Beginner |
MIN / MAX |
Minimum/maximum vinden | Hoogste/laagste omzet | Beginner |
COUNT / COUNTA |
Aantal rijen tellen | Aantal orders/klanten | Beginner |
DISTINCTCOUNT |
Unieke waarden tellen | Aantal unieke klanten | Beginner |
Iterators werken rij voor rij en zijn krachtiger dan normale aggregaties.
4. Tijd-intelligentie Functions
Tijd-intelligentie in praktijk
Deze functions maken vergelijkingen tussen periodes eenvoudig:
- YoY (Year-over-Year): Vergelijk met vorig jaar
- QoQ (Quarter-over-Quarter): Vergelijk met vorig kwartaal
- MoM (Month-over-Month): Vergelijk met vorige maand
- YTD (Year-to-Date): Cumulatief dit jaar
DATESYTD
Berekent jaar-tot-datum waarden
SAMEPERIODLASTYEAR
Vergelijk metzelfde periode vorig jaar
DATESQTD / DATESMTD
Kwartaal/maand-tot-datum
PREVIOUSMONTH / DAY
Vorige periode selecteren
5. Filter Functions (De kracht van DAX)
FILTER - Dynamische filtering
Filtert een tabel op basis van een voorwaarde. Werkt altijd binnen CALCULATE.
-- Omzet van klanten met meer dan 10 orders
Hoog Volume Omzet = CALCULATE(
SUM(Verkoop[Omzet]),
FILTER(
Klanten,
[Aantal Orders] > 10
)
)
-- Top 10 klanten omzet
Top 10 Omzet = CALCULATE(
SUM(Verkoop[Omzet]),
TOPN(10, Klanten, [Totale Omzet])
)
ALL - Filters verwijderen
Verwijdert filters van een kolom of tabel. Cruciaal voor totaalberekeningen.
-- Totale omzet ongeacht filters
Totaal Alle Jaren = CALCULATE(
SUM(Verkoop[Omzet]),
ALL(Datum)
)
-- Percentage van totaal
Percentage van Totaal = DIVIDE(
[Huidige Omzet],
CALCULATE([Huidige Omzet], ALLSELECTED())
)
RELATED / RELATEDTABLE - Relaties gebruiken
Haalt gerelateerde data uit andere tabellen op.
-- Productcategorie toevoegen aan verkoopregel
Categorie = RELATED(Producten[Categorie])
-- Aantal orders per klant (met gerelateerde tabel)
Orders Per Klant = COUNTROWS(
RELATEDTABLE(Orders)
)
Klaar voor complexe DAX ontwikkeling?
Vind de juiste experts of plaats je BI Consultant vacature
6. Iterator Functions (X-functions)
Wat zijn iterators?
Iterators (functions die eindigen op X) werken rij-voor-rij door een tabel. Ze zijn krachtiger maar kunnen langzamer zijn dan aggregaties. Gebruik ze wanneer je berekeningen per rij nodig hebt.
SUMX
Rij-voor-rij optellen
AVERAGEX
Gemiddelde per rij berekenen
COUNTX
Voorwaardelijk tellen
MAXX / MINX
Maximum/minimum met voorwaarden
7. Praktijkvoorbeelden: Reële DAX-scenario's
Voorbeeld 1: Running Total (Cumulatief totaal)
-- Cumulatieve omzet per datum
Cumulatieve Omzet =
VAR CurrentDate = MAX(Datum[Datum])
RETURN
CALCULATE(
SUM(Verkoop[Omzet]),
FILTER(
ALL(Datum),
Datum[Datum] <= CurrentDate
)
)
Voorbeeld 2: YoY Growth (Jaar-op-jaar groei)
-- Omzet groei percentage YoY
Omzet Vorig Jaar =
CALCULATE(
[Totale Omzet],
SAMEPERIODLASTYEAR(Datum[Datum])
)
YoY Groei % =
DIVIDE(
[Totale Omzet] - [Omzet Vorig Jaar],
[Omzet Vorig Jaar]
)
Voorbeeld 3: Top N Analysis (Top 10 analyse)
-- Is huidige klant in top 10?
Is Top 10 Klant =
VAR Top10Klanten =
TOPN(
10,
VALUES(Klanten[KlantID]),
[Totale Omzet]
)
RETURN
IF(
SELECTEDVALUE(Klanten[KlantID]) IN Top10Klanten,
"Top 10",
"Overig"
)
-- Omzet van top 10 klanten
Top 10 Omzet =
CALCULATE(
[Totale Omzet],
FILTER(
Klanten,
[Is Top 10 Klant] = "Top 10"
)
)
8. DAX Best Practices en Performance
Top 10 DAX Best Practices
- Gebruik variabelen (VAR) voor complexe berekeningen
- Vermijd geneste CALCULATE calls waar mogelijk
- Gebruik DIVIDE i.p.v. / operator voor deling (betere error handling)
- Filter op kolommen, niet op calculated columns voor betere performance
- Gebruik SUMMARIZE spaarzaam - kan traag zijn
- Test DAX met Performance Analyzer in Power BI Desktop
- Documenteer complexe formules met comments
- Gebruik ALLSELECTED i.p.v. ALL voor "percentage van totaal"
- Vermijd iterators op grote tabellen als aggregatie kan
- Gebruik tijd-intelligentie functions i.p.v. handmatige datumlogica
Performance Tips
| Wat te doen | Waarom | Impact |
|---|---|---|
| Gebruik variabelen | Berekening wordt maar 1x uitgevoerd | Tot 50% sneller |
| Vermijd calculated columns in filters | Calculated columns hebben minder optimalisatie | Tot 70% sneller |
| Gebruik DIVIDE() | Voorkomt delen door nul errors | Stabieler, zelfde snelheid |
| Minimaliseer iterator gebruik | Iterators zijn rij-voor-rij trager | Tot 90% sneller bij aggregaties |
Veelgemaakte DAX fouten
- ❌ CIRCULAR DEPENDENCY: Berekening verwijst naar zichzelf
- ❌ MISSING FILTER CONTEXT: CALCULATE vergeten te gebruiken
- ❌ IMPLICIT MEASURE: Aggregatie direct in visual gebruiken
- ❌ BLANK() vs. 0: Verkeerde behandeling van lege waarden
- ❌ RELATIONSHIP ERRORS: Verkeerde relaties gebruiken
Word DAX expert vandaag!
Vind gespecialiseerde Power BI Consultants of plaats je vacature