dbt macro
Generate Date Dimension
Genereer een complete datumdimensie voor Snowflake, inclusief fiscale periodes en Nederlandse feestdagen.
Doel
Een datumdimensie is de ruggengraat van elk data warehouse. Met deze macro genereer je in één stap een volledige dim_datum tabel voor Snowflake, met alle kalender- en fiscale attributen die je nodig hebt voor tijdgebaseerde analyses. Geen handmatig SQL meer, geen ontbrekende feestdagen.
De macro berekent Nederlandse feestdagen automatisch, inclusief beweeglijke feestdagen zoals Pasen en Pinksteren (via het Computus-algoritme) en houdt rekening met de zondagsuitwijkregel voor Koningsdag.
Parameters
| Parameter | Standaard | Beschrijving |
|---|---|---|
| start_date | '2000-01-01' | Begindatum van de dimensie |
| end_date | '2030-12-31' | Einddatum van de dimensie |
| fiscal_year_start_month | 1 | Startmaand van het fiscale jaar (1–12) |
| dim_datum_taal | 'nl' | Taal voor namen: 'nl' of 'en' |
| schoolvakanties | none | Optionele tabel met schoolvakantiedata (van_datum, tot_datum, vakantie_naam, land, regio). |
| schoolvakantie_land | none | Filter op land, bijv. 'NL'. Vereist schoolvakanties. |
| schoolvakantie_regio | none | Filter op regio, bijv. 'Noord'. Vereist schoolvakanties. |
Wat je kunt verwachten
De gegenereerde tabel bevat kolommen over vijf dimensies:
Dag
Week
Maand
Kwartaal & Jaar
Feestdagen
Schoolvakanties (optioneel)
Gebruik
1. Maak een dbt model aan
Maak een bestand dim_datum.sql aan in je dbt models-map en roep de macro daarin aan:
{{ generate_date_dimension(
start_date = '2000-01-01',
end_date = '2035-12-31'
) }}2. Fiscaal jaar instellen
Begint jouw fiscale jaar in april? Geef de startmaand mee:
{{ generate_date_dimension(
fiscal_year_start_month = 4
) }}3. Schoolvakanties koppelen
Koppel een tabel met schoolvakantiedata en filter optioneel op land en regio. De macro voegt is_schoolvakantie en schoolvakantie_naam toe aan de output:
{{ generate_date_dimension(
schoolvakanties = ref('schoolvakanties'),
schoolvakantie_land = 'NL',
schoolvakantie_regio = 'Noord'
) }}| Kolom | Type | Beschrijving |
|---|---|---|
| van_datum | DATE | Eerste dag van de vakantie |
| tot_datum | DATE | Laatste dag van de vakantie |
| vakantie_naam | TEXT | Naam, bijv. "Zomervakantie" |
| land | TEXT | Landcode, bijv. 'NL' |
| regio | TEXT | Regio of null voor heel het land |
Ondersteunde landen en databronnen:
| Land | Regio's | Bron |
|---|---|---|
| NL | Noord, Midden, Zuid | rijksoverheid.nl |
| BE | NL, FR, DE gemeenschappen | onderwijs.vlaanderen.be / enseignement.be |
| DE | 16 Bundesländer | kmk.org |
| GB | Per local authority | gov.uk |
| FR | Zones A, B, C | education.gouv.fr |
| US | School district niveau | Geen centrale bron |
4. Taal configureren
Stel de taal in via een dbt variabele in dbt_project.yml:
vars: dim_datum_taal: 'nl' # or 'en' for English column values