Membuat test kustom yang dapat digunakan kembali

dbt Tingkat Menengah

Mike Metzger

Data Engineer

Apa itu test yang dapat digunakan kembali?

  • Test yang dapat dipakai di banyak situasi
  • Mirip test bawaan dbt, tapi bisa cek kondisi apa pun
  • Menggunakan templating Jinja
  • Disimpan sebagai file .sql di folder proyek tests/generic
  • Harus ditambahkan ke model_properties.yml untuk tiap model yang memakainya

Dapat digunakan kembali

1 Foto oleh Sigmund di Unsplash
dbt Tingkat Menengah

Membuat test yang dapat digunakan kembali

{% test check_gt_0(model, column_name) %}

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

{% endtest %}
  1. Baris pertama (minimal): {% test testname(model, column_name) %}
  2. Tambahkan kueri SQL, dengan substitusi {{ object }}
  3. Akhiri file dengan {% endtest %}
dbt Tingkat Menengah

Menerapkan test ke model

  • Tambahkan ke model_properties.yml
  • Definisikan objek sesuai kebutuhan
  • Nilai models: name adalah argumen model
  • Argumen columns: name adalah argumen column_name
version: 2

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

- name: total_fare tests: - check_gt_0
dbt Tingkat Menengah

Parameter ekstra

  • Dapat menambah parameter ekstra pada test
  • Mirip accepted_values dan relationships
  • Tambahkan sebagai argumen di header Jinja
{% test check_columns_unequal(model, column_name, column_name2) %}

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

{% endtest %}
dbt Tingkat Menengah

Menerapkan test dengan parameter ekstra

  • Definisikan seperti test lainnya
  • Tambahkan argumen ekstra di bawah detail test
models:
  - name: order
    columns:
      - name: order_time
        tests:
          - check_columns_unequal:
              column_name2: shipped_time
dbt Tingkat Menengah

Ayo berlatih!

dbt Tingkat Menengah

Preparing Video For Download...