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):
| Gruppe | Beispiele |
|---|---|
| iso | 2024-04-12T14:30:00Z |
| european | 12-04-2024, 12/04/2024 |
| us | 04/12/2024 |
| compact | 20240412 |
| oracle / mssql / postgresql / mysql / sap | Database-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