버전 호환성 확인
버전 호환성 확인 (Checking version compatibility)
dbt v1 개발 초기에는 breaking change가 더 흔했어요. 그래서 dbt 버전 요구사항을 설정하도록 권장했고, 호환되지 않는 dbt 버전으로 프로젝트를 실행하면 기본적으로 오류가 발생해요. 이 페이지에서는 그 검사와 방어적 패키지 코드 작성법을 다뤄요.
출처: 문서
본문
dbt v1 개발의 처음 몇 년 동안 breaking change가 더 흔했어요. 그 때문에 dbt 버전 요구사항을 설정하도록 권장했어요 — 특히 더 새로운 기능이나 향후 dbt v1 버전에서 깨질 수 있는 기능을 사용한다면요. 기본적으로 호환되지 않는 dbt 버전으로 프로젝트를 실행하면 dbt는 오류를 발생시켜요.
VERSION_CHECK 설정을 사용해 이 검사를 비활성화하고 오류 메시지를 억제할 수 있어요:
$ dbt run --no-version-check
Running with dbt=1.0.0
Found 13 models, 2 tests, 1 archives, 0 analyses, 204 macros, 2 operations...
dbt 릴리스 트랙 (dbt release tracks)
2024년부터 dbt에서 릴리스 트랙을 선택해 지속적인 dbt 버전 업그레이드를 받으면, dbt는 require-dbt-version 구성을 무시해요.
dbt Labs는 dbt 프로젝트의 코드에 제로 breaking change를 약속하며 dbt에 지속적으로 릴리스해요. 다음 모범 사례도 권장해요:
dbt 패키지 설치하기 (Installing dbt packages)
프로젝트에서 사용할 dbt 패키지를 설치할 때, 패키지가 동료가 유지하든 오픈 소스 dbt 커뮤니티의 구성원이 유지하든, 패키지를 특정 리비전 또는 버전 경계에 고정(pinning)하기를 권장해요. dbt는 개발 중 패키지의 버전/리비전을 잠가 프로덕션에서 예측 가능한 빌드를 보장함으로써 이 작업을 기본적으로 처리해요. 자세한 내용은 Predictable package installs를 참고하세요.
dbt 패키지 유지하기 (Maintaining dbt packages)
동료나 오픈 소스 커뮤니티를 대신해 dbt 패키지를 유지한다면, 다른 필수 패키지와 전역 매크로가 사용 가능한지 확인하는 방어적인 코드를 작성하기를 권장해요. 예를 들어 패키지가 전역 dbt 네임스페이스의 date_spine 매크로 가용성에 의존한다면 다음과 같이 작성할 수 있어요:
models/some_days.sql
{% macro a_few_days_in_september() %}
{% if not dbt.get('date_spine') %}
{{ exceptions.raise_compiler_error("Expected to find the dbt.date_spine macro, but it could not be found") }}
{% endif %}
{{ date_spine("day", "cast('2020-01-01' as date)", "cast('2030-12-31' as date)") }}
{% endmacro %}
더 알아보기 (Learn more)
- Predictable package installs — 패키지 버전 고정
- About global configs — 전역 구성