dbt のテスト入門

中級 dbt

Mike Metzger

Data Engineer

テストとは

  • dbt オブジェクトのアサーション/検証
    • モデル
    • ソース・シード
  • データが期待どおりか確認
    • Null の有無
    • 値が範囲内
    • データ間のリレーション
    • カスタムテスト(後述)
中級 dbt

テストの種類

dbt には3種のテストがあります

  1. 組み込み(4つの定義済み)
  2. 単体(Singular)*
  3. 汎用(Generic)*

$$

  • 後述
中級 dbt

組み込みテスト

  • unique
    • すべての値が一意か検証
  • not_null
    • すべての値が非NULLか検証
  • accepted_values
    • 値が指定リスト内か検証
    • values: [a, b, c, d]
  • relationships
    • 特定のテーブル/列への関係を検証
    • to: ref('table')
    • field: id
中級 dbt

テストの記述場所

  • models/model_properties.yml
    • ファイル名は任意
    • models/schema.yml
  • tests: セクションで定義
version: 2

models:
  - name: taxi_rides_raw
    columns:
      - name: tpep_pickup_datetime
        tests:
          - not_null
      - name: payment_type
        tests:
          - not_null
          - accepted_values:
              values: [1, 2, 3, 4, 5, 6]
中級 dbt

テストの実行

  • dbt test
    • dbt test --select modelname
  • 出力が合格か確認
  • 失敗時はコンパイル済み SQL を確認

dbt の失敗したテスト出力

中級 dbt

失敗の特定

  1. コンパイル済み SQL を探す
  2. target/compiled/projectname/models/model_properties.yml ディレクトリ
    • target/compiled/nyc_yellow_taxi/models/model_properties.yml/
  3. 対応する .sql(失敗テストに一致)を探す
  4. 内容をDBクライアントに貼り付け、問題箇所を確認
  5. データを修正し、dbt run / dbt test を再実行
中級 dbt

Passons à la pratique !

中級 dbt

Preparing Video For Download...