dbt macro
Timestamps
Parseer datumstrings uit vrijwel elk formaat en elke taal naar een consistente Snowflake timestamp.
Doel
Brondata bevat datums in alle mogelijke gedaanten: ISO 8601, Europese notatie, Amerikaans formaat, met of zonder tijdzone, met maandnamen in het Duits, Frans of Spaans. De Timestamps macro set zet al deze varianten automatisch om naar een uniforme timestamp_tz of timestamp_ntz in Snowflake.
In plaats van voor elke bronsysteem een aparte TRY_TO_TIMESTAMP-keten te schrijven, roep je één macro aan die de detectievolgorde voor je afhandelt.
Wat je kunt verwachten
De set bestaat uit drie macros:
to_timestamp
Converteert een datumstring naar een Snowflake timestamp. Probeert automatisch het juiste formaat te vinden via een vaste prioriteitsvolgorde.
fix_months
Normaliseert maandnamen naar 3-letterige Engelse afkortingen (bijv. 'janvier' → 'jan', 'März' → 'mar'). Ondersteunt 13+ talen inclusief accenten.
fix_weekdays
Verwijdert voorloopdag-namen zodat een datumstring als 'Monday, 12 April 2021' correct geparseerd kan worden.
Ondersteunde formaatgroepen (configureerbaar):
| Groep | Voorbeelden |
|---|---|
| iso | 2024-04-12T14:30:00Z |
| european | 12-04-2024, 12/04/2024 |
| us | 04/12/2024 |
| compact | 20240412 |
| oracle / mssql / postgresql / mysql / sap | Databasespecifieke formaten |
Gebruik
1. Aanroepen in een dbt model
Gebruik to_timestamp direct in een SQL-expressie:
SELECT
{{ to_timestamp('raw_date_column') }} AS parsed_date
FROM {{ source('bron', 'tabel') }}2. Configuratie aanpassen (_config.sql)
Stel in welke talen, formaatgroepen en uitvoertype je wil gebruiken:
-- _config.sql languages: ['nl', 'de', 'fr', 'en'] format_groups: ['iso', 'european', 'us'] output_type: 'timestamp_tz' two_digit_years: false
3. Testen
Valideer de configuratie met de ingebouwde testmacros:
{{ create_test() }} -- maakt testtabel aan
{{ do_test() }} -- vult en controleert, logt pass/fail