ALTER ICEBERG TABLE¶
기존 Apache Iceberg™ 테이블 의 클러스터링 옵션 및 태그와 같은 속성을 수정합니다.
ALTER ICEBERG TABLE 문을 사용하여 테이블을 새로 고치거나, 테이블을 변환하거나, 정형 타입 열을 변경할 수도 있습니다. 이러한 작업의 구문은 상당히 다양합니다. Iceberg 테이블을 새로 고치거나 변환하기 위한 구문, 매개 변수 설명, 사용법 노트 및 예를 보려면 다음 페이지를 참조하십시오.
이 항목에서는 Iceberg 테이블 을 지정하여 혼동을 방지하는 경우를 제외하고는 Iceberg 테이블을 간단히 ‘테이블’이라고 부릅니다.
구문¶
ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> clusteringAction
ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> SET
[ REPLACE_INVALID_CHARACTERS = { TRUE | FALSE } ]
[ CATALOG_SYNC = '<open_catalog_integration_name>']
[ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
[ AUTO_REFRESH = { TRUE | FALSE } ]
ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> UNSET REPLACE_INVALID_CHARACTERS
ALTER ICEBERG TABLE [ IF EXISTS ] dataGovnPolicyTagAction
여기서
clusteringAction ::= { CLUSTER BY ( <expr> [ , <expr> , ... ] ) /* { SUSPEND | RESUME } RECLUSTER is valid action */ | { SUSPEND | RESUME } RECLUSTER | DROP CLUSTERING KEY }dataGovnPolicyTagAction ::= { SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ] | UNSET TAG <tag_name> [ , <tag_name> ... ] } | { ADD ROW ACCESS POLICY <policy_name> ON ( <col_name> [ , ... ] ) | DROP ROW ACCESS POLICY <policy_name> | DROP ROW ACCESS POLICY <policy_name> , ADD ROW ACCESS POLICY <policy_name> ON ( <col_name> [ , ... ] ) | DROP ALL ROW ACCESS POLICIES } | { SET AGGREGATION POLICY <policy_name> [ FORCE ] | UNSET AGGREGATION POLICY } | { { ALTER | MODIFY } [ COLUMN ] <col1_name> SET MASKING POLICY <policy_name> [ USING ( <col1_name> , <cond_col_1> , ... ) ] [ FORCE ] | UNSET MASKING POLICY } | { { ALTER | MODIFY } [ COLUMN ] <col1_name> SET PROJECTION POLICY <policy_name> [ FORCE ] | UNSET PROJECTION POLICY } | { ALTER | MODIFY } [ COLUMN ] <col1_name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ] , [ COLUMN ] <col2_name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ] | { ALTER | MODIFY } [ COLUMN ] <col1_name> UNSET TAG <tag_name> [ , <tag_name> ... ] , [ COLUMN ] <col2_name> UNSET TAG <tag_name> [ , <tag_name> ... ]
매개 변수¶
table_name
수정할 테이블의 식별자입니다.
식별자에 공백이나 특수 문자가 포함된 경우 전체 문자열을 큰따옴표로 묶어야 합니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.
자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.
SET ...
외부 테이블에 대해 설정할 하나 이상의 속성/매개 변수를 지정합니다(공백, 쉼표 또는 새 줄로 구분).
REPLACE_INVALID_CHARACTERS = { TRUE | FALSE }
쿼리 결과에서 유효하지 않은 UTF-8 문자를 UNICODE 대체 문자(�)로 대체할지 여부를 지정합니다. 외부 Iceberg 카탈로그를 사용하는 테이블에 대해서만 이 매개 변수를 설정할 수 있습니다.
TRUE
는 잘못된 UTF-8 문자를 유니코드 대체 문자로 바꿉니다.FALSE
는 유효하지 않은 UTF-8 문자를 변경하지 않습니다. Parquet 데이터 파일에서 유효하지 않은 UTF-8 문자를 발견하면 Snowflake는 사용자 오류 메시지를 반환합니다.
지정하지 않으면 Iceberg 테이블은 기본적으로 스키마, 데이터베이스 또는 계정에 대한 매개 변수 값으로 설정됩니다. 스키마는 데이터베이스보다 우선하고, 데이터베이스는 계정보다 우선합니다.
기본값:
FALSE
CATALOG_SYNC = 'snowflake_open_catalog_integration_name'
Snowflake Open Catalog 용으로 구성된 카탈로그 통합의 이름을 지정합니다. Snowflake는 테이블을 Snowflake Open Catalog 계정의 외부 카탈로그와 동기화합니다. 자세한 내용은 Snowflake 관리 테이블을 Snowflake Open Catalog 와 동기화하기 섹션을 참조하십시오.
DATA_RETENTION_TIME_IN_DAYS = integer
테이블에서 레코드 데이터에 대해 Time Travel 작업(SELECT, CLONE, UNDROP)을 수행할 수 있도록 Snowflake 관리형 테이블의 보존 기간을 지정합니다. 자세한 내용은 Time Travel 이해 및 사용하기 섹션을 참조하십시오.
이 오브젝트 수준 매개 변수에 대한 자세한 설명과 아울러 오브젝트 매개 변수에 대한 자세한 내용은 매개 변수 를 참조하십시오.
값:
Standard Edition:
0
또는1
Enterprise Edition: 영구 테이블의 경우
0
~90
기본값:
Standard Edition:
1
Enterprise Edition 또는 그 이상:
1
(스키마, 데이터베이스 또는 계정 수준에서 다른 기본값이 지정되지 않은 경우)
참고
0
의 값은 테이블의 Time Travel을 효과적으로 비활성화합니다.
AUTO_REFRESH = { TRUE | FALSE }
자동 새로 고침 을(를) 사용할 때 Snowflake가 메타데이터 업데이트를 위해 테이블과 연결된 외부 Iceberg 카탈로그를 자동으로 폴링해야 하는지 여부를 지정합니다. 카탈로그 통합에서
REFRESH_INTERVAL_SECONDS
매개 변수에 대한 값이 지정되지 않은 경우 Snowflake에서 사용하는 기본 새로 고침 간격은 30초입니다.기본값: FALSE
UNSET
현재는 이 명령으로 다음 매개 변수만 설정 해제할 수 있습니다.
REPLACE_INVALID_CHARACTERS
클러스터링 작업(clusteringAction
)¶
참고
클러스터링은 Snowflake를 Iceberg 카탈로그로 사용하는 테이블에만 지원됩니다.
CLUSTER BY ( expr [ , expr , ... ] )
하나 이상의 테이블 열 또는 열 식을 테이블의 클러스터링 키로 지정(또는 수정)합니다. 자동 클러스터링 으로 클러스터링을 유지 관리하는 열/식입니다.
클러스터링에 대해 자세히 알아보려면 클러스터링 키 및 클러스터링된 테이블 섹션을 참조하십시오.
SUSPEND | RESUME RECLUSTER
테이블에 대해 자동 클러스터링 을 활성화하거나 비활성화합니다.
DROP CLUSTERING KEY
테이블에 대한 클러스터링 키를 삭제합니다.
클러스터링 키와 재클러스터링에 대한 자세한 내용은 Snowflake 테이블 구조 이해하기 를 참조하십시오.
데이터 거버넌스 정책 및 태그 작업(dataGovnPolicyTagAction
)¶
TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]
태그 이름과 태그 문자열 값을 지정합니다.
태그 값은 항상 문자열이며, 태그 값의 최대 문자 수는 256자입니다.
문에서 태그를 지정하는 방법에 대한 자세한 내용은 오브젝트 및 열에 대한 태그 할당량 섹션을 참조하십시오.
policy_name
정책의 식별자로, 스키마에 고유한 식별자여야 합니다.
다음 절은 테이블, 뷰, 이벤트 테이블 등 행 액세스 정책을 지원하는 모든 테이블 종류에 적용됩니다. 단순화하기 위해 해당 절에서는 “테이블”만 참조합니다.
ADD ROW ACCESS POLICY policy_name ON (col_name [ , ... ])
테이블에 행 액세스 정책을 추가합니다.
하나 이상의 열 이름을 지정해야 합니다. 각 열 이름을 구분하는 쉼표로 추가 열을 지정할 수 있습니다. 이 식을 사용하여 이벤트 테이블과 외부 테이블에 모두 행 액세스 정책을 추가합니다.
DROP ROW ACCESS POLICY policy_name
테이블에서 행 액세스 정책을 삭제합니다.
이 절을 사용하여 테이블에서 정책을 삭제합니다.
DROP ROW ACCESS POLICY policy_name, ADD ROW ACCESS POLICY policy_name ON ( col_name [ , ... ] )
테이블에 설정된 행 액세스 정책을 삭제하고 단일 SQL 문으로 동일한 테이블에 행 액세스 정책을 추가합니다.
DROP ALL ROW ACCESS POLICIES
테이블에서 모든 행 액세스 정책 연결을 삭제합니다.
이 식은 스키마에서 행 액세스 정책을 삭제한 후에 이벤트 테이블에서 정책을 삭제할 때 유용합니다. 테이블에서 행 액세스 정책 연결을 삭제하려면 이 식을 사용하십시오.
SET AGGREGATION POLICY policy_name
[ ENTITY KEY (col_name [ , ... ]) ] [ FORCE ]
테이블에 집계 정책 을 할당합니다.
선택적 ENTITY KEY 매개 변수를 사용하여 테이블 내에서 엔터티의 ID를 고유하게 지정하는 열을 정의할 수 있습니다. 자세한 내용은 집계 정책을 사용하여 엔터티 수준 개인정보 보호 구현하기 섹션을 참조하십시오.
기존 집계 정책을 새 집계 정책으로 원자적으로 바꾸려면 선택적 FORCE 매개 변수를 사용하십시오.
UNSET AGGREGATION POLICY
테이블에서 집계 정책을 분리합니다.
{ ALTER | MODIFY } [ COLUMN ] ...
USING ( col_name , cond_col_1 ... )
조건부 마스킹 정책 SQL 식에 전달할 인자를 지정합니다.
목록의 첫 번째 열은 데이터를 마스킹하거나 토큰화할 정책 조건에 대한 열을 지정하며, 마스킹 정책이 설정된 열과 반드시 일치해야 합니다.
추가 열은 첫 번째 열에 대해 쿼리가 수행될 때 쿼리 결과의 각 행에 있는 데이터를 마스킹할지 또는 토큰화할지 결정하기 위해 평가할 열을 지정합니다.
USING 절을 생략하면 Snowflake는 조건부 마스킹 정책을 일반 마스킹 정책 으로 취급합니다.
FORCE
열에 현재 설정된 마스킹 또는 프로젝션 정책을 단일 문에서 다른 정책으로 바꿉니다.
마스킹 정책과 함께
FORCE
키워드를 사용하려면 열에 현재 설정된 마스킹 정책의 데이터 타입(즉, STRING)과 일치하도록 ALTER TABLE 문(즉, STRING)에 있는 정책의 데이터 타입 이 필요합니다.마스킹 정책이 열에 현재 설정되어 있지 않으면 이 키워드를 지정해도 아무 효과가 없습니다.
자세한 내용은 열의 마스킹 정책 바꾸기 또는 프로젝션 정책 바꾸기 섹션을 참조하십시오.
액세스 제어 요구 사항¶
이 SQL 명령을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.
권한 |
오브젝트 |
참고 |
---|---|---|
OWNERSHIP |
Iceberg 테이블 |
OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
USAGE |
외부 볼륨 |
|
USAGE |
카탈로그 통합 |
테이블에서 카탈로그 통합을 사용하는 경우 필수입니다. |
스키마의 모든 오브젝트에 대해 작업하려면 상위 데이터베이스 및 스키마에 대한 USAGE 권한도 필요합니다.
지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.
보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.
사용법 노트¶
테이블 소유자(즉, 테이블에 대한 OWNERSHIP 권한을 가진 역할) 이상만이 명령을 실행할 수 있습니다.
클러스터링은 Snowflake를 Iceberg 카탈로그로 사용하는 테이블에만 지원됩니다. Iceberg 테이블에 클러스터링을 추가하려면 테이블을 포함한 스키마와 데이터베이스에 대한 USAGE 또는 OWNERSHIP 권한도 있어야 합니다.
ALTER TABLE 명령을 실행하면 Iceberg 테이블에서 데이터 메트릭 함수를 사용할 수 있습니다. 자세한 내용은 데이터 메트릭 함수 작업 섹션을 참조하십시오.
메타데이터 관련:
주의
고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.
CATALOG_SYNC 매개 변수 변경과 관련된 문제를 해결하려면 CATALOG_SYNC 매개 변수를 지정할 때는 Iceberg 테이블을 변경할 수 없습니다. 섹션을 참조하십시오.
예¶
다음 예제는 Iceberg 테이블에 값이 customer
인 태그(my_tag
)를 설정하는 예제입니다.
ALTER ICEBERG TABLE my_iceberg_table SET TAG my_tag = 'customer';