[dbt] v1.0リリース!dbt buildを試してみた

一気にビルドしマッスル
2022.01.07

大阪オフィスの玉井です。

dbtユーザーの方であれば、既に知っている方がほとんどだと思いますが、2021年12月、ついにv1.0がリリースされました。

逆に言うと、5年ほどの間、実はまだバージョン1未満だったのです。

今回は、v1で登場した新機能のうち、dbt buildコマンドをご紹介します。

buildコマンドの概要

従来、dbtのコマンドは、seedtestrunsnapshotなどなど、(ざっくり言うと)1つの操作に対して1コマンドという形でした。ですので、こういったコマンドを連続で実行したい場合、そのまま、複数のコマンドを続けて実行していかないといけません。

ですので、場合によっては、これらの操作をセットにして一気に実行したい時があります(というか、そういう方が多いかもしれません)。dbt Cloudであれば、Job機能がありますので、それを使って、いくつかのコマンドをセットにして定期的に実行させる…なんてことができます。

buildは、modelの作成(run)やテスト、csvのアップロード(seed)等を、1コマンドで一気に実行してくれます。公式ドキュメントに「In DAG order, 」とありますが、ここがポイントで、依存関係をdbt側で考慮してもらいつつ、各種操作をドガガッと実行してくれる部分がウリです(個人的意見)。(ざっくり言うと)各種コマンドの順番を、ユーザー側で考える必要が無い…ということですね。

例えば、いくつかのmodelから新しいmodelを作成する、という場合、新しいmodelを作成する前に、前段階のmodelに対して、予めテストを実行しておきたいことが多いと思います。そういう時、buildコマンドの中で、テストに失敗した場合、それに依存する処理はスキップされます(テストに失敗しても、それを無視して、以降の処理も実行してしまう…ということは起こらないようになっている。

※ドキュメントを見ると、v1.0以前から存在していたようにも見えますが、上記の1.0リリース記事に「新機能」として紹介されていたので、まあ良いでしょう。

やってみた

環境

  • dbt Cloud
    • dbt v1.0
  • Google BigQuery

準備

下記のように、modelやtestを予め用意しておきます(今回、内容の詳細は省きます)。

ちなみに、DWH側も空っぽの新しいデータセットを設定したので、今回の実行が初めてとなります。つまり、dbt実行後、DWH側に正しくデータが生成されていれば、検証としては成功となります。

実行

早速、dbt buildを実行してみます。下記の通り、runやtestが一気に実行されました。順序について、私は何も指示していませんが、DAGが考慮された状態で実行されていますね(いきなり最後のmodelを作ろうとする、とかは無い)。

ちゃんと、途中でtestも実行されています。

DWH側にも、一気にmodelが作成されていました。

おわりに

今回はrunとtestだけが存在するProjectで試しましたが(準備がめんどくさかった)、公式ドキュメントによれば、seedsnapshotも対象になっているので、そのあたりもよく使われるユーザーさんは、ぜひお試しください。

また、オプションもちょこちょこあるようです。buildはするんだけど、一部実行対象を絞りたいとかもできそうです。汎用的なオプションも対応しているようで、例えば—full-refreshも付与できます。

もう少し検証したい気もしますが、他の新機能を触るのが先かな…。