Artikel · Datamodel
Een datumtabel in Power BI voor vorig jaar en cumulatief
Met een datumtabel werken vorig jaar, cumulatief en begroting in elk rapport. Wat erin moet, hoe je hem maakt en hoe je eerlijk vergelijkt met vorig jaar.
- Eén regel per dag, zonder gaten, en gemarkeerd als datumtabel
- Dan werken TOTALYTD en SAMEPERIODLASTYEAR voor elke measure
- Vergelijk vorig jaar tot dezelfde dag, anders vergelijk je appels met peren
Een datumtabel is een tabel met één regel per dag, zonder gaten, gemarkeerd als datumtabel. Met zo’n tabel werken berekeningen als cumulatief tot nu toe en vergelijken met vorig jaar voor elke measure, en kun je begroting en realisatie op dezelfde manier filteren. Bijna elke vraag in een rapportage gaat over tijd. De datumtabel maakt die vragen eenvoudig.
In dit artikel lees je wat er in een datumtabel moet, hoe je hem maakt, welke berekeningen je ermee schrijft en hoe je eerlijk vergelijkt met vorig jaar. Het voorbeeld komt uit de Noordkade-demo. Waar de datumtabel in het model past, staat in de gids over het Power BI-datamodel.
Wat erin moet
Een goede datumtabel voldoet aan vier eisen.
- Eén regel per dag. Ook voor weekenden en feestdagen, ook voor dagen zonder boekingen.
- Geen gaten. Van de eerste dag van het eerste jaar tot de laatste dag van het laatste jaar.
- Alle jaren. Van het oudste jaar in je gegevens tot en met het jaar van de begroting.
- Gemarkeerd als datumtabel. Dan weet Power BI dat dit de tabel is voor berekeningen over tijd.
Daarbij horen een paar kolommen om mee te filteren en te groeperen: jaar, maandnummer, maandnaam en een kolom voor jaar en maand samen, voor grafieken over meerdere jaren. Werk je met een boekjaar dat niet in januari begint, dan komt er een kolom voor het boekjaar bij.
Zo maak je hem
In het model van Noordkade Techniek, het fictieve installatiebedrijf uit de demo, is de datumtabel gemaakt in Power Query. De kern is één regel die alle dagen opsomt:
Datums = List.Dates ( #date(2025, 1, 1), Duration.Days ( #date(2026, 12, 31) - #date(2025, 1, 1) ) + 1, #duration(1, 0, 0, 0) )
Daarna voeg je de kolommen voor jaar en maand toe, en markeer je de tabel in Power BI als datumtabel, met de kolom Date als sleutel. Je kunt een datumtabel ook in DAX maken. Het resultaat is hetzelfde. Kies wat je team het best begrijpt.
Leg daarna de relaties. Het grootboek koppel je op de boekdatum. De begroting staat per maand, en koppel je op de eerste dag van die maand. Zo hangen allebei aan dezelfde datumtabel.
Cumulatief en vorig jaar
Met een datumtabel schrijf je berekeningen over tijd in één regel.
Omzet cumulatief = TOTALYTD ( [Omzet], Datum[Date] )
Omzet vorig jaar = CALCULATE ( [Omzet], SAMEPERIODLASTYEAR ( Datum[Date] ) )
De eerste telt de omzet op vanaf 1 januari tot en met de gekozen periode. De tweede geeft de omzet van dezelfde periode een jaar eerder. Ze werken voor elke maand, elke kostenplaats en elk project, omdat ze op de datumtabel rekenen en niet op een vaste periode.
Begint je boekjaar niet op 1 januari, dan geef je bij TOTALYTD de laatste dag van het boekjaar mee, bijvoorbeeld 30 juni. Dan telt het cumulatief vanaf 1 juli.
Eerlijk vergelijken met vorig jaar
Er is één valkuil die bijna iedereen tegenkomt. Halverwege de maand zet SAMEPERIODLASTYEAR de eerste helft van deze maand naast de hele maand van vorig jaar. Het lijkt dan alsof het slecht gaat, terwijl de maand gewoon nog niet voorbij is.
Het model van Noordkade lost dat op door vorig jaar te vergelijken tot dezelfde dag als de laatste boeking:
Realisatie vorig jaar =
VAR _laatste = [Laatste boekdatum]
RETURN CALCULATE ( [Realisatie], SAMEPERIODLASTYEAR ( FILTER ( VALUES ( Datum[Date] ), Datum[Date] <= _laatste ) ) )
Zo vergelijk je altijd dezelfde periode: tot en met 15 september dit jaar naast tot en met 15 september vorig jaar. Dat is eerlijker, en het voorkomt een schrikreactie halverwege de maand.
Bij een verzekeraar zijn er meerdere datums: boekjaar, tekenjaar, offertejaar. In het model moet vastliggen welke datum je waarvoor gebruikt. Daar ontstaan in Excel veel fouten, omdat ook de organisatie zelf niet altijd weet welke datum de juiste is.
Ik bouw daarom altijd één eigen datumtabel, en zet de automatische datumtabellen van Power BI uit. Dan is er één plek waar de kalender staat, en kies je per vraag bewust welke datum je gebruikt.
Maand tot nu toe en vorige maand
Met dezelfde datumtabel schrijf je ook andere vergelijkingen over tijd.
Omzet maand tot nu toe = CALCULATE ( [Omzet], DATESMTD ( Datum[Date] ) )
Omzet vorige maand = CALCULATE ( [Omzet], PREVIOUSMONTH ( Datum[Date] ) )
De eerste is handig halverwege de maand, de tweede voor een vergelijking met de maand ervoor. Bij een bedrijf met een seizoen, zoals een installatiebedrijf met een bouwvak, zegt de vergelijking met vorige maand weinig. Juli is altijd lager dan juni. Gebruik dan liever vorig jaar.
Handige kolommen
| Kolom | Voorbeeld | Waarvoor |
|---|---|---|
| Date | 15-09-2026 | De sleutel voor alle relaties |
| Jaar | 2026 | Filteren en vergelijken per jaar |
| Maandnummer | 9 | Sorteren van de maanden in de goede volgorde |
| Maand | sep | Leesbare labels in grafieken |
| Jaarmaand | 202609 | Grafieken over meerdere jaren |
Zet de kolom Maand gesorteerd op Maandnummer, anders staat april voor januari.
Begroting per maand
De begroting staat bijna altijd per maand, niet per dag. Koppel hem daarom op de eerste dag van de maand. Kijk je dan per maand, dan kloppen begroting en realisatie. Kijk je per dag, dan staat het hele begrote bedrag op de eerste. Toon de begroting daarom alleen op maandniveau of hoger.
Wil je halverwege de maand weten of je op koers ligt, dan kun je de maandbegroting verdelen over de dagen. Dat is een extra stap, en voor de meeste maandrapportages niet nodig.
Wat ik vaak zie misgaan
- De automatische datum van Power BI. Power BI maakt standaard verborgen datumtabellen per datumkolom. Dat werkt voor een simpel rapport, maar niet voor een model met meerdere feitentabellen. Zet het uit en maak een eigen datumtabel.
- Een datumtabel met gaten. Alleen de dagen waarop is geboekt. Dan werken de berekeningen over tijd niet goed.
- Vorig jaar met een halve maand. Een vergelijking die halverwege de maand een daling laat zien die er niet is. Vergelijk tot dezelfde dag.
Wat je nu kunt doen
- Controleer of je model een eigen datumtabel heeft, gemarkeerd als datumtabel.
- Kijk of grootboek en begroting allebei aan die tabel hangen. Zo niet, dan kun je ze niet goed naast elkaar zetten.
- Schrijf je cumulatief en vorig jaar als measure. Wil je dit samen met je team opzetten? Dan bouwt je team zelf, met mij als coach, vanaf een half dagdeel per week.
Je team bouwt zelf, ik ontwerp het model en review elke stap. Dat kan vanaf een half dagdeel per week.
Veelgestelde vragen
Waarom heb je een datumtabel nodig in Power BI?
Omdat berekeningen over tijd, zoals cumulatief tot nu toe en vergelijken met vorig jaar, een doorlopende reeks datums nodig hebben. Met een eigen datumtabel werken die berekeningen voor elke measure en kun je begroting en realisatie op dezelfde manier filteren.
Hoe maak je een datumtabel in Power BI?
Met Power Query of met DAX. Maak een lijst met één regel per dag over alle jaren die in je gegevens voorkomen, voeg kolommen toe voor jaar en maand, en markeer de tabel als datumtabel.
Hoe vergelijk je met vorig jaar in Power BI?
Met CALCULATE en SAMEPERIODLASTYEAR op de datumtabel. Let erop dat je vergelijkt tot dezelfde dag als de laatste boeking, anders zet je een halve maand naast een hele.
Verder lezen
- De complete gidsHet Power BI-datamodelHet semantisch model als hart van je rapportage, en als basis voor AI.
- 5 minuten lezenCopilot in Power BI: wat het kan met jouw model, en wat nietCopilot in Power BI beantwoordt vragen in gewone taal op je eigen semantische model. Wat het kan, wat het vraagt, en waarom het model de kwaliteit bepaalt.
- 5 minuten lezenDashboards bouwen met AI: hoe ik het doe en wat ik zelf controleerHoe AI helpt bij het bouwen van een dashboard: bij ontwerp, code en documentatie. En wat ik altijd zelf controleer, met afspraken over data vooraf.