案例研究:使用 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 构建电商数据模型