Nghiên cứu tình huống: Xây dựng mô hình dữ liệu E-Commerce với dbt
Susan Sun
Freelance Data Scientist
dbt dùng ba ngôn ngữ:
Ví dụ SQL:
SELECT * FROM ...
Ví dụ YAML:
- name: customers
description: A data mart
Ví dụ Jinja:
FROM {{ ref('stg_looker__users') }}
dbt Jinja là gì?
Tại sao hữu ích?
Ví dụ Jinja trong dbt:
Tham chiếu các model dbt
SELECT *
FROM {{ ref('stg_looker__users') }}
Tạo vòng lặp
{% 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 #}
Các loại câu lệnh Jinja: set, loop, conditional (if/else), macros, v.v.
Câu lệnh Jinja set tạo biến và gán giá trị.
{% set ... %}
{% set country = 'Australia' %}
Cách dùng
customers.sql, như sau:{% set country = 'Australia' %}
SELECT ...
FROM ...
WHERE country = '{{ country }}'
Mã đã biên dịch
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 được tạodbt compile tạo các file đã biên dịch:
Nghiên cứu tình huống: Xây dựng mô hình dữ liệu E-Commerce với dbt