CREATE ICEBERG TABLE

CREATE ICEBERG TABLE (AWS Glue as the Iceberg catalog)

현재/지정한 스키마에 AWS Glue Data Catalog에 등록된 Iceberg 테이블을 사용해 Apache Iceberg™ 테이블을 만들거나 교체하는 명령이에요. 이 유형의 Iceberg 테이블은 Snowflake를 AWS Glue에 연결하는 카탈로그 인티그레이션(catalog integration)이 필요해요.

출처: 문서

본문

AWS Glue와 통합하려면 추가 Iceberg 테이블 기능(카탈로그 제공 자격 증명 등)을 지원하는 AWS Glue Iceberg REST 사용을 권장해요. 관련 지침은 CREATE CATALOG INTEGRATION (Apache Iceberg™ REST)과 CREATE ICEBERG TABLE (Iceberg REST catalog)을 참조하세요.

테이블을 만들기 전에 외부 볼륨과 카탈로그 인티그레이션을 만들어야 해요.

구문 (Syntax)

CREATE [ OR REPLACE ] ICEBERG TABLE [ IF NOT EXISTS ] <table_name>
  [ EXTERNAL_VOLUME = '<external_volume_name>' ]
  [ CATALOG = '<catalog_integration_name>' ]
  CATALOG_TABLE_NAME = '<catalog_table_name>'
  [ CATALOG_NAMESPACE = '<catalog_namespace>' ]
  [ 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>: 테이블의 식별자예요. 스키마 내에서 고유해야 해요.
  • CATALOG_TABLE_NAME = 'catalog_table_name': AWS Glue Data Catalog가 인식하는 테이블 이름을 지정해요. 테이블을 만든 후에는 변경할 수 없어요.

선택 매개변수

  • EXTERNAL_VOLUME = 'external_volume_name': Iceberg 테이블이 메타데이터 파일과 데이터를 Parquet 형식으로 저장하는 외부 볼륨의 식별자를 지정해요. 지정하지 않으면 기본값을 사용해요.
  • CATALOG = 'catalog_integration_name': 이 테이블의 카탈로그 인티그레이션 이름을 지정해요. AWS Glue용으로 구성한 인티그레이션을 지정해야 해요. 지정하지 않으면 기본값을 사용해요.
  • CATALOG_NAMESPACE = 'catalog_namespace': AWS Glue Data Catalog 소스의 네임스페이스(예: my_glue_database)를 선택적으로 지정해요. 지정하지 않으면 카탈로그 인티그레이션과 연결된 기본 카탈로그 네임스페이스를 사용해요. 인티그레이션에 기본 네임스페이스가 없으면 테이블에 네임스페이스를 지정해야 해요.
  • REPLACE_INVALID_CHARACTERS = { TRUE | FALSE }: 쿼리 결과에서 잘못된 UTF-8 문자를 유니코드 대체 문자(�)로 바꿀지 지정해요. 외부 Iceberg 카탈로그 테이블에만 설정할 수 있어요. 기본값: FALSE.
  • AUTO_REFRESH = { TRUE | FALSE }: Snowflake가 테이블과 연관된 외부 Iceberg 카탈로그를 메타데이터 업데이트에 대해 자동으로 폴링할지 지정해요. 카탈로그 인티그레이션에 REFRESH_INTERVAL_SECONDS 값이 없으면 기본 30초 간격을 사용해요. 기본값: FALSE. (INFER_SCHEMA와 병용은 지원되지 않아요.)
  • COMMENT = 'string_literal', TAG, WITH CONTACT 도 지원돼요.

접근 제어 요구 사항

권한 객체 참고
CREATE ICEBERG TABLE 스키마
CREATE EXTERNAL VOLUME 계정 새 외부 볼륨 생성 시 필요.
USAGE 외부 볼륨 기존 외부 볼륨 참조 시 필요.
CREATE INTEGRATION 계정 새 카탈로그 인티그레이션 생성 시 필요.
USAGE 카탈로그 인티그레이션 기존 카탈로그 인티그레이션 참조 시 필요.

사용법 참고 사항

  • 외부 볼륨/카탈로그 인티그레이션을 큰따옴표로 감싼 식별자로 만들었다면 CREATE ICEBERG TABLE 문에서도 그대로 지정해야 해요.
  • 같은 스키마에는 같은 이름의 테이블과 뷰가 공존할 수 없어요. 같은 이름의 뷰/테이블이 이미 있으면 오류가 반환되고 테이블이 생성되지 않아요 (OR REPLACE 키워드 제외).
  • CREATE OR REPLACE <object> 문은 원자적이에요.

더 알아보기 (Learn more)