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는 많은 진자 템플릿 방식을 지원하고, 대표적으로는