dbtにより生成されるドキュメントの「Lineage Graph」を使って各dbtコマンドの実行対象のmodelやsourceを確認する #dbt

2022.07.01

さがらです。

dbtでドキュメントをコマンド一つで簡単に生成出来るということは、dbtを少し知っている方ならご存知だと思います。

そんなdbtのドキュメントですが、ドキュメント上のLineage Graphを使って、--select--excludeでオプション指定した場合に実行されるmodelを確認できることはご存知でしょうか?私はつい最近まで知らなかったです。

「これ便利だなー!」と感じたので、dbtのドキュメント上のLineage Graphに関して、--selectなどのオプション含め、出来ることをまとめてみます。

Lineage Graphの起動方法

起動はとても簡単です!

対象のドキュメントを開いたら、右下のアイコンを押せば起動できます。

次章から、このLineage Graph上での各機能についてまとめていきます。

resources

まず、一番左下のresourcesについてです。

表示しているリネージにおいて、どのdbtのリソースを対象とするかを選択できます。

例えばModelsを選択項目から外すと、リネージ上のModelを灰色にすることができます。

packages

packagesでは、選択したpackage(project)だけ、リネージ上で色づいて表示させることが可能です。

このドキュメントを生成したdbt projectでは別のリポジトリ(parent_project)をpackageとしてインストールしており、sourceやstagingフォルダ内のmodelを定義しています。

このparent_projectを選択項目から外すと、リネージ上で該当するsourceやmodelの色が灰色になります。

tags

tagsでは、modelやsourceなどにtagを付与している場合に、リネージ上で対象とするものを絞り込むことができます。

例えば、martcustomerというtagだけを選択すると、選択したtagが付与されているmodelだけ色づけて表示することができます。

また、今回のdbt projectではsourceに関してtagを付与していなかったので、untaggedだけを選択すると、sourceだけが色づいて表示されます。

--selectと--exclude

dbtでは各種コマンドを実行するときに実行対象のmodelを--select--excluceで絞り込むことができます。

まずはシンプルな例で、--selectcustomersと入れると、customers.sqlが実行されるため、customersだけが色づいて表示されます。

加えて、+を加えることで、上流または下流のmodelも含め、実行対象のmodelを色づいて表示することも可能です。

さらに、tag:オプションも指定可能です!

modelとしてcustomersを指定した上で、tags:orderとすることで「order」がtagとして付与されているmodelも色づいて表示可能です。(--selectオプションはスペースで条件を区切るとORで実行されます。)

この--selectや--excludeオプションを用いた実行対象のmodelを確認できることが、個人的なLineage Graphの目玉機能です!

sourceやmodelの数が増えてくるとdbtにより生成されるDAGも複雑になってしまい、「指定のmodelと、関連するmodelやsourceだけを実行するにはどのように--select--excludeを記述すればいいのだろう」となることもあると思います。

そんな時、このドキュメント上のLineage Graphを使うことで、--select--excludeオプションを用いたときに実行されるmodelやsourceのシミュレーションが可能となります!

最後に

dbtにより生成されるドキュメントの「Lineage Graph」を使って各dbtコマンドの実行対象のmodelやsourceを確認する方法をまとめてみました。

リネージを見ることが出来るだけでもありがたいのですが、対象とする物を絞り込みできるのは更にありがたいですね!

管理するmodelやsourceが多くなってきたときにはぜひLineage Graphをご利用ください。