Zurück zu Utils

dbt macro

Generate Date Dimension

Generieren Sie eine vollständige Datumsdimension für Snowflake, einschließlich Fiskalperioden und niederländischer Feiertage.

Ziel

Eine Datumsdimension ist das Rückgrat jedes Data Warehouses. Dieses Makro generiert in einem Schritt eine vollständige dim_datum Tabelle für Snowflake mit allen Kalender- und Fiskalattributen, die Sie für zeitbasierte Analysen benötigen. Kein manuelles SQL mehr, keine fehlenden Feiertage.

Das Makro berechnet niederländische Feiertage automatisch, einschließlich beweglicher Feiertage wie Ostern und Pfingsten (über den Computus-Algorithmus), und berücksichtigt die Sonntagsausweichregel für den Königstag.

Parameter

ParameterStandardBeschreibung
start_date'2000-01-01'Startdatum der Dimension
end_date'2030-12-31'Enddatum der Dimension
fiscal_year_start_month1Startmonat des Geschäftsjahres (1–12)
dim_datum_taal'nl'Sprache für Namen: 'nl' oder 'en'
schoolvakantiesnoneOptionale Tabelle mit Schulferiendata (van_datum, tot_datum, vakantie_naam, land, regio).
schoolvakantie_landnoneFilter nach Land, z. B. 'NL'. Erfordert schoolvakanties.
schoolvakantie_regiononeFilter nach Region, z. B. 'Noord'. Erfordert schoolvakanties.

Was Sie erwarten können

Die generierte Tabelle enthält Spalten über fünf Dimensionen:

Tag

dag_nummerdag_van_het_jaardag_van_de_weeknaam_van_de_dagweekend_vlagwerkdag_vlag

Woche

kalenderweekiso_week_nummeriso_week_jaariso_week_label

Monat

maandnummermaandnaammaandafkortingmaand_label

Quartal & Jahr

kwartaalkwartaal_labelkalenderjaarfiscaal_jaarfiscale_maandfiscaal_kwartaal

Feiertage

is_feestdagnaam_feestdag

Schulferien (optional)

is_schoolvakantieschoolvakantie_naam

Verwendung

1. Ein dbt-Modell anlegen

Erstellen Sie eine Datei dim_datum.sql in Ihrem dbt-Models-Ordner und rufen Sie das Makro darin auf:

{{ generate_date_dimension(
    start_date = '2000-01-01',
    end_date   = '2035-12-31'
) }}

2. Geschäftsjahr festlegen

Beginnt Ihr Geschäftsjahr im April? Übergeben Sie den Startmonat:

{{ generate_date_dimension(
    fiscal_year_start_month = 4
) }}

3. Schulferien hinzufügen

Verbinden Sie eine Tabelle mit Schulferiendata und filtern Sie optional nach Land und Region. Das Makro fügt is_schoolvakantie und schoolvakantie_naam zur Ausgabe hinzu:

{{ generate_date_dimension(
    schoolvakanties      = ref('schoolvakanties'),
    schoolvakantie_land  = 'NL',
    schoolvakantie_regio = 'Noord'
) }}
SpalteTypBeschreibung
van_datumDATEErster Tag der Ferien
tot_datumDATELetzter Tag der Ferien
vakantie_naamTEXTName, z. B. "Sommerferien"
landTEXTLändercode, z. B. 'NL'
regioTEXTRegion oder null für das gesamte Land

Unterstützte Länder und Datenquellen:

LandRegionenQuelle
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. Sprache konfigurieren

Legen Sie die Sprache über eine dbt-Variable in dbt_project.ymlfest:

vars:
  dim_datum_taal: 'nl'   # or 'en' for English column values