■ はじめに
小ネタ。 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