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)" 수명 주기를 따라 구현돼요.

  1. 제공된 경로에 모델이 존재하지 않으면 새 모델을 만들어요.
  2. 모델이 존재하지만 유형이 다르면 기존 모델을 드롭하고 새 모델을 만들어요.
  3. --full-refresh가 제공되면 설정 변경과 on_configuration_change 설정과 무관하게 기존 모델을 교체해요.
    • BigQuery 사용자는 모델의 materialization을 바꾼 뒤(예: table에서 view로) dbt가 기존 관계를 완전히 교체하고 변경이 완전히 적용되도록 dbt run 대신 dbt run --full-refresh를 실행해야 할 수 있어요.
  4. 설정 변경이 없으면 해당 유형의 기본 동작을 수행해요(예: materialized view에 대해 refresh 적용).
  5. on_configuration_change 설정에 따라 설정 변경을 적용할지 결정해요.

더 알아보기 (Learn more)