CREATE ICEBERG TABLE
CREATE ICEBERG TABLE (Delta files in object storage)
현재/지정한 스키마에 객체 저장소(외부 클라우드 저장소)의 Delta Lake 메타데이터 파일을 사용하는 Apache Iceberg™ 테이블을 만들거나 교체하는 명령이에요. 이 유형의 Iceberg 테이블은 카탈로그 인티그레이션(catalog integration)이 필요해요.
출처: 문서
본문
Snowflake 문서에서 Delta Direct는 이 정확한 패턴을 의미해요: 외부 볼륨의 Delta Lake 트랜잭션 로그와 Parquet 파일을 읽는 Snowflake의 Iceberg 테이블. CATALOG_SOURCE = OBJECT_STORE와 TABLE_FORMAT = DELTA인 카탈로그 인티그레이션과 이 명령을 함께 사용해요.
테이블을 만들기 전에 Iceberg 메타데이터와 데이터 파일이 저장될 외부 볼륨을 만들어야 해요. 또한 테이블용 카탈로그 인티그레이션도 필요해요.
구문 (Syntax)
CREATE [ OR REPLACE ] ICEBERG TABLE [ IF NOT EXISTS ] <table_name>
[ EXTERNAL_VOLUME = '<external_volume_name>' ]
[ CATALOG = '<catalog_integration_name>' ]
BASE_LOCATION = '<relative_path_from_external_volume>'
[ REPLACE_INVALID_CHARACTERS = { TRUE | FALSE } ]
[ AUTO_REFRESH = { TRUE | FALSE } ]
[ COMMENT = '<string_literal>' ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ WITH CONTACT ( <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ] ) ]
필수 매개변수
<table_name>: 테이블의 식별자예요. 스키마 내에서 고유해야 해요.BASE_LOCATION = 'relative_path_from_external_volume': 테이블의EXTERNAL_VOLUME위치에서 Snowflake가 Delta 테이블 파일에 접근할 수 있는 디렉터리까지의 상대 경로를 지정해요. 디렉터리를 가리켜야 하며 단일 파일을 가리킬 수 없어요. Delta 트랜잭션 로그 하위 폴더(예:my/base/location/_delta_log/)를 포함해야 해요.
선택 매개변수
EXTERNAL_VOLUME = 'external_volume_name': Iceberg 테이블이 메타데이터 파일과 데이터를 Parquet 형식으로 저장하는 외부 볼륨의 식별자를 지정해요. 지정하지 않으면 스키마, 데이터베이스, 계정 순으로 기본값을 사용해요.CATALOG = 'catalog_integration_name': 이 테이블의 카탈로그 인티그레이션 이름을 지정해요. 지정하지 않으면 스키마, 데이터베이스, 계정 순으로 기본값을 사용해요.REPLACE_INVALID_CHARACTERS = { TRUE | FALSE }: 쿼리 결과에서 잘못된 UTF-8 문자를 유니코드 대체 문자(�)로 바꿀지 지정해요. 외부 Iceberg 카탈로그를 사용하는 테이블에만 설정할 수 있어요. 기본값:FALSE.AUTO_REFRESH = { TRUE | FALSE }: Snowflake가 외부 클라우드 저장소 업데이트를 자동으로 폴링할지 지정해요. 카탈로그 인티그레이션의REFRESH_INTERVAL_SECONDS에 값이 없으면 기본 30초 간격을 사용해요. 기본값: FALSE. (INFER_SCHEMA와 AUTO_REFRESH 병용은 지원되지 않아요.)COMMENT = 'string_literal': 테이블에 대한 주석을 지정해요.TAG ( tag_name = 'tag_value' [ , ... ] ): 태그 이름과 문자열 값을 지정해요.WITH CONTACT ( purpose = contact [ , ...] ): 새 객체를 하나 이상의 연락처와 연결해요.
접근 제어 요구 사항
| 권한 | 객체 | 참고 |
|---|---|---|
| CREATE ICEBERG TABLE | 스키마 | |
| CREATE EXTERNAL VOLUME | 계정 | 새 외부 볼륨 생성 시 필요. |
| USAGE | 외부 볼륨 | 기존 외부 볼륨 참조 시 필요. |
| CREATE INTEGRATION | 계정 | 새 카탈로그 인티그레이션 생성 시 필요. |
| USAGE | 카탈로그 인티그레이션 | 기존 카탈로그 인티그레이션 참조 시 필요. |
사용법 참고 사항
- 외부 볼륨이나 카탈로그 인티그레이션을 큰따옴표로 감싼 식별자로 만들었다면
CREATE ICEBERG TABLE문에서도 그대로(큰따옴표 포함) 지정해야 해요. 포함하지 않으면Object does not exist오류가 발생할 수 있어요. - Delta 테이블 파일(Delta Direct)에서 만든 Iceberg 테이블:
- Time Travel을 사용해 Delta 테이블 파일에서 만든 Iceberg 테이블을 쿼리할 수 있어요. 테이블 버전은 개별 Delta 로그 커밋 파일에 해당해요.
더 알아보기 (Learn more)
- ALTER ICEBERG TABLE
- DROP ICEBERG TABLE
- SHOW ICEBERG TABLES
- DESCRIBE ICEBERG TABLE
- UNDROP ICEBERG TABLE
- 외부 볼륨 구성, 객체 저장소의 파일용 카탈로그 인티그레이션 구성, Delta 기반 테이블, 자동 새로 고침