Zurück zu Utils

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

QuelltypZieltyp
VARCHAR, CHAR, TEXT, STRING, …TEXT
NUMBER, DECIMAL, FLOAT, INT, …DECIMAL(digits_before, digits_after)
DATE, DATETIME, TIMESTAMP_*TIMESTAMP_TZ
TIMETIMESTAMP_TZ (anchor date 2000-01-01)
BOOLEAN, VARIANT, ARRAY, OBJECTUnchanged

Parameter

ParameterStandardBeschreibung
relatieErforderlich. Verweis auf die Quelltabelle über ref() oder source().
voor_komma18Anzahl der Stellen vor dem Komma beim DECIMAL-Casting.
na_komma4Anzahl 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']
) }}