【dbt】dbt Macro ~ DWHごとに処理切替 / adapter.dispach ~

■ はじめに

https://dk521123.hatenablog.com/entry/2023/11/29/003751

の続き。

小ネタ。
DBTにおいて、各DWH(DB)により、処理を切り替える方法を記載する

目次

【1】adapter object
 1)dispach メソッド
【2】サンプル
 例1:Hello world

【1】adapter object

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

{{ adapter.<method name> }}

1)dispach メソッド

* macroの呼び出す際に、対象DWHごとに処理を切り替えたい場合に使用

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

DWH [DWH]__[マクロ名(my_macro)]
Postgres postgres__my_macro
Redshift redshift__my_macro
Snowflake snowflake__my_macro
BigQuery bigquery__my_macro
OtherAdapter otheradapter__my_macro
default default__my_macro

【2】サンプル

例1:Hello world

{% macro concat(fields) -%}
    {{ return(adapter.dispatch('concat')(fields)) }} -- ★呼び出し★
{%- endmacro %}

-- <DWH>__<マクロ名>で定義

-- デフォルト
{% macro default__concat(fields) -%}
    concat({{ fields|join(', ') }})
{%- endmacro %}

-- RedShift用
{% macro redshift__concat(fields) %}
    {{ fields|join(' || ') }}
{% endmacro %}

-- Snowflake用
{% macro snowflake__concat(fields) %}
    {{ fields|join(' || ') }}
{% endmacro %}

参考文献

https://zenn.dev/mashiike/articles/829ab9b4cafe8f

関連記事

dbt ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/06/30/000000
dbt ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/05/30/151003
dbt Macro ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/11/29/003751
dbt Macro ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2024/10/22/002940