materialized
materialized (materialization)
materialized 설정은 dbt 모델을 웨어하우스에 어떤 방식으로 유지(persist)할지를 정하는 materialization 전략을 지정해요. dbt에 내장된 유형으로는 ephemeral, table, view, materialized_view, incremental이 있어요.
출처: dbt 공식 문서
본문
설정 방법
프로젝트 YAML 파일
dbt_project.yml
config-version: 2
models:
<resource-path>:
+materialized: <materialization_name>
프로퍼티 YAML 파일
models/properties.yml
models:
- name: <model_name>
config:
materialized: <materialization_name>
SQL 파일 설정
models/<model_name>.sql
{{ config(
materialized="<materialization_name>"
) }}
select ...
정의
Materializations은 dbt 모델을 웨어하우스에 유지하는 전략이에요. dbt에 내장된 materialization 유형은 다음과 같아요.
ephemeral— ephemeral 모델은 데이터베이스에 직접 빌드되지 않아요.table— 모델은 매 실행마다 table로 다시 빌드돼요.view— 모델은 매 실행마다 view로 다시 빌드돼요.materialized_view— 대상 데이터베이스에 materialized views를 생성하고 유지할 수 있게 해요.incremental— incremental 모델은 마지막 실행 이후 dbt가table에 레코드를 삽입하거나 업데이트할 수 있게 해요.
dbt에서 custom materializations을 구성할 수도 있어요. 커스텀 materialization은 dbt의 기능을 특정 요구 사항에 맞게 확장하는 강력한 방법이에요.
생성 우선순위
Materialization은 다음 "드롭 스루(drop through)" 수명 주기를 따라 구현돼요.
- 제공된 경로에 모델이 존재하지 않으면 새 모델을 만들어요.
- 모델이 존재하지만 유형이 다르면 기존 모델을 드롭하고 새 모델을 만들어요.
--full-refresh가 제공되면 설정 변경과on_configuration_change설정과 무관하게 기존 모델을 교체해요.- BigQuery 사용자는 모델의 materialization을 바꾼 뒤(예:
table에서view로) dbt가 기존 관계를 완전히 교체하고 변경이 완전히 적용되도록dbt run대신dbt run --full-refresh를 실행해야 할 수 있어요.
- BigQuery 사용자는 모델의 materialization을 바꾼 뒤(예:
- 설정 변경이 없으면 해당 유형의 기본 동작을 수행해요(예: materialized view에 대해 refresh 적용).
on_configuration_change설정에 따라 설정 변경을 적용할지 결정해요.
더 알아보기 (Learn more)
- Materializations — 각 materialization 유형의 상세 개념
- on_configuration_change — 설정 변경 시 동작 방식
- full_refresh — 전체 새로고침 동작