HOME/✴️ dbt/

✴️ dbt TEST

Article Outline

image

|| $ dbt test

e.g./

dbt test 
    --profiles-dir ./profiles 
    --vars '$(cat ./config/local/vars.yml)'
    --select 'company_hoge_jp__bigquery_resource__jobs_url_daily_extract_of_connectedsheet'

実務では、上記のよに単に test を実施するのではなく、Optionsを付して慎重に行っていた。

| テスト方法(2パターン)

  1. Singular data tests(単一)cf.
  2. Generic data tests (汎用)cf.

1.Singular data tests

-- tests/always_fail_test.sql
select id
from hoge
where true

2.Generic data tests

# models/schema.yml
---
version: 2

models:
  - name: model_name_hoge
    columns:
      - name: fuga
        description: 'fuga is fuga.'
        tests:
          - unique
          - not_null
          - accepted_values:
            values: ['hoge', 'fuga', 'piyo']
          - relationships:
            to: ref('other_model_name')
            field: id
      - name: fuga2
        description: 'fuga2 is fuga2...'
        tests:
          - my_not_null

cf. Model properties -dbt

2-1. dbt が用意してくれているテスト
テスト項目 指定されたカラムに対して query
- unique データが全てユニーク値であることをテスト distinct
- not_null null を含まないことをテスト is not null
- accepted_values 指定された値以外を含まないことをテスト not in
- relationships 「to:」 に指定されたモデルの field に指定されたカラムに含まれていることをテスト exsits
2-2. 独自に組み込めるテスト(CostumGeneric)
  1. テストを記述 ```sql

-- tests/generic/hoge.sql {% test my_not_null(model, column_name) %}

select *
from {{ model }}
where {{ column_name }} is null

{% endtest %}

2. `$ dbt test`
3. `target/compiled/` にコンパイルされたSQLが抽出されている。


cf. [Writing custom generic data tests](https://docs.getdbt.com/best-practices/writing-custom-generic-tests) -dbt



### | 小技🏴
```shell
$ dbt test --store-failures

テスト実行したときに失敗したテストによって条件を満たさなかった行を保存する事が出来る。

|| REFERENCE