dbt의 계층 구조

dbt 입문

Mike Metzger

Data Engineer

dbt에서의 계층이란?

  • dbt 프로젝트 내 의존성을 표현합니다
  • 지향 비순환 그래프(DAG), 계보 그래프라고도 합니다
    • 일반 DAG가 아닌, dbt에 특화된 개념입니다
  • 의존성에 따라 모델을 빌드/업데이트할 수 있습니다

dbt DAG / 계보 그래프

dbt 입문

계층 상세

  • avg_fare_per_daytotal_creditcard_riders_per_daytaxi_rides_raw에 의존합니다
  • dbt는 먼저 taxi_rides_raw를 빌드합니다
  • 계보 그래프가 없으면 dbt는 항목을 알파벳순으로 생성합니다
    • taxi_rides_raw 없이는 avg_fare_per_day가 실패합니다

dbt DAG / 계보 그래프

dbt 입문

계층은 어떻게 정의되나요?

  • 모델 파일에서 Jinja 템플릿 언어로 정의합니다
  • 보통 ref 함수를 사용합니다
  • SQL에서 테이블명을 {{ ref('model_name') }}로 바꿉니다
  • dbt run으로 테이블을 (재)구현합니다
  • ref 템플릿은 실제 테이블명으로 치환됩니다
dbt 입문

계층 예시

SELECT 
  first_name, last_name
FROM taxi_rides_raw
SELECT 
  first_name, last_name
FROM {{ ref('taxi_rides_raw') }}
dbt 입문

연습해 봅시다!

dbt 입문

Preparing Video For Download...