■ はじめに
デバッグするために dbt の SQL文を確認する必要ができたので 予習しておく
目次
【1】準備:環境設定 1)DB:PostgreSQL 2)DBTおよびDBTプロジェクト作成 【2】SQL文確認方法 1)Log Level(--log-level debug) 2)SQLファイル出力先 target/run 【3】補足1:dbt compileコマンド 【4】補足2:--log-level-fileオプション 【5】補足3:--debugオプション(-d)
【1】準備:環境設定
1)DB:PostgreSQL
* 以下の関連記事を参考にPostgreSQLを構築
Docker compose ~ Pgweb/pgAdmin ~
https://dk521123.hatenablog.com/entry/2023/08/10/111919
2)DBTおよびDBTプロジェクト作成
* 以下の関連記事を参考にDBTおよびDBTプロジェクト作成
dbt ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/05/30/151003
【2】SQL文確認方法
* dbt run --log-level DEBUGを実行する => 標準出力としてSQLが出力される
https://docs.getdbt.com/reference/commands/run
https://docs.getdbt.com/reference/global-configs/logs#log-level
* dbt run の詳細は、以下の関連記事を参照のこと
dbt ~ dbt CLI ~
https://dk521123.hatenablog.com/entry/2024/07/21/234811
コマンド例
# dbt run --log-level DEBUG dbt run --log-level DEBUG > output.txt
output.txt
[0m06:21:38 On model.users.users_model: /* {"app": "dbt", "dbt_version": "1.8.5", "profile_name": "users", "target_name": "dev", "node_id": "model.users.users_model"} */ create view "sample"."hello"."users_model__dbt_tmp" as ( select id, user_name from hello.users ); [0m06:21:38 SQL status: CREATE VIEW in 0.005 seconds
1)Log Level(--log-level debug)
https://docs.getdbt.com/reference/global-configs/logs#log-level
# dbt --log-level <LOG_TYPE (debug, info, warn, error, none)> run dbt --log-level debug run
2)SQLファイル出力先 target/run
* dbt run (--log-level DEBUG オプションあるなし関わらず) を 実行した際には、target/run配下にSQLが出力される
users/target/run/users/models/users/users_model.sql
create view "sample"."hello"."users_model__dbt_tmp" as ( select id, user_name from hello.users );
【3】補足:dbt compileコマンド
* dbt compileを実行した際には、 target/compiled 配下にSQLが出力されるが 実行される元となるSQL文が出力されているっぽい
https://docs.getdbt.com/reference/commands/compile
dbt compile
users/target/compiled/users/models/users/users_model.sql
select id, user_name from hello.users
【4】補足2:--log-level-fileオプション
使用上の注意:--log-level / --log-level-file との違い
* ログファイルと、コンソールに出力されるログ(stdout:標準出力) のログレベルは異なる
https://docs.getdbt.com/reference/global-configs/logs#log-level
より抜粋 ~~~~~~ To set the file log level as a different value than the console, use the --log-level-file flag. [訳] ファイルのログレベルをコンソールとは異なる値に設定するには、 --log-level-fileフラグを使う。 ~~~~~~
Options | ログファイル | 標準出力 |
---|---|---|
--log-level | 設定が反映される | 設定が反映される |
--log-level-file | 設定が反映される | 設定が反映されない |
【5】補足3:--debugオプション(-d)
https://docs.getdbt.com/reference/global-configs/logs#debug-level-logging
より抜粋 ~~~~~~ The DEBUG config redirects dbt's debug logs to standard output. This has the effect of showing debug-level log information in the terminal in addition to the logs/dbt.log file. This output is verbose. The --debug flag is also available via shorthand as -d. [訳] DEBUG設定はdbtのデバッグログを標準出力にリダイレクトする。 これは、logs/dbt.logファイルに加えて、デバッグレベルのログ情報 をターミナルに表示する効果がある(logs/dbt.log ファイルに加えて)。 この出力は冗長である。 debugフラグは-dという省略形でも使用できます。 ~~~~~~
参考文献
https://zenn.dev/ishiki_a/scraps/4cd61dc2e07b0f
https://dev.classmethod.jp/articles/dbt-analyses/
https://qiita.com/dai_zamurai/items/c0f564d41be50b9dde3d
関連記事
dbt ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/06/30/000000
dbt ~ 環境設定編 ~
https://dk521123.hatenablog.com/entry/2023/12/16/152147
dbt ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/05/30/151003
dbt ~ dbt CLI ~
https://dk521123.hatenablog.com/entry/2024/07/21/234811
pip install ライブラリ更新
https://dk521123.hatenablog.com/entry/2024/08/23/012045
dbt を v1.8 に更新後エラー
https://dk521123.hatenablog.com/entry/2024/08/24/002455
Docker compose ~ Pgweb/pgAdmin ~
https://dk521123.hatenablog.com/entry/2023/08/10/111919
Python with dbt ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2024/07/20/034930