dbt macro
Uniform Datatypes
Wandeln Sie alle Spalten einer Quelltabelle automatisch in einheitliche Snowflake-Datentypen um, ohne jede Spalte manuell angeben zu müssen.
Ziel
Quelldaten enthalten oft ein Durcheinander von Datentypen. Das uniform_datatypes Makro inspiziert die Metadaten einer Tabelle und generiert automatisch ein SELECT Statement, in dem jede Spalte in einen konsistenten Zieltyp umgewandelt wird.
Ungültige Werte werden über TRY_TO_* Funktionen verarbeitet: Anstatt einen Fehler auszulösen, werden sie in NULLumgewandelt. So bricht ein einzelner fehlerhafter Wert nicht mehr Ihre gesamte Staging-Schicht.
Typ-Mapping
| Quelltyp | Zieltyp |
|---|---|
| VARCHAR, CHAR, TEXT, STRING, … | TEXT |
| NUMBER, DECIMAL, FLOAT, INT, … | DECIMAL(digits_before, digits_after) |
| DATE, DATETIME, TIMESTAMP_* | TIMESTAMP_TZ |
| TIME | TIMESTAMP_TZ (anchor date 2000-01-01) |
| BOOLEAN, VARIANT, ARRAY, OBJECT | Unchanged |
Parameter
| Parameter | Standard | Beschreibung |
|---|---|---|
| relatie | — | Erforderlich. Verweis auf die Quelltabelle über ref() oder source(). |
| voor_komma | 18 | Anzahl der Stellen vor dem Komma beim DECIMAL-Casting. |
| na_komma | 4 | Anzahl der Stellen nach dem Komma beim DECIMAL-Casting. |
| kolommen_uitsluiten | [] | Liste von Spaltennamen, die nicht transformiert werden. |
Verwendung
1. In einem dbt-Modell aufrufen
Verwenden Sie das Makro als vollständigen Body eines Staging-Modells:
{{ uniform_datatypes(ref('my_source_table')) }}2. Präzision anpassen
Legen Sie die gewünschte Präzision für numerische Spalten fest:
{{ uniform_datatypes(
source('raw', 'orders'),
voor_komma = 15,
na_komma = 2
) }}3. Spalten ausschließen
Übergeben Sie eine Liste von Spalten, die Sie unverändert lassen möchten:
{{ uniform_datatypes(
ref('my_source_table'),
kolommen_uitsluiten = ['_loaded_at', '_row_hash']
) }}