on_configuration_change
on_configuration_change (설정 변경 시 동작)
on_configuration_change 설정은 materialized view 같은 객체에 설정 변경이 감지됐을 때 dbt가 어떻게 동작할지를 정해요. apply(기본값), continue, fail 세 가지 값을 가져요.
출처: dbt 공식 문서
본문
정보
이 기능은 현재 일부 어댑터의 materialized views에서만 지원돼요.
on_configuration_change 설정은 세 가지 값을 가져요.
apply(기본값) — 가능하면 기존 데이터베이스 객체를 완전한 rebuild 없이 업데이트하려고 시도해요.- 참고: 개별 설정 변경이 전체 새로고침(full refresh)을 요구하면, 개별 alter 문 대신 전체 새로고침을 수행해요.
continue— 객체를 건드리지 않았다는 경고와 함께 실행을 계속 허용해요.- 참고: 이러면 다운스트림 모델이 구현되지 않은 변경에 의존할 수 있어 다운스트림 실패가 생길 수 있어요.
fail— 변경이 감지되면 전체 실행을 강제로 실패시켜요.
프로젝트 YAML 파일
dbt_project.yml
models:
<resource-path>:
+materialized: <materialization_name>
+on_configuration_change: apply | continue | fail
프로퍼티 YAML 파일
models/properties.yml
models:
- name: [<model-name>]
config:
materialized: <materialization_name>
on_configuration_change: apply | continue | fail
SQL 파일 설정
models/<model_name>.sql
{{ config(
materialized="<materialization_name>",
on_configuration_change="apply" | "continue" | "fail"
) }}
생성 우선순위
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 — materialized view 개념
- full_refresh — 전체 새로고침 동작