사례 연구: 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로 전자상거래 데이터 모델 구축