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
| Parameter | Standard | Beschreibung |
|---|---|---|
| start_date | '2000-01-01' | Startdatum der Dimension |
| end_date | '2030-12-31' | Enddatum der Dimension |
| fiscal_year_start_month | 1 | Startmonat des Geschäftsjahres (1–12) |
| dim_datum_taal | 'nl' | Sprache für Namen: 'nl' oder 'en' |
| schoolvakanties | none | Optionale Tabelle mit Schulferiendata (van_datum, tot_datum, vakantie_naam, land, regio). |
| schoolvakantie_land | none | Filter nach Land, z. B. 'NL'. Erfordert schoolvakanties. |
| schoolvakantie_regio | none | Filter nach Region, z. B. 'Noord'. Erfordert schoolvakanties. |
Was Sie erwarten können
Die generierte Tabelle enthält Spalten über fünf Dimensionen:
Tag
Woche
Monat
Quartal & Jahr
Feiertage
Schulferien (optional)
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'
) }}| Spalte | Typ | Beschreibung |
|---|---|---|
| van_datum | DATE | Erster Tag der Ferien |
| tot_datum | DATE | Letzter Tag der Ferien |
| vakantie_naam | TEXT | Name, z. B. "Sommerferien" |
| land | TEXT | Ländercode, z. B. 'NL' |
| regio | TEXT | Region oder null für das gesamte Land |
Unterstützte Länder und Datenquellen:
| Land | Regionen | Quelle |
|---|---|---|
| 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. 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