Snowflake 어댑터 동작 변경
Snowflake 어댑터 동작 변경 (Snowflake adapter behavior changes)
dbt-snowflake에 특화된 동작 변경 플래그들을 다뤄요. 동적 테이블의 transient 기본값과 Iceberg 테이블의 Snowflake 관리형 스토리지 동작을 제어하는 플래그를 설명해 드릴게요.
출처: 문서
본문
다음은 dbt-snowflake에 특화된 현재의 동작 변경 플래그 목록이에요:
| Flag | dbt-snowflake: Intro | dbt-snowflake: Maturity | Status |
|---|---|---|---|
| snowflake_default_transient_dynamic_tables | 1.12.0 | TBD | Active |
| snowflake_managed_iceberg_default | 1.12.0 | TBD | Active |
snowflake_default_transient_dynamic_tables 플래그
dbt-snowflake v1.12부터 사용할 수 있어요. snowflake_default_transient_dynamic_tables 플래그는 모델 config가 transient 설정을 명시하지 않을 때 Snowflake 동적 테이블을 transient로 생성할지 제어해요.
false(기본값)로 설정: 동적 테이블은 특정 모델에transient: true를 설정하지 않는 한 Fail-safe 기간이 있는 영구(permanent) 테이블로 생성돼요.true로 설정: 모델 config에transient가 지정되지 않으면 동적 테이블이 transient(no Fail-safe period)로 생성돼요. Transient 동적 테이블은 스토리지 비용을 줄일 수 있어요.
snowflake_default_transient_dynamic_tables 플래그는 dbt_project.yml의 flags 키 아래에 설정해요. 동적 테이블 모델의 transient 컨피그를 사용해 기본 설정을 덮어쓸 수 있어요.
snowflake_managed_iceberg_default 플래그
dbt v2
v2에서는 이 동작이 기본값이며 설정할 플래그가 없어요. external_volume은 SNOWFLAKE_MANAGED가 기본값이고, 테이블이 Snowflake 관리형 스토리지를 사용할 때 dbt는 base_location을 생략해요.
dbt-snowflake v1.12부터 사용할 수 있어요. snowflake_managed_iceberg_default 플래그는 모델이 external_volume 없이 Iceberg 테이블에 table_format: iceberg를 설정할 때 dbt가 무엇을 하는지 제어해요.
Snowflake는 Snowflake 관리형 스토리지를 사용하는 Iceberg 테이블에 BASE_LOCATION을 거부하며 BASE_LOCATION property is not supported for Iceberg tables using Snowflake Managed Storage 오류를 반환해요. 이 플래그를 사용하면 카탈로그를 직접 구성하지 않아도 Snowflake Horizon이 수락하는 데이터 정의 언어(DDL)를 dbt가 생성할 수 있어요.
false(기본값)로 설정: dbt는external_volume을 내보내지 않아요. Snowflake는 계정·데이터베이스·스키마 레벨에 설정된 기본 외부 볼륨에 폴백하며, dbt는 여전히base_location을 생성해요.true로 설정: dbt는external_volume = 'SNOWFLAKE_MANAGED'를 내보내고base_location을 생략해서 테이블이 Snowflake 관리형 스토리지를 사용하게 해요.
이 플래그는 계정·데이터베이스·스키마 레벨에 설정된 기본 외부 볼륨에 의존하는 프로젝트의 대상 스토리지를 바꾸지 않도록 기본값이 false예요.
이 플래그에 의존하지 않는 두 가지 경우가 있어요:
external_volume을SNOWFLAKE_MANAGED로 설정하면 dbt는 항상base_location을 생략해요. dbt는 모델 config에서 먼저, 그다음 catalogs.yml의 카탈로그 정의에서external_volume을 해석하므로 어느 곳에 설정해도base_location이 생략돼요.external_volume을 Amazon S3, Azure, Google Cloud Storage 같은 사용자 정의 볼륨으로 설정하면 dbt는 항상external_volume과base_location을 모두 내보내요.
dbt_project.yml의 flags 키 아래에 플래그를 설정해요:
dbt_project.yml
flags:
snowflake_managed_iceberg_default: true
더 알아보기 (Learn more)
- dbt-snowflake 어댑터 — Snowflake 연결 설정
- About global configs — 전역 구성