【dbt】dbt CLI ~ --emptyフラグ ~

■ はじめに

小ネタ。

dbt CLI の --emptyフラグ についてメモっておく

目次

【1】--emptyフラグ
【2】使用上の注意
【3】使いどころ
【4】--emptyあれこれ
 1)使用例
 2)--emptyかどうかの判断

【1】--emptyフラグ

* --emptyフラグを付与することにより、
 クエリに条件「where false limit 0」が追加され、
 0行のテーブル・ビューを生成する

https://docs.getdbt.com/reference/commands/run#the---empty-flag

【2】使用上の注意

* From dbt v1.8 (古いdbtだと機能としてない)
* dry run ではなく、実際にクエリが実行される
 => そのため、materialized="table" のモデルの場合
 洗い替え(DROP + CTAS(CREATE TABLE AS SELECT))なので、
 もともとデータがあったら、そのデータは消されて空テーブルが出来上がる

【3】使いどころ

* クエリを回さず、文法を確認したい場合
 => Snowflakeの場合、スキャン量が大きいクエリではコスト削減に繋がる
* 空テーブルで良いのでテーブル作成したい場合

【4】--emptyあれこれ

1)使用例

dbt run --empty

dbt build --empty

2)--emptyかどうかの判断

{% if flags.EMPTY %}
 -- --emptyフラグが実行された場合
{% endif %}

補足:flags について

* 以下の公式ドキュメント参照のこと

https://docs.getdbt.com/reference/dbt-jinja-functions/flags

参考文献

https://zenn.dev/analytics_eng/articles/715b5763b165da
https://zenn.dev/finatext/articles/dbt-high-performance-incremental-model
https://dev.classmethod.jp/articles/dbt-try-unit-tests/

関連記事

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 ~ 更新 / 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/12/07/060129
dbt ~ 環境設定 / Docker 編 ~
https://dk521123.hatenablog.com/entry/2024/10/11/230419
dbt ~ Version更新あれこれ ~
https://dk521123.hatenablog.com/entry/2024/12/23/010839
dbt を v1.8 に更新後エラー
https://dk521123.hatenablog.com/entry/2024/08/24/002455
pip install ライブラリ更新
https://dk521123.hatenablog.com/entry/2024/08/23/012045