ALTER TAG
ALTER TAG
기존 태그의 속성을 수정하는 명령이에요. 태그 이름 바꾸기와 태그에 마스킹 정책(masking policy) 설정을 포함해요.
출처: 문서
본문
태그에 대한 모든 변경은 태그를 사용하는 다음 SQL 쿼리가 실행될 때 적용돼요.
관련 명령: CREATE TAG, DROP TAG, SHOW TAGS, UNDROP TAG, Multi-value tags
구문 (Syntax)
ALTER TAG [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER TAG [ IF EXISTS ] <name> { ADD | DROP } ALLOWED_VALUES '<val_1>' [ , '<val_2>' [ , ... ] ]
ALTER TAG [ IF EXISTS ] <name> SET
[ ALLOWED_VALUES '<val_1>' [ , '<val_2>' [ , ... ] ] ]
[ MULTI_VALUE = TRUE ]
[ PROPAGATE = { ON_DEPENDENCY_AND_DATA_MOVEMENT | ON_DEPENDENCY | ON_DATA_MOVEMENT }
[ ON_CONFLICT = { '<string>' | ALLOWED_VALUES_SEQUENCE | MERGE } ] ]
[ COMMENT = '<string_literal>' ]
ALTER TAG [ IF EXISTS ] <name> UNSET { ALLOWED_VALUES | PROPAGATE | ON_CONFLICT | COMMENT }
ALTER TAG [ IF EXISTS ] <name> SET DATA MOVEMENT POLICY <data_movement_policy_name> [ FORCE ]
ALTER TAG [ IF EXISTS ] <name> UNSET DATA MOVEMENT POLICY
ALTER TAG [ IF EXISTS ] <name> SET MASKING POLICY
<masking_policy_name> [ , MASKING POLICY <masking_policy_2_name> , ... ] [ FORCE ]
ALTER TAG [ IF EXISTS ] <name> UNSET MASKING POLICY <masking_policy_name> [ , MASKING POLICY <masking_policy_2_name> , ... ]
ALTER TAG [ IF EXISTS ] <name> UNSET DCM PROJECT
파라미터 (Parameters)
*name*
태그의 식별자예요. CREATE 문 또는 ALTER 문을 사용해 객체에 태그 문자열 값을 할당해요.
식별자 값은 영문자로 시작해야 하고, 전체 식별자 문자열을 큰따옴표로 감싸지 않는 한 공백이나 특수 문자를 포함할 수 없어요(예: "My object"). 큰따옴표로 감싼 식별자는 대소문자를 구분해요.
자세한 내용은 Identifier requirements를 참고하세요.
RENAME TO *new_name*
태그의 새 식별자를 지정해요. 스키마 내에서 고유해야 해요. 식별자가 다른 태그에 이미 사용 중이면 새 식별자를 사용할 수 없어요.
자세한 내용은 Identifier requirements를 참고하세요.
객체를 선택적으로 이름을 바꾸면서 다른 데이터베이스 및/또는 스키마로 이동할 수 있어요. 그러려면 새 데이터베이스 및/또는 스키마 이름을 포함한 정규화된 new_name 값을 db_name.schema_name.object_name 또는 schema_name.object_name 형식으로 지정해요.
참고
-
대상 데이터베이스 및/또는 스키마는 이미 존재해야 해요. 또한 새 위치에 같은 이름의 객체가 이미 있으면 안 되며, 그렇지 않으면 문이 오류를 반환해요.
-
객체 소유자(즉 객체에 OWNERSHIP 권한이 있는 역할)가 대상 스키마도 소유하지 않는 한 관리 액세스 스키마(managed access schema)로 객체를 이동하는 것은 금지돼요.
ALLOWED_VALUES '*val_1*' [ , '*val_2*' [ , ... ] ]
해당 CREATE 또는 ALTER 명령으로 태그를 객체에 설정할 때 태그에 할당할 수 있는 가능한 문자열 값의 쉼표로 구분된 목록을 지정해요.
이 목록의 최대 태그 값 수는 5,000개예요.
SET ALLOWED_VALUES 절을 사용하면 지정된 값이 이전에 지정된 값을 대체하며, 값의 순서를 원자적으로 조정할 수 있게 해요.
DROP ALLOWED_VALUES 절로 모든 값을 제거하면 누군가가 태그를 어떤 값으로도 설정하는 것을 방지해요. 사용자가 태그를 어떤 값으로든 설정하게 하려면 대신 UNSET ALLOWED_VALUES를 사용해요.
허용 값의 변경 또는 제거는 이미 객체에 할당된 값에는 영향을 주지 않아요. 자세한 내용은 Set a list of allowed tag values를 참고하세요.
태그가 대상 객체에 자동으로 전파되도록 구성된 경우, 허용 목록의 값 순서는 충돌이 해결되는 방식에 영향을 줄 수 있어요. 자세한 내용은 Tag propagation conflicts를 참고하세요.
기본값: NULL(빈 문자열 값 즉 ' '을 포함한 모든 문자열 값이 허용됨).
MULTI_VALUE = TRUE
태그가 같은 객체나 열에 둘 이상의 문자열 값을 저장할 수 있도록 변환해요. 이 속성을 설정한 뒤에는 해제하거나 FALSE로 설정할 수 없어요. 자세한 내용은 Multi-value tags를 참고하세요.
PROPAGATE = { ON_DEPENDENCY_AND_DATA_MOVEMENT | ON_DEPENDENCY | ON_DATA_MOVEMENT }
이 파라미터는 Enterprise Edition 이상이 필요해요. 업그레이드를 문의하려면 Snowflake Support에 연락하세요.
태그가 소스 객체에서 대상 객체로 자동 전파될 것임을 지정해요. 객체 의존성(object dependency)이 있을 때, 데이터 이동(data movement)이 있을 때, 또는 둘 다일 때 태그가 전파되도록 구성할 수 있어요.
이 파라미터의 변경은 대상 객체에 자동으로 전파되지 않아요. 이러한 변경은 태그 전파의 일부로 이전에 대상 객체에 적용된 태그에는 영향을 주지 않아요.
가능한 값은 다음과 같아요:
ON_DEPENDENCY_AND_DATA_MOVEMENT
객체 의존성 또는 데이터 이동이 있을 때 태그를 전파해요.
ON_DEPENDENCY
객체 의존성에는 태그를 전파하지만 데이터 이동에는 전파하지 않아요.
ON_DATA_MOVEMENT
데이터 이동이 있을 때는 태그를 전파하지만 객체 의존성에는 전파하지 않아요.
ON_CONFLICT = { '*string*' | ALLOWED_VALUES_SEQUENCE | MERGE }
이 파라미터는 Enterprise Edition 이상이 필요해요. 업그레이드를 문의하려면 Snowflake Support에 연락하세요.
전파된 태그의 값 사이에 충돌이 있을 때 무슨 일이 일어나는지 지정해요.
이 파라미터를 설정하지 않고 충돌이 있으면 태그의 값이 문자열 CONFLICT로 설정돼요.
이 파라미터의 변경은 대상 객체에 자동으로 전파되지 않아요. 이러한 변경은 태그 전파의 일부로 이전에 대상 객체에 적용된 태그에는 영향을 주지 않아요.
가능한 값은 다음과 같아요:
'*string*'
충돌이 있을 때 태그의 값이 지정된 문자열로 설정돼요.
ALLOWED_VALUES_SEQUENCE
태그의 ALLOWED_VALUES 속성의 값 순서가 충돌이 있을 때 사용할 값을 결정해요. 예를 들어 다음 문으로 태그를 만들었다고 가정해요:
CREATE TAG my_tag ALLOWED_VALUES 'blue', 'red' PROPAGATE = ON_DEPENDENCY;
충돌이 있으면 my_tag의 값은 허용 값 목록에서 red보다 앞에 오기 때문에 blue가 돼요.
MERGE
충돌하는 태그 값을 대상 객체의 여러 값으로 결합해요. MULTI_VALUE = TRUE일 때만 ON_CONFLICT = MERGE를 설정할 수 있어요. 자세한 내용은 Multi-value tags를 참고하세요.
기본값: 태그의 값을 CONFLICT로 설정.
SET DATA MOVEMENT POLICY *data_movement_policy_name* [ FORCE ]
데이터 이동 정책(data movement policy)을 태그에 연결해요. 이 태그가 열, 테이블, 스키마, 데이터베이스에 설정되면 데이터 이동 정책이 태그된 객체의 데이터 이동 작업을 관리해요.
태그에 데이터 이동 정책이 이미 설정되어 있으면 기존 정책을 먼저 해제하지 않고 FORCE를 사용해 교체해요.
UNSET DATA MOVEMENT POLICY
태그에서 데이터 이동 정책을 제거해요.
MASKING POLICY *masking_policy_name* [ , MASKING POLICY *masking_policy_2_name* , ... ]
태그에 할당할 수 있는 마스킹 정책의 쉼표로 구분된 목록을 지정해요.
FORCE
현재 태그에 설정된 마스킹 정책을 단일 문에서 다른 마스킹 정책으로 교체해요.
같은 데이터 유형의 정책이 이미 태그에 설정되어 있으면 FORCE 키워드가 마스킹 정책을 교체한다는 점에 유의하세요.
태그에 현재 마스킹 정책이 설정되어 있지 않으면 이 키워드를 지정해도 효과가 없어요.
자세한 내용은 Replace a masking policy on a tag를 참고하세요.
COMMENT = '*string_literal*'
태그에 대한 주석을 지정해요.
기본값: 값 없음
UNSET
태그에 대해 설정 해제할 속성 및/또는 파라미터 하나(이상)를 지정하며, 기본값으로 재설정돼요:
-
ALLOWED_VALUES -
PROPAGATE -
ON_CONFLICT -
COMMENT
UNSET DCM PROJECT
태그를 현재 관리하는 DCM 프로젝트에서 분리해요. 이 명령은 태그를 삭제하지 않고 태그와 DCM 프로젝트 사이의 연관을 제거해요. 자세한 내용은 Detach objects from a DCM project를 참고하세요.
접근 제어 요구사항 (Access control requirements)
이 작업을 실행하는 역할은 최소한 다음 권한을 가져야 해요:
| Privilege | Object | Notes |
|---|---|---|
| OWNERSHIP | Tag | 태그 속성(예: 주석, 허용 값)을 수정하려면 이 권한이 필요해요. OWNERSHIP은 객체를 만든 역할에 자동으로 부여되는 특수 권한이지만, GRANT OWNERSHIP 명령으로 소유 역할(또는 MANAGE GRANTS 권한이 있는 역할)이 다른 역할에 이전할 수도 있어요. |
| APPLY DATA MOVEMENT POLICY | Account | 태그에 데이터 이동 정책을 할당하고 교체하려면 전역 APPLY DATA MOVEMENT POLICY 권한이 필요해요. |
| APPLY MASKING POLICY | Account | 태그에 마스킹 정책을 할당하고 교체하려면 전역 APPLY MASKING POLICY 권한이 필요해요. |
스키마의 객체를 작업하려면 상위 데이터베이스에 최소한 하나의 권한과 상위 스키마에 최소한 하나의 권한이 필요해요.
태그 DDL과 권한에 대한 추가 세부 사항은 Access control privileges를 참고하세요.
사용 참고사항 (Usage notes)
-
태그 DDL 권한에 대한 자세한 내용은 필수 권한을 참고하세요.
-
태그에 하나 이상의 마스킹 정책을 할당하는 것에 관해:
-
태그는 데이터 유형별로 마스킹 정책을 하나만 가질 수 있어요.
예를 들어 태그는 STRING 데이터 유형에 하나, NUMBER 데이터 유형에 하나의 정책을 가질 수 있어요.
-
마스킹 정책이 이미 열을 보호하고 있고 마스킹 정책이 있는 태그가 같은 열에 설정되면, 열에 직접 할당된 마스킹 정책이 태그에 할당된 마스킹 정책보다 우선해요.
-
태그에 마스킹 정책이 할당되어 있으면 태그를 삭제할 수 없고, 마스킹 정책이 태그에 할당되어 있으면 마스킹 정책을 삭제할 수 없어요.
-
-
복제, 특히 태그 기반 마스킹 정책에 관해서는 policy replication considerations를 참고하세요.
-
메타데이터에 관해: 고객은 Snowflake 서비스를 사용할 때 메타데이터로 개인 데이터(User 객체 외), 민감 데이터, 수출 통제 데이터 또는 기타 규제 데이터를 입력하지 않도록 해야 해요. 자세한 내용은 Metadata fields in Snowflake를 참고하세요.
예제 (Examples)
cost_center 태그를 cost_center_na로 이름을 바꿔요. 여기서 na는 북미를 지정해요.
ALTER TAG cost_center RENAME TO cost_center_na;
더 알아보기 (Learn more)
CREATE TAG, DROP TAG, SHOW TAGS, UNDROP TAG, Multi-value tags