【dbt】dbt ~ Snowflakeテーブル ~

■ はじめに

dbt で Snowflake の テーブルを扱うことになり
Transientテーブルを永続テーブルに切り替える必要ができたので
調査してみた

なお、Transient テーブルなどのSnowflakeのテーブルについて
以下の関連記事を参照のこと

Snowflake ~ 基本編 / テーブル ~
https://dk521123.hatenablog.com/entry/2022/09/03/012113

目次

【0】公式ドキュメント
 1)注意点
【1】Transient tables
 1)切替方法1:dbt_project.yml
 2)切替方法2:モデルファイル(SQLファイル)
【2】Temporary tables
 1)切替方法1:dbt_project.yml
 2)切替方法2:モデルファイル(SQLファイル)
【3】Dynamic tables

【0】公式ドキュメント

* 以下のサイト参照

[dbt公式] Snowflake configurations
https://docs.getdbt.com/reference/resource-configs/snowflake-configs

1)注意点

* デフォルトは、Transient テーブル
 => 永続テーブルではない

公式ドキュメントより

 By default, all Snowflake tables created by dbt are transient

【1】Transient tables

* 「transient」を指定する
 => ただし、上述「1)注意点」で記載した通り、
 デフォルトがTransient テーブルなので、
 永続テーブルにしたかったら「transient: false」を指定する

https://docs.getdbt.com/reference/resource-configs/snowflake-configs#transient-tables

1)切替方法1:dbt_project.yml

https://docs.getdbt.com/reference/resource-configs/snowflake-configs#configuring-transient-tables-in-dbt_projectyml

dbt_project.yml

models:
  +transient: false # ★
  my_project:

2)切替方法2:モデルファイル(SQLファイル)

https://docs.getdbt.com/reference/resource-configs/snowflake-configs#configuring-transient-tables-in-dbt_projectyml

{{
  config(
    materialized='table',
    transient=true -- ★
  )
}}

select * from ...

【2】Temporary tables

* 「tmp_relation_type」を指定する(後は、【1】と同じ感じ)

https://docs.getdbt.com/reference/resource-configs/snowflake-configs#temporary-tables

1)切替方法1:dbt_project.yml

dbt_project.yml

models:
  <resource-path>:
    +tmp_relation_type: table | view ## If not defined, view is the default.

2)切替方法2:モデルファイル(SQLファイル)

{{ config(
    tmp_relation_type="table | view", ## If not defined, view is the default.
) }}

【3】Dynamic tables

* 以下を参照

https://docs.getdbt.com/reference/resource-configs/snowflake-configs#dynamic-tables

{{ config(
    materialized="dynamic_table",
    on_configuration_change="apply" | "continue" | "fail",
    target_lag="downstream" | "<integer> seconds | minutes | hours | days",
    snowflake_warehouse="<warehouse-name>",

) }}

参考文献

https://dev.classmethod.jp/articles/snowflake-dbt-specific-settings/
https://knowledge.insight-lab.co.jp/snowflake/dbt-data-pipeline

関連記事

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
Snowflake ~ 基本編 / テーブル ~
https://dk521123.hatenablog.com/entry/2022/09/03/012113