Terug naar Utils

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):

GroepVoorbeelden
iso2024-04-12T14:30:00Z
european12-04-2024, 12/04/2024
us04/12/2024
compact20240412
oracle / mssql / postgresql / mysql / sapDatabasespecifieke 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