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:mmYYYY-MM-DD hh:mm:ss.sssYYYY-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_date와 hours_to_expiration을 자동으로 동기화하지 않지만, 사용자가 어느 정도 조정할 수는 있어요(예: deprecation_date 후 48시간 뒤에 모델이 만료되도록 설정). BigQuery에서 만료된 테이블은 삭제되고 스토리지가 회수돼요.
더 알아보기 (Learn more)
- Model versions — 버전 모델 거버넌스
- Model contracts — 모델 계약 강제
- Warnings — 경고를 에러로 승격