(Last updated on )
dbt のプロジェクトでよく使うコマンド
dbt のプロジェクトでよく使うコマンド
想定読者
- とりあえず、
dbt
を使ってクエリを実行したい人 dbt
やSQLFluff
、dbt-osmosis
の使い方を覚えていない人
前提
<model_name>
=models/*
のファイル名- 例:
models/marts/hogehoge/dim_accounts.sql
であれば、dim_accounts
- 例:
<model_path>
=models/*
のパス名- 例:
models/marts/hogehoge/dim_accounts.sql
であれば、models/marts/hogehoge/dim_accounts.sql
- 例:
モデルの作成
model_name のモデルが参照しているすべてのモデルを含めて BigQuery に反映
モデルのコンパイルも行われる。
$ dbt run -s +<model_name>
main ブランチから追加・変更したモデルが参照しているすべてのモデルを含めて BigQuery に反映
$ dbt run -s $(git diff origin/main --diff-filter=d --name-only | grep -e '^models/.*\.sql' -e '^analyses/.*\.sql' | sed 's/^/+/g')
テストの実行
model_name のテストを実行
$ dbt test -s <model_name>
main ブランチから追加・変更したモデルのテストを実行
big_model
のテストを実行すると BigQuery
の料金が高くなるので除外。
レコード数が多い GA4
などのテーブルに対して、big_model
のタグを付与している。
$ dbt test -s $(git diff origin/main --diff-filter=d --name-only | grep -e '^models/.*\.sql') --exclude +tag:big_model
main ブランチから追加・変更したモデルの更新とテストを実行
これまでに説明した dbt run
と dbt test
を実行。
dbt run
:main
ブランチから追加・変更したモデルが参照しているすべてのモデルを含めてBigQuery
に反映dbt test
:main
ブランチから追加・変更したモデルのテストを実行
$ dbt run -s $(git diff origin/main --diff-filter=d --name-only | grep -e '^models/.*\.sql' -e '^analyses/.*\.sql' | sed 's/^/+/g') && dbt test -s $(git diff origin/main --diff-filter=d --name-only | grep -e '^models/.*\.sql') --exclude +tag:big_model
モデルのコンパイル
target/compiled/<repository_name>/models/*
にコンパイル済みのクエリが作成される。
モデルが参照しているすべてのモデルを含めてコンパイルする。
$ dbt compile -s +<model_name>
Lint の自動修正・実行
Linter
は、SQLFluff を利用している。
model_path のクエリを Lint で自動修正
$ sqlfluff fix -f <model_path>
main ブランチから追加・変更したモデルのクエリを Lint で自動修正
$ sqlfluff fix -f $(git diff origin/main --diff-filter=d --name-only | grep -e '^models/.*\.sql' -e '^analyses/.*\.sql')
model_path のクエリの Lint を実行
$ sqlfluff lint <model_path>
main ブランチから追加・変更したモデルのクエリの Lint を実行
$ sqlfluff fix
で修正できなかったモデルがあった時に実行して、ルールに違反するモデルを確認。
$ sqlfluff lint $(git diff origin/main --diff-filter=d --name-only | grep -e '^models/.*\.sql' -e '^analyses/.*\.sql')
dbt のドキュメントを確認
dbt docs のドキュメントを参照元のデータで埋める
$ dbt-osmosis yaml refactor --project-dir ./ --profiles-dir ./.dbt --fqn staging.dataset_name.stg_dataset_name__object_name
dbt docs の確認
現在の dbt
のドキュメントを確認。
モデルを探すとき、モデルの定義・クエリを確認するときに利用すると便利です。
コンパイル -> ドキュメント生成 -> サーバーを起動 の順で実行。
$ dbt compile && dbt docs generate && dbt docs serve
main ブランチから追加・変更したモデルの一覧
$ git diff origin/main --diff-filter=d --name-only | grep -e '^models/.*\.sql' -e '^analyses/.*\.sql'
dbt の環境が壊れた時に実行
dbt clean
を実行すると dbt_project.yml
で指定している clean-targets
のディレクトリがすべて削除される。
clean-targets
のディレクトリの削除 -> dbt
の package
のインストール の順で実行。
$ dbt clean && dbt deps