Hierarchical models in DBT

우상욱·2024년 3월 2일
0

DBT

목록 보기
5/16

What is a hierarchy in dbt


  • 계층 구조는 모델 간 종속성을 나타내며, 이는 원본데이터와 변환된 데이터 간의 관계를 의미합니다.
  • 이는 DAG 또는 Lineage Grapah 라고도 합니다.
    • 데이터엔지니어링 도구에서 일반적인 개념으로 말하는 DAG보다는 조금 더 구체적인 의미입니다.
  • 따라서 종속성을 염두해두고 모델을 구축하고 업데이트해야합니다.
    - 그림에서 보듯이, taxi_rides_raw 모델을 구축해야 다른 다운스트림 테이블을 구축할 수 있습니다.
    • 만약 Lineage Graph가 없다면 테이블은 알파벳 순서로 구성됩니다.

How are hierarchies defined?


  • model 파일 안에 Jinja 템플릿 언어를 사용해서 모델 종속성을 정의할 수 있습니다.
  • 보통 ref 함수를 사용합니다.
  • 실제로 종속성을 정의하려면 쿼리의 테이블 이름을 두 개의 여는 중괄호로 바꿉니다.
    • {{ ref('model_name') }} in SQL
  • (Re-)Materialize table with dbt run
  • dbt는 ref가 사용된 템플릿을 SQL 파일의 실제 테이블 이름으로 바꿉니다.
SELECT
  first_name, last_name
FROM taxi_rides_raw

이렇게 된 쿼리를 아래처럼 수정해서, 모델의 종속성을 표현합니다.

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

jinja templating language


  • 간단한 텍스트 기반 템플릿 시스템입니다.
  • Django, Flask와 같은 dbt 이외의 많은 도구에서 사용됩니다.
  • {{ ... }} 는 두 개의 여는 중괄호와 닫는 중괄호 사이에 변수를 특정합니다.
  • dbt가 run되면 이 진자 템플릿에 쓰인 걸 실제 값으로 전환합니다.
  • dbt는 많은 진자 템플릿 방식을 지원하고, 대표적으로는
    • ref
    • config
    • docs
profile
데이터엔지니어

0개의 댓글