Zurück zu Utils

dbt macro

Timestamps

Parsen Sie Datums-Strings aus nahezu jedem Format und jeder Sprache in einen konsistenten Snowflake-Timestamp.

Ziel

Quelldaten enthalten Datumsangaben in allen möglichen Formen: ISO 8601, europäische Notation, US-Format, mit oder ohne Zeitzone, mit Monatsnamen auf Deutsch, Französisch oder Spanisch. Das Timestamps-Makro-Set konvertiert all diese Varianten automatisch in ein einheitliches timestamp_tz oder timestamp_ntz in Snowflake.

Anstatt für jedes Quellsystem eine separate TRY_TO_TIMESTAMP Kette zu schreiben, rufen Sie ein Makro auf, das die Erkennungsreihenfolge für Sie verarbeitet.

Was Sie erwarten können

Das Set besteht aus drei Makros:

to_timestamp

Konvertiert einen Datums-String in einen Snowflake-Timestamp. Versucht automatisch, das richtige Format über eine feste Prioritätsreihenfolge zu finden.

fix_months

Normalisiert Monatsnamen zu 3-buchstabigen englischen Abkürzungen (z. B. 'janvier' → 'jan', 'März' → 'mar'). Unterstützt 13+ Sprachen einschließlich Akzenten.

fix_weekdays

Entfernt führende Tagesnamen, sodass ein Datums-String wie 'Monday, 12 April 2021' korrekt geparst werden kann.

Unterstützte Formatgruppen (konfigurierbar):

GruppeBeispiele
iso2024-04-12T14:30:00Z
european12-04-2024, 12/04/2024
us04/12/2024
compact20240412
oracle / mssql / postgresql / mysql / sapDatabase-specific formats

Verwendung

1. In einem dbt-Modell aufrufen

Verwenden Sie to_timestamp direkt in einem SQL-Ausdruck:

SELECT
  {{ to_timestamp('raw_date_column') }} AS parsed_date
FROM {{ source('source', 'table') }}

2. Konfiguration anpassen (_config.sql)

Legen Sie fest, welche Sprachen, Formatgruppen und Ausgabetypen verwendet werden sollen:

-- _config.sql
languages:     ['nl', 'de', 'fr', 'en']
format_groups: ['iso', 'european', 'us']
output_type:   'timestamp_tz'
two_digit_years: false

3. Testen

Validieren Sie die Konfiguration mit den integrierten Test-Makros:

{{ create_test() }}   -- creates test table
{{ do_test() }}       -- fills and validates, logs pass/fail