カスタム再利用テストの作成

中級 dbt

Mike Metzger

Data Engineer

再利用テストとは?

  • 複数の場面で再利用できるテスト
  • 組み込みの dbt テストに似るが、任意条件を検証可能
  • Jinja テンプレートを使用
  • tests/generic フォルダに .sql として保存
  • 使う各モデルの model_properties.yml に追記が必要

再利用可能

1 Photo by Sigmund on Unsplash
中級 dbt

再利用テストの作成

{% test check_gt_0(model, column_name) %}

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

{% endtest %}
  1. 最初の行(少なくとも): {% test testname(model, column_name) %}
  2. {{ object }} を差し込む SQL を記述
  3. {% endtest %} で終了
中級 dbt

モデルへの再利用テスト適用

  • model_properties.yml に追加
  • 必要なオブジェクトを指定
  • models の name が model 引数
  • columns の name が 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

追加パラメータ

  • テストに追加パラメータを渡せる
  • accepted_valuesrelationships に近い
  • Jinja ヘッダーの引数として指定
{% test check_columns_unequal(model, column_name, column_name2) %}

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

{% endtest %}
中級 dbt

追加パラメータ付きテストの適用

  • 他のテスト同様に定義
  • テスト定義の下に追加引数を記載
models:
  - name: order
    columns:
      - name: order_time
        tests:
          - check_columns_unequal:
              column_name2: shipped_time
中級 dbt

Ayo berlatih!

中級 dbt

Preparing Video For Download...