Terug naar Utils

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

ParameterStandaardBeschrijving
start_date'2000-01-01'Begindatum van de dimensie
end_date'2030-12-31'Einddatum van de dimensie
fiscal_year_start_month1Startmaand van het fiscale jaar (1–12)
dim_datum_taal'nl'Taal voor namen: 'nl' of 'en'
schoolvakantiesnoneOptionele tabel met schoolvakantiedata (van_datum, tot_datum, vakantie_naam, land, regio).
schoolvakantie_landnoneFilter op land, bijv. 'NL'. Vereist schoolvakanties.
schoolvakantie_regiononeFilter op regio, bijv. 'Noord'. Vereist schoolvakanties.

Wat je kunt verwachten

De gegenereerde tabel bevat kolommen over vijf dimensies:

Dag

dag_nummerdag_van_het_jaardag_van_de_weeknaam_van_de_dagweekend_vlagwerkdag_vlag

Week

kalenderweekiso_week_nummeriso_week_jaariso_week_label

Maand

maandnummermaandnaammaandafkortingmaand_label

Kwartaal & Jaar

kwartaalkwartaal_labelkalenderjaarfiscaal_jaarfiscale_maandfiscaal_kwartaal

Feestdagen

is_feestdagnaam_feestdag

Schoolvakanties (optioneel)

is_schoolvakantieschoolvakantie_naam

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'
) }}
KolomTypeBeschrijving
van_datumDATEEerste dag van de vakantie
tot_datumDATELaatste dag van de vakantie
vakantie_naamTEXTNaam, bijv. "Zomervakantie"
landTEXTLandcode, bijv. 'NL'
regioTEXTRegio of null voor heel het land

Ondersteunde landen en databronnen:

LandRegio'sBron
NLNoord, Midden, Zuidrijksoverheid.nl
BENL, FR, DE gemeenschappenonderwijs.vlaanderen.be / enseignement.be
DE16 Bundesländerkmk.org
GBPer local authoritygov.uk
FRZones A, B, Ceducation.gouv.fr
USSchool district niveauGeen 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