ケーススタディ: dbt で構築する Eコマースのデータモデル
Susan Sun
Freelance Data Scientist
dbt は3つの言語を使います:
SQL の例:
SELECT * FROM ...
YAML の例:
- name: customers
description: A data mart
Jinja の例:
FROM {{ ref('stg_looker__users') }}
dbt の Jinja とは?
なぜ有用か
dbt における Jinja の例:
dbt モデルの参照
SELECT *
FROM {{ ref('stg_looker__users') }}
ループの作成
{% for column in ['col1', 'col2'] %}
SELECT {{ column }}
FROM table_name
{% endfor %}
{%...%} で囲む {% set order_statuses = ['Shipped', 'Complete', 'Processing'] %}
{{...}} で囲む SELECT * FROM {{ ref('stg_looker__users') }}
{# #} で囲む {# This is a comment #}
Jinja ステートメントの種類: set, loop, conditional (if/else), macros など
set ステートメントは変数を作成して値を代入
{% set ... %}
{% set country = 'Australia' %}
使用例
customers.sql 内の記述例:{% set country = 'Australia' %}
SELECT ...
FROM ...
WHERE country = '{{ country }}'
コンパイル後のコード
dbt compile -s customers.sql の出力:
SELECT ...
FROM ...
WHERE country = 'Australia'
dbt compile -s customers.sql の出力:Running with dbt=1.8.4
...
Compiled node 'customers' is:
WITH customer_base AS (
SELECT
...
FROM "dbt"."main"."stg_looker__users"
WHERE country = 'Australia'
)
...
/target/compiled ディレクトリdbt compile によりコンパイル済みファイルが作成:
ケーススタディ: dbt で構築する Eコマースのデータモデル