Quantcast
Channel: プログラミング
Viewing all articles
Browse latest Browse all 8415

【dbt】dbt Macro ~ 基本編 ~ - プログラム の超個人的なメモ

$
0
0

■ はじめに

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


Viewing all articles
Browse latest Browse all 8415

Trending Articles