■ はじめに
https://dk521123.hatenablog.com/entry/2023/11/29/003751
の続き。 DBT の Macro 作ったので、実用的な例をメモしておく
目次
例1:PostgreSQL/Snowflake での UTC時間取得 例2:クリーン処理
例1:PostgreSQL/Snowflakeでの UTC時間取得
-- 呼び出し側SELECT {{ utc_current_timestamp('YYYY-MM-DD') }} AScurrent_dateFROM demo_table;
macros/utc_current_timestamp.sql
{% macro utc_current_timestamp(datetime_format) -%} {{ return(adapter.dispatch('utc_current_timestamp')(datetime_format)) }} {%- endmacro %} -- For PostgreSQL {% macro postgres__utc_current_timestamp(datetime_format) %} to_char(current_timestamp at time zone 'UTC', datetime_format) {% endmacro %} -- For Snowflake {% macro snowflake__utc_current_timestamp(datetime_format) %} TO_VARCHAR(sysdate(), datetime_format) {% endmacro %}
例2:クリーン処理
-- 呼び出し側SELECT {{ clean('id') }} AS id, {{ clean('name') }} AS name, {{ clean('age') }} AS age FROM demo_table;
macros/clean.sql
{% macro clean(target_item) -%} CASE WHEN UPPER(TRIM({{ target_item }})) IN ('','\"\"','N/A','NULL') THEN NULL ELSE TRIM({{ target_item }}) END {%- endmacro %}
関連記事
dbt ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/06/30/000000
dbt ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/05/30/151003
dbt ~ 条件分岐 ~
https://dk521123.hatenablog.com/entry/2024/09/11/003301
dbt Macro ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/11/29/003751
dbt Macro ~ DWHごとに処理切替 / adapter.dispach ~
https://dk521123.hatenablog.com/entry/2024/08/20/150724
Jinja2 ~ Macro ~
https://dk521123.hatenablog.com/entry/2023/11/28/235951