💬

dbt × data-diff のチュートリアルをやりました

2023/03/24に公開

はじめに

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