案例研習:使用 dbt 建立電商資料模型
Susan Sun
Freelance Data Scientist
dbt 使用「三種」語言:
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 建立電商資料模型