🐡
dbt docs generate で作成するdocumentにおいて一部のmodelだけを表示することはできるのか?
この記事はdbt Advent Calendar 2024のシリーズ2の19日目の記事です。
背景
- dbt docs genereteで作成するdocumentはmodelの関係性を図示やデータカタログを作成するできる便利な機能ですが、modelやsourceの数が増えた時に特定の部分に限定してLineageやデータカタログを作れないか気になった
- UI上のLineageでは以下のようにmodelのpathやtagsで指定して部分的に表示することができる
- 関連記事
調査結果
- 結論としては selectやexcludeは利用可能だけど、適用されるのはcompileのみなのでdocumentの表示を限定することは無理っぽい
- どのような結果になったのかを簡単に紹介する。とりあえず使ったmoduleのversionを貼っておく
dbt-core:
- installed: 1.8.9
Plugins:
- duckdb: 1.8.4
- 背景の2枚目に貼ったLineageを再現するために必要なmodels/customers_features_agg.sql と依存するmodelのみをcompileする
dbt docs generate \
--select "+models/customers_features_agg.sql" \
--static
背景の1枚目と同様にselectで指定したmodel以外もdocumentに含まれています
ただし、models/customers_features_agg.sqlの実行に必要なcustomersの中間処理はcompileされていますが、ordersの中間処理はcompileされていない
- dbt_project.ymlにおいて enabled っというconfigを使うことで特定のmodelに限定して compileやdocument作成を行うことはできる。ただし部分的にdocumentを作るためにその都度dbt_project.ymlを書き換えるのはあまり良くない感じがする。こういったケースではdbt project自体を別に切り分けるほうがよい。
models:
tutorial:
# Config indicated by + and applies to all files under models/example/
+materialized: table
orders:
enabled: false
Discussion