dbt Cloudで差分があるmodelだけを実行&テストするCIジョブの設定が更に簡単になったので試してみた
さがらです。
dbt Cloudで差分があるmodelだけを実行&テストするCIジョブについて、以前下記のブログを書いていました。
しかし2023年9月のアップデートで、新しく「continuous integration(CI) jobs」という新しいタイプのジョブが追加され、これを用いるとより簡単にCIジョブの定義が可能となります。
この新しいCIジョブの定義について試してみたので、本記事で内容をまとめてみます。
事前準備
これまでのCIジョブと同じように、差分だけを実行するCIジョブを設定するには、Set deployment type
がProduction
となるEnvironmentのジョブを設定し、一度でも実行しておく必要があります。
後で設定するCIジョブは、このProduction
を設定したEnvironmentのジョブにより生成されるArtifactsとの差分を確認する必要があるからです。
実際に私は下図のように設定しました。
- Environment
- ジョブ
CIジョブの設定
続いて、CIジョブの設定をしていきます。
Production
を設定したEnvironmentにおいて、+ Create job
を押し、Continuous integration job
を押します。
あとは、Job name
を変更して右上のSave
を押せば基本的にはOKです!理由としては、デフォルトで実行するdbtコマンドはdbt build --select state:modified+
が入っており、Triggered by pull requests
にもデフォルトでチェックが入っているためです。
CIジョブが想定通りに動くか確認してみた
ということで実際にCIジョブが想定通りに動くかを見てみます。
下図のような依存関係において、stg_customers.sql
だけを編集してコミットしてみます。
この上でGitHubでPull Requestを作成すると、下図のようにdbt Cloudのcheck処理が走ります。
dbt Cloudを見ると、下図のようにCIジョブが走っていました。
このCIジョブによりSnowflakeでは専用のスキーマが作られ、編集を行ったstg_customers
ビューとその下流に位置するModelであるcustomers
テーブルだけが作られています。編集を行ったModelとその下流に位置するModelだけが作られているため、想定通りの挙動ですね!
最後に
2023年9月のアップデートで新しく追加された「continuous integration(CI) jobs」を試してみました。
とても簡単にCIを導入できるため、dbt Cloudを導入されている場合にはぜひ試してほしいです!