Erstellung individueller wiederverwendbarer Tests

dbt für Forgeschrittene

Mike Metzger

Data Engineer

Was ist ein wiederverwendbarer Test?

  • In mehreren Situationen wiederverwendbar
  • Ähnlich wie ein vordefinierter dbt-Test, jedoch beliebige Prüfbedingungen
  • Verwendet Jinja-Vorlagen
  • Als .sql-Datei im Projektordner tests/generic gespeichert
  • Muss für jedes Modell zum model_properties.yml hinzugefügt werden

Wiederverwendbar

1 Foto von Sigmund auf Unsplash
dbt für Forgeschrittene

Erstellen eines wiederverwendbaren Tests

{% test check_gt_0(model, column_name) %}

select * 
from {{ model }}
where {{ column_name }} > 0

{% endtest %}
  1. Erste Zeile (mindestens): {% test testname(model, column_name) %}
  2. SQL-Abfrage hinzufügen mit {{ object }}-Ersetzungen
  3. Datei mit {% endtest %} abschließen
dbt für Forgeschrittene

Anwenden wiederverwendbarer Test

  • Zu model_properties.yml hinzufügen
  • Objekte nach Bedarf definieren
  • Der name-Wert des Modells ist das Modellargument
  • Der name-Wert der Spalte (column) ist das Spaltenargument
version: 2

models:
  - name: taxi_rides_raw
    columns:
      - name: tpep_pickup_datetime
        tests:
          - not_null

- name: total_fare tests: - check_gt_0
dbt für Forgeschrittene

Zusätzliche Parameter

  • Hinzufügen zusätzliche Parameter zum Test
  • Ähnlich wie accepted_values und relationships
  • Hinzufügen als Argumente zum Jinja-Header
{% test check_columns_unequal(model, column_name, column_name2) %}

select * from {{ model }}
where {{ column_name }} = {{ column_name2 }}

{% endtest %}
dbt für Forgeschrittene

Anwenden zusätzlicher Parameter-Tests

  • Wie andere Tests definieren
  • Hinzufügen zusätzlicher Argumente unterhalb der Testdetails
models:
  - name: order
    columns:
      - name: order_time
        tests:
          - check_columns_unequal:
              column_name2: shipped_time
dbt für Forgeschrittene

Lass uns üben!

dbt für Forgeschrittene

Preparing Video For Download...