deprecation_date 속성

deprecation_date 속성

deprecation_date 속성은 모델의 폐기 예정 날짜를 지정해 줘요. RFC 3339 형식의 날짜(선택적으로 시간대 오프셋 포함)로 작성하며, 모델의 장기 지원·유지보수 계획을 소통하는 데 사용해요.

출처: 문서

본문

models/<schema>.yml

models:
  - name: my_model
    description: deprecated
    deprecation_date: 1999-01-01 00:00:00.00+00:00

models/<schema>.yml

models:
  - name: my_model
    description: deprecating in the future
    deprecation_date: 2999-01-01 00:00:00.00+00:00

Definition

모델의 폐기 날짜는 날짜 형식으로 작성하며, 선택적으로 시간대 오프셋을 포함할 수 있어요. 지원되는 RFC 3339 형식은 다음과 같아요:

  • YYYY-MM-DD hh:mm:ss.sss±hh:mm
  • YYYY-MM-DD hh:mm:ss.sss
  • YYYY-MM-DD

deprecation_date에 UTC 오프셋이 포함되지 않으면, dbt 실행 환경의 시스템 시간대 기준으로 해석돼요.

Explanation

Purpose

dbt 모델에 deprecation_date를 선언하면 장기 지원·유지보수 계획과 일정을 소통하고 변경 관리를 원활하게 하는 메커니즘을 제공해요. deprecation_date를 설정하는 것은 모델 버전 같은 다른 모델 거버넌스 기능과 함께 잘 작동하지만, 이들과 독립적으로 사용할 수도 있어요.

info — 모델에 강제 계약(enforced contract)이 있다면 deprecation_date가 지나기 전에는 모델을 삭제할 수 없어요. dbt는 다운스트림 소비자를 보호하기 위해 deprecation_date 이전에 강제 계약이 있는 모델을 삭제하는 것을 허용하지 않아요. deprecation_date 이전에 버전 모델을 삭제하려 하면 개발 실행 중에 에러가 발생하고 작업이 실패해요.

Warning messages

프로젝트가 폐기 예정인 모델거나 폐기 날짜가 지난 모델을 참조하면 경고가 생성돼요. 버전 모델이고 더 새로운 버전이 있다면 경고에 그 내용이 포함돼요. 생산자에서 소비자로 이어지는 크로스 팀 커뮤니케이션은 dbt의 모델 버전 관련 내장 기능을 마이그레이션 촉진에 활용하는 이점이에요. 또한 WARN_ERROR_OPTIONS를 통해 사용자가 이 경고를 실제 런타임 에러로 승격시킬 수 있는 메커니즘을 제공해요:

Warning Scenario Affected projects
DeprecatedModel Parsing a project that defines a deprecated model Producer
DeprecatedReference Referencing a model with a past deprecation date Producer and consumers
UpcomingReferenceDeprecation Referencing a model with a future deprecation date Producer and consumers

예시 UpcomingReferenceDeprecation 경고의 예시 출력이에요:

$ dbt parse
15:48:14  Running with dbt=1.6.0
15:48:14  Registered adapter: postgres=1.6.0
15:48:14  [WARNING]: While compiling 'my_model_ref': Found a reference to my_model, which is slated for deprecation on '2038-01-19T03:14:07-00:00'.

Selection syntax

deprecation_date에 특화된 노드 선택 구문은 따로 없어요. 프로그래매틱 호출은 (잠재적으로 dbt list와 함께) 폐기된 모델을 식별하는 한 방법이에요. 예: dbt ls -q --output json --output-keys database schema alias deprecation_date.

Deprecation process

폐기된 모델의 빌드 관련 컴퓨팅·스토리지 비용을 아끼려면 추가 단계가 필요해요. 폐기된 모델은 비활성화(disabled)되거나 제거되기 전까지는 생산자가 계속 빌드하고 소비자가 계속 선택할 수 있어요. dbt는 모델이 삭제될 때 관계를 자동으로 drop하지 않는 것처럼, 폐기된 모델의 관계도 drop하지 않아요. 여기여기와 유사한 전략으로, 폐기되었고 더 이상 사용되지 않는 관계를 drop할 수 있어요.

BigQuery에서 테이블 만료

dbt-bigquery는 BigQuery 내 expiration_timestamp로 변환되는 hours_to_expiration을 설정할 수 있어요. dbt는 deprecation_datehours_to_expiration을 자동으로 동기화하지 않지만, 사용자가 어느 정도 조정할 수는 있어요(예: deprecation_date 후 48시간 뒤에 모델이 만료되도록 설정). BigQuery에서 만료된 테이블은 삭제되고 스토리지가 회수돼요.

더 알아보기 (Learn more)