💬
dbt × data-diff のチュートリアルをやりました
はじめに
Automate dbt development testing in Snowflake with data-diffに倣って、チュートリアルを行っていきます。
取得したい結果
前提事項
- Snowflake accountを準備する
- dbt-core をインストールする(バージョン1.4未満 2023/03/24 現在)
手順
1. dbtの環境作成
サンプルレポジトリをプルする
git clone https://github.com/datafold/demo
cd demo
dbtのパッケージをインストールする
sudo apt update
sudo apt install python3-pip -y
pip3 install dbt-snowflake==1.3
- 最新のバージョンだと依存関係でエラーが起こりました
- 今回は1.3で検証を行っています(dbtのバージョンは1.0 <=, < 1.4)
profiles.ymlを修正する
demo:
target: dev
outputs:
dev:
type: snowflake
account: *****
user: *****
password: *****
role: ISL_TRAINING
database: TR_DAISUKE_HARATO
warehouse: DEMO_WH
schema: DEV_DAN
threads: 5
prod:
type: snowflake
account: *****
user: *****
password: *****
role: ISL_TRAINING
database: TR_DAISUKE_HARATO
warehouse: DEMO_WH
schema: PROD_DAN
threads: 5
dbt debug で接続確認を行う
dbt debug
dev及びprod環境に対してbuildを行う
dbt build -t dev
dbt build -t prod
2. data-diffの環境作成
data-diff をインストールする
pip install 'data-diff[dbt]'
dbt_project.yamlに追記する
vars:
data_diff:
prod_database: TR_DAISUKE_HARATO
prod_schema: PROD_DAN
主キーに対してタグ付けを行う
- data-diff は主キーを軸に、行が追加・更新または削除されたかを判別します
dim_orgs を実行する
dbt run --select dim_orgs
runした履歴を対象にdiffを取得する
data-diff --dbt
結果画面
dev環境に対して修正を加える
- where句の追記を行う
dim_orgs を実行する
dbt run --select dim_orgs
runした履歴を対象に再度diffを取得する
data-diff --dbt
結果画面
dim_orgsより下流を実行する
dbt run --select dim_orgs+
runした履歴を対象に再度diffを取得する
data-diff --dbt
結果画面
まとめ
- 数値差分を簡単に取得できるのがよい
Discussion