CREATE ICEBERG TABLE
CREATE ICEBERG TABLE
현재/지정한 스키마에 Apache Iceberg™ 테이블을 만들거나 교체하는 명령이에요. 이 페이지는 모든 유형의 Iceberg 테이블 구문에 대한 개요를 제공해요.
출처: 문서
본문
Iceberg 테이블을 만드는 구문은 Snowflake를 Iceberg 카탈로그로 사용하는지, 아니면 외부 Iceberg 카탈로그를 사용하는지에 따라 크게 달라져요.
사용 사례별 구문, 매개변수 설명, 사용법 참고 사항, 예제를 보려면 다음 페이지를 참조하세요:
- Snowflake를 Iceberg 카탈로그로 사용: CREATE ICEBERG TABLE (Snowflake as the Iceberg catalog) — CREATE OR REPLACE 작업의
COPY TAGS매개변수 포함. - 외부 Iceberg 카탈로그: CREATE ICEBERG TABLE (REST or Snowflake Open Catalog)
- 원격 REST 카탈로그의 테이블을 Snowflake로 자동 가져오려면 카탈로그 연결(catalog-linked) 데이터베이스를 만들 수 있어요. 카탈로그 연결 데이터베이스를 사용하면 개별 외부 관리 Iceberg 테이블을 만들 필요 없이 원격 카탈로그의 기존 테이블에 접근할 수 있어요.
- CREATE ICEBERG TABLE (Delta files in object storage)
- CREATE ICEBERG TABLE (Iceberg files in object storage)
Snowflake를 Iceberg 카탈로그로 사용 (구문)
CREATE [ OR REPLACE ] [ TRANSIENT ] ICEBERG TABLE [ IF NOT EXISTS ] <table_name> (
-- Column definition
<col_name> <col_type> [ DEFAULT <col_default> ]
[ inlineConstraint ]
[ NOT NULL ]
[ [ WITH ] MASKING POLICY <policy_name> [ USING ( <col_name> , <cond_col1> , ... ) ] ]
[ [ WITH ] PROJECTION POLICY <policy_name> ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ COMMENT '<string_literal>' ]
-- Additional column definitions
[ , <col_name> <col_type> [ DEFAULT <col_default> ] [ ... ] ]
-- Out-of-line constraints
[ , outoflineConstraint [ ... ] ]
)
[ PARTITION BY ( partitionExpression [, partitionExpression , ...] ) ]
[ PATH_LAYOUT = { FLAT | HIERARCHICAL } ]
[ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ]
[ EXTERNAL_VOLUME = '<external_volume_name>' ]
[ CATALOG = 'SNOWFLAKE' ]
[ BASE_LOCATION = '<directory_for_table_files>' ]
[ TARGET_FILE_SIZE = '{ AUTO | 16MB | 32MB | 64MB | 128MB }' ]
[ CATALOG_SYNC = '<open_catalog_integration_name>']
[ STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED } ]
[ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
[ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
[ CHANGE_TRACKING = { TRUE | FALSE } ]
[ COPY GRANTS ]
[ COPY TAGS ]
[ ERROR_LOGGING = { TRUE | FALSE } ]
[ COMMENT = '<string_literal>' ]
[ ICEBERG_VERSION = <integer> ]
[ ICEBERG_MERGE_ON_READ_BEHAVIOR = { 'AUTO' | 'ENABLED' | 'DISABLED' } ]
[ ENABLE_ICEBERG_MERGE_ON_READ = { TRUE | FALSE } ]
[ [ WITH ] ROW ACCESS POLICY <policy_name> ON ( <col_name> [ , <col_name> ... ] ) ]
[ [ WITH ] AGGREGATION POLICY <policy_name> ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ WITH CONTACT ( <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ] ) ]
[ ENABLE_DATA_COMPACTION = { TRUE | FALSE } ]
여기서:
inlineConstraint ::=
[ CONSTRAINT <constraint_name> ]
{ UNIQUE
| PRIMARY KEY
| [ FOREIGN KEY ] REFERENCES <ref_table_name> [ ( <ref_col_name> ) ]
| CHECK ( <expr> )
}
[ <constraint_properties> ]
outoflineConstraint ::=
[ CONSTRAINT <constraint_name> ]
{ UNIQUE [ ( <col_name> [ , <col_name> , ... ] ) ]
| PRIMARY KEY [ ( <col_name> [ , <col_name> , ... ] ) ]
| [ FOREIGN KEY ] [ ( <col_name> [ , <col_name> , ... ] ) ]
REFERENCES <ref_table_name> [ ( <ref_col_name> [ , <ref_col_name> , ... ] ) ]
| CHECK ( <expr> )
}
[ <constraint_properties> ]
partitionExpression ::=
<col_name> -- identity transform
| BUCKET ( <num_buckets> , <col_name> )
| TRUNCATE ( <width> , <col_name> )
| YEAR ( <col_name> )
| MONTH ( <col_name> )
| DAY ( <col_name> )
| HOUR ( <col_name> )
Snowflake는 PRIMARY KEY로 정의된 컬럼을 Iceberg 메타데이터의 식별자 필드로 표현해요. PRIMARY KEY 컬럼에는 NOT NULL과 UNIQUE 제약 조건을 강제하지 않아요.
CREATE ICEBERG TABLE … AS SELECT (CTAS):
CREATE [ OR REPLACE ] [ TRANSIENT ] ICEBERG TABLE <table_name> [ ( <col_name> [ <col_type> ] [ DEFAULT <col_default> ] , ... ) ]
[ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ]
[ EXTERNAL_VOLUME = '<external_volume_name>' ]
[ CATALOG = 'SNOWFLAKE' ]
[ BASE_LOCATION = '<relative_path_from_external_volume>' ]
[ COPY GRANTS ]
[ COPY TAGS ]
[ ICEBERG_VERSION = <integer> ]
[ ... ]
AS SELECT <query>
CTAS에서 COPY GRANTS는 OR REPLACE 절과 결합할 때만 유효해요. CTAS에 COPY GRANTS를 쓰면 기존 권한을 유지하면서 새 데이터 집합으로 테이블을 덮어쓸 수 있어요.
CREATE ICEBERG TABLE … LIKE:
CREATE [ OR REPLACE ] [ TRANSIENT ] ICEBERG TABLE <table_name> LIKE <source_table>
[ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ]
[ COPY GRANTS ]
[ COPY TAGS ]
[ ... ]
외부 Iceberg 카탈로그 — Iceberg REST (Snowflake Open Catalog 포함)
원격 REST 카탈로그의 테이블을 Snowflake로 자동 가져오려면 카탈로그 연결 데이터베이스를 만드세요.
CREATE [ OR REPLACE ] ICEBERG TABLE [ IF NOT EXISTS ] <table_name>
[ EXTERNAL_VOLUME = '<external_volume_name>' ]
[ CATALOG = '<catalog_integration_name>' ]
CATALOG_TABLE_NAME = '<rest_catalog_table_name>'
[ CATALOG_NAMESPACE = '<catalog_namespace>' ]
[ PATH_LAYOUT = { FLAT | HIERARCHICAL } ]
[ TARGET_FILE_SIZE = '{ AUTO | 16MB | 32MB | 64MB | 128MB }' ]
[ REPLACE_INVALID_CHARACTERS = { TRUE | FALSE } ]
[ AUTO_REFRESH = { TRUE | FALSE } ]
[ COMMENT = '<string_literal>' ]
[ STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED } ]
[ ICEBERG_MERGE_ON_READ_BEHAVIOR = { 'AUTO' | 'ENABLED' | 'DISABLED' } ]
[ ENABLE_ICEBERG_MERGE_ON_READ = { TRUE | FALSE } ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ WITH CONTACT ( <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ] ) ]
카탈로그 연결 데이터베이스의 Iceberg REST:
CREATE [ OR REPLACE ] ICEBERG TABLE [ IF NOT EXISTS ] <table_name>
[
--Column definition
<col_name> <col_type> [ DEFAULT <col_default> ]
[ [ WITH ] MASKING POLICY <policy_name> [ USING ( <col_name> , <cond_col1> , ... ) ] ]
-- Additional column definitions
[ , <col_name> <col_type> [ DEFAULT <col_default> ] [ ... ] ]
]
[ PARTITION BY ( partitionExpression [ , partitionExpression , ... ] ) ]
[ PATH_LAYOUT = { FLAT | HIERARCHICAL } ]
[ TARGET_FILE_SIZE = '{ AUTO | 16MB | 32MB | 64MB | 128MB }' ]
[ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
[ AUTO_REFRESH = { TRUE | FALSE } ]
[ REPLACE_INVALID_CHARACTERS = { TRUE | FALSE } ]
[ COPY GRANTS ]
[ PURGE ]
[ COMMENT = '<string_literal>' ]
[ ICEBERG_VERSION = <integer> ]
[ ... ]
더 알아보기 (Learn more)
- ALTER ICEBERG TABLE
- DROP ICEBERG TABLE
- SHOW ICEBERG TABLES
- DESCRIBE ICEBERG TABLE
- CREATE ICEBERG TABLE (Snowflake as the Iceberg catalog)
- CREATE ICEBERG TABLE (REST or Snowflake Open Catalog)
- CREATE ICEBERG TABLE (Delta files in object storage)
- CREATE ICEBERG TABLE (Iceberg files in object storage)
- Apache Iceberg™ 테이블, 외부 볼륨 구성