Time intelligence in DAX: 12 measures die elke finance dashboard nodig heeft
Power BI architect, LSS Black Belt. 15 jaar ervaring in data & business intelligence.

Wat je nodig hebt voor deze implementatie
Aan het einde van dit artikel heb je een complete set van 12 time intelligence measures die in elk finance dashboard thuishoren. Je implementeert elk van deze measures stap voor stap, met concrete DAX-code en uitleg over wanneer je welke gebruikt.
Je hebt nodig: een Power BI Desktop installatie, een dataset met een datumtabel (Date table) die gerelateerd is aan je fact-tabellen, en basiskennis van DAX. Je datamodel moet een juist ingerichte datumtabel hebben — zonder continuous date range werken time intelligence functies niet correct.
Stap 1: Controleer je datumtabel setup
Voordat je time intelligence measures gaat bouwen, controleer je datumtabel. Ga naar Model view in Power BI Desktop. Je datumtabel moet:
- Een continuous range hebben zonder gaten (elke datum tussen min en max moet aanwezig zijn)
- Gemarkeerd zijn als date table (Table tools > Mark as date table)
- Een relatie hebben met je fact-tabellen via een datum kolom
- Standard datumkolommen bevatten: Year, Quarter, Month, Week
Test dit door een simpele measure te maken:
Test Dates =
COUNT('Date'[Date])Als deze measure geen waarden toont in je visuals, is je datumtabel niet correct ingesteld. Los dit eerst op voordat je verdergaat.
Stap 2: Implementeer basis revenue measures
Begin met drie fundamentele revenue measures. Deze vormen de basis voor alle verdere time intelligence berekeningen.
Current period revenue
Ga naar Modeling tab > New measure. Voer in:
Revenue =
SUM('Sales'[Amount])Deze measure toont altijd de revenue voor de geselecteerde periode in je filter context.
Previous year same period
Revenue PY =
CALCULATE(
[Revenue],
SAMEPERIODLASTYEAR('Date'[Date])
)SAMEPERIODLASTYEAR verschuift automatisch je filter context naar dezelfde periode vorig jaar. Voor januari 2024 krijg je januari 2023, voor Q1 2024 krijg je Q1 2023.
Year-to-date revenue
Revenue YTD =
CALCULATE(
[Revenue],
DATESYTD('Date'[Date])
)DATESYTD berekent automatisch van 1 januari tot de geselecteerde datum. In maart toont het jan+feb+maart, in december het hele jaar.
Stap 3: Voeg growth measures toe
Nu implementeer je measures die growth tonen — essentieel voor elke finance dashboard.
Year-over-year growth percentage
Revenue YoY Growth% =
VAR CurrentYear = [Revenue]
VAR PreviousYear = [Revenue PY]
RETURN
IF(
NOT ISBLANK(PreviousYear) && PreviousYear <> 0,
DIVIDE(CurrentYear - PreviousYear, PreviousYear),
BLANK()
)Deze measure berekent (Current - Previous) / Previous en toont BLANK() als er geen vorig jaar data is. Format deze measure als percentage in de formatting pane.
Year-over-year growth absolute
Revenue YoY Growth =
VAR CurrentYear = [Revenue]
VAR PreviousYear = [Revenue PY]
RETURN
IF(
NOT ISBLANK(PreviousYear),
CurrentYear - PreviousYear,
BLANK()
)Deze toont de absolute groei in dezelfde currency als je revenue data.
Stap 4: Implementeer month-to-date en quarter-to-date
Voor operationele finance dashboards zijn MTD en QTD measures onmisbaar.
Month-to-date revenue
Revenue MTD =
CALCULATE(
[Revenue],
DATESMTD('Date'[Date])
)Quarter-to-date revenue
Revenue QTD =
CALCULATE(
[Revenue],
DATESQTD('Date'[Date])
)DATESMTD berekent van de eerste dag van de maand tot de huidige datum. DATESQTD doet hetzelfde voor kwartalen (1 jan/apr/jul/okt tot huidige datum).
Stap 5: Voeg prior period vergelijkingen toe
Voor trending en seasonality analysis heb je prior period measures nodig.
Previous month revenue
Revenue PM =
CALCULATE(
[Revenue],
DATEADD('Date'[Date], -1, MONTH)
)DATEADD verschuift je datum filter met een gespecificeerd interval. -1 MONTH geeft de vorige maand, -1 YEAR geeft vorig jaar, -7 DAY geeft vorige week.
Previous quarter revenue
Revenue PQ =
CALCULATE(
[Revenue],
DATEADD('Date'[Date], -1, QUARTER)
)Month-over-month growth
Revenue MoM Growth% =
VAR CurrentMonth = [Revenue]
VAR PreviousMonth = [Revenue PM]
RETURN
IF(
NOT ISBLANK(PreviousMonth) && PreviousMonth <> 0,
DIVIDE(CurrentMonth - PreviousMonth, PreviousMonth),
BLANK()
)Stap 6: Implementeer rolling averages
Rolling averages gladden seizoensschommelingen en tonen trends duidelijker.
3-month rolling average
Revenue 3M Rolling Avg =
VAR CurrentDate = MAX('Date'[Date])
VAR ThreeMonthsBack = DATEADD(CurrentDate, -2, MONTH)
RETURN
CALCULATE(
AVERAGEX(
DATESBETWEEN(
'Date'[Date],
ThreeMonthsBack,
CurrentDate
),
[Revenue]
)
)Deze measure berekent het gemiddelde van de laatste 3 maanden. DATESBETWEEN definieert het periode window, AVERAGEX berekent het gemiddelde over die periode.
12-month rolling average
Revenue 12M Rolling Avg =
VAR CurrentDate = MAX('Date'[Date])
VAR TwelveMonthsBack = DATEADD(CurrentDate, -11, MONTH)
RETURN
CALCULATE(
AVERAGEX(
DATESBETWEEN(
'Date'[Date],
TwelveMonthsBack,
CurrentDate
),
[Revenue]
)
)Stap 7: Voeg cumulative measures toe
Cumulative measures tonen opgebouwde waarden over tijd — cruciaal voor budget tracking.
Cumulative revenue (running total)
Revenue Cumulative =
VAR MaxDate = MAX('Date'[Date])
RETURN
CALCULATE(
[Revenue],
'Date'[Date] <= MaxDate,
ALLSELECTED('Date')
)ALLSELECTED zorgt ervoor dat de measure alle datums in je visual gebruikt, niet alleen de huidige row context. Dit bouwt een running total op.
Stap 8: Test je measures in een dashboard
Maak een test-dashboard om je measures te valideren:
- Voeg een Table visual toe met 'Date'[MonthYear] en alle 12 measures
- Filter op de laatste 24 maanden
- Controleer of PY measures data tonen (als niet: je hebt niet genoeg historische data)
- Controleer of YTD in december gelijk is aan totaal jaar revenue
- Controleer of MTD op de laatste dag van de maand gelijk is aan hele maand revenue
Screenshot: Table visual met alle measures per maand, gefilterd op laatste 24 maanden
Als een measure BLANK() toont waar je data verwacht, controleer je datumtabel relaties en continuous date range.
Veelgemaakte fouten
De meest voorkomende fout: een datumtabel die niet continuous is. Time intelligence functies zoals SAMEPERIODLASTYEAR werken alleen met een complete datum range zonder gaten. Als je 1 januari 2023 mist, werkt SAMEPERIODLASTYEAR niet voor 1 januari 2024.
Tweede fout: vergeten om BLANK() te gebruiken in conditional logic. Zonder BLANK() tonen je measures 0 in plaats van leeg, wat verkeerde totalen geeft in visuals. Gebruik altijd BLANK() voor missing data scenarios.
Derde fout: DATEADD gebruiken in plaats van SAMEPERIODLASTYEAR voor year-over-year vergelijkingen. DATEADD(-1, YEAR) werkt niet correct met fiscal years of partial periods. Gebruik SAMEPERIODLASTYEAR voor year-over-year, DATEADD voor andere intervals.
Vierde fout: measures formatteren als tekst in plaats van getal/percentage. Revenue measures moeten currency formatting hebben, growth measures percentage formatting. Dit stel je in via de Modeling tab > Format.
Volgende stappen
Start met implementatie van deze 12 measures in je eigen datamodel. Test eerst je datumtabel setup met de basis revenue measure, implementeer dan stap voor stap de andere measures. Voor complexere scenarios zoals fiscal years of custom periods, optimaliseer je DAX performance door measures te combineren en variabelen te hergebruiken. Voor geautomatiseerde implementatie van best practices, gebruik de Power BI Report Auditor om je datamodel structure te valideren.