[新機能]変更されたModelの数やデータの違いを確認できるdbt Cloudの「Advanced CI」を試してみた

[新機能]変更されたModelの数やデータの違いを確認できるdbt Cloudの「Advanced CI」を試してみた

Clock Icon2024.10.18

さがらです。

dbt Cloudの新機能として、変更されたModelの数やデータの違いを確認できる「Advanced CI」がリリースされました。※Enterprise限定の機能です。

https://docs.getdbt.com/docs/deploy/advanced-ci

本機能を試してみたので、その内容をまとめてみます。

前提知識

dbt CloudでのCI Jobの設定が必要となります。この設定方法は下記のブログが参考になると思いますので、併せてご覧ください。

https://dev.classmethod.jp/articles/dbt-cloud-new-ci-job/

事前準備:Advanced CIを有効化する

対象のdbt CloudのAccount settingsから、Advanced CIの機能を有効化する必要があります。

https://docs.getdbt.com/docs/cloud/account-settings#account-access-to-advanced-ci-features

Account settingsから、Enable account access to Advanced CIにチェックを入れます。

2024-10-18_04h25_13

CI Jobで「Run compare changes」を有効化する

次に対象のCI JobでRun compare changesの設定を有効化します。

2024-10-18_04h30_25

Advanced CIの挙動を確認する

実際に、Modelを変更してプルリクエストを発行した際に、どのようにAdvanced CIが機能するのかを確認してみます。

下図のように、number_of_ordersの値を単純に2倍にした変更を行ったとします。

2024-10-18_04h34_41

するとCI Jobが起動しますので、Detailを押します。

2024-10-18_04h35_49

dbt Cloudで実行されたCI JobのCompareを確認します。

Overviewタブを見ると、今回のプルリクエストに含まれる変更・追加・削除されたModelの一覧と、何が変更されたかの全体像が確認できます。

2024-10-18_04h46_19

Primary keysタブを見ると、Primary keyの変更があった場合の詳細情報が確認できるようになっています。(今回はPrimary keyを変更していないため特に表示されていませんが…)

2024-10-18_04h51_56

Modified rowsタブを見ると、実際に変更を行ったカラムにおいて、値がどのように変わったのかを確認できます。

2024-10-18_04h53_15

Columnsタブを見ると、今回変更のあったカラムの一覧が確認できます。値が変更となったのか(Value change)、データ型が変更となったのか(Datatype)、カラムの順番が変更となったのか(Column position)、という粒度で見れるようになっています。

2024-10-18_04h55_18

また、プルリクエストの画面において、dbt Cloudから変更内容をまとめたコメントも行われます。

2024-10-18_04h56_54

注意事項

Advanced CIを有効化すると対象のCI JobのRun summaryタブで一番最後にGenerate compare changesが追加されています。

このGenerate compare changesにかかった所要時間を見ると、1つ上のdbt build --select state:modified+とほぼ変わらない所要時間となっています。

今回変更したModelは1つだけでもbuildと同じくらい時間がかかっていたため、一度に複数のModelを変更している場合はより長い時間がかかる可能性があります。この点だけご注意ください。

2024-10-18_04h41_38

最後に

dbt Cloudの新機能である、変更されたModelの数やデータの違いを確認できる「Advanced CI」を試してみました。

所要時間には注意が必要ですが、何が変更されたのかがすぐにわかるので非常に便利な機能だと思います!

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.