dbt와 Jinja 소개

사례 연구: dbt로 전자상거래 데이터 모델 구축

Susan Sun

Freelance Data Scientist

dbt는 세 가지 언어를 사용합니다

dbt는 세 가지 언어를 사용합니다:

  • 변환에는 SQL
  • 문서화와 테스트에는 YAML
  • 템플릿에는 Jinja
  • SQL 예:

    SELECT * FROM ...
    
  • YAML 예:

    - name: customers
      description: A data mart
    
  • Jinja 예:

    FROM {{ ref('stg_looker__users') }}
    
사례 연구: dbt로 전자상거래 데이터 모델 구축

dbt Jinja란?

dbt Jinja란?

  • 파이썬 스타일의 템플릿 언어
  • 동적 SQL 생성을 지원
  • dbt 모델, 매크로, 테스트 등에 사용

왜 유용한가요?

  • 협업 향상
  • 중복 감소(DRY), 재사용성 증가

dbt에서 Jinja 예시:

  • dbt 모델 참조

    SELECT *
    FROM {{ ref('stg_looker__users') }}
    
  • 루프 생성

    {% for column in ['col1', 'col2'] %}
      SELECT {{ column }}
      FROM table_name
    {% endfor %}
    
사례 연구: dbt로 전자상거래 데이터 모델 구축

dbt Jinja의 종류

  1. Jinja 문(statement){%...%}로 감쌉니다
     {% set order_statuses = ['Shipped', 'Complete', 'Processing'] %}
    
  2. Jinja 표현식(expression){{...}}로 감쌉니다
     SELECT * FROM {{ ref('stg_looker__users') }}
    
  3. Jinja 주석(comment){# #}로 감쌉니다
     {# This is a comment #}
    
사례 연구: dbt로 전자상거래 데이터 모델 구축

Jinja 문: set

  • Jinja 문 종류: set, loop, conditional(if/else), macros

  • set 문은 변수를 만들고 값을 할당합니다.

    • 템플릿:
      {% set ... %}
      
    • 예:
      {% set country = 'Australia' %}
      
사례 연구: dbt로 전자상거래 데이터 모델 구축

Jinja와 dbt 컴파일

사용 예시

  • customers.sql 내부, 원본:
{% set country = 'Australia' %}

SELECT ...
FROM ...
WHERE country = '{{ country }}'

컴파일 결과 코드

  • dbt compile -s customers.sql 출력:


SELECT ...
FROM ...
WHERE country = 'Australia'

사례 연구: dbt로 전자상거래 데이터 모델 구축

Jinja와 dbt 컴파일

  • 단일 모델의 터미널 출력
  • 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 compile 하위 명령으로 자동 생성된 디렉터리 스크린샷. 최상위는 looker ecommerce dbt 프로젝트 폴더. 그 아래 `target`, 그 다음 `compiled`. `compiled` 아래에는 모델과 테스트의 컴파일된 쿼리가 프로젝트 구조를 따라 배치됨.

사례 연구: dbt로 전자상거래 데이터 모델 구축

Ayo berlatih!

사례 연구: dbt로 전자상거래 데이터 모델 구축

Preparing Video For Download...