사용자 정의 태그를 통한 자동 태그 전파¶
태그 전파는 소스 오브젝트에 적용되면 오브젝트 태그 가 대상 오브젝트에 자동으로 할당됩니다. 예를 들어, 테이블 및 해당 열과 같은 소스 오브젝트에 태그를 정의할 수 있으며, 이러한 태그는 소스 오브젝트에서 생성한 뷰 또는 다른 테이블과 같은 대상 오브젝트에 자동으로 전파됩니다.
자동 태그 전파의 장점은 다음과 같습니다.
특히 소스 오브젝트나 열에 태그를 적용하여 검색을 용이하게 하고 데이터를 보호할 때 오브젝트 전반의 태그 관리를 간소화할 수 있습니다.
태그와 관련된 모든 정책이 대상 오브젝트에 자동으로 적용되도록 합니다.
계정 수준 APPLY TAG 권한이 있는 태그 소유자만 자동 태그 전파를 구현할 수 있습니다.
전파 유형¶
오브젝트 종속성, 데이터 이동, 또는 둘 다 있는 경우 태그를 전파하도록 선택할 수 있습니다.
오브젝트 종속성에 대한 태그 전파¶
오브젝트 종속성에 대해 태그 전파를 구성하면 태그가 소스 오브젝트에서 이를 기반으로 하는 모든 대상 오브젝트로 전파됩니다. 예를 들어, t1
테이블에서 data_sensitivity
태그에 대한 전파를 설정한 다음 t1
을 기반으로 2개의 뷰를 만들면 data_sensitivity
태그가 두 뷰에 모두 전파됩니다.
소스 오브젝트에서 뷰, 보안 뷰, 구체화된 뷰 또는 동적 테이블을 생성하는 것은 오브젝트 종속성으로 간주됩니다.
오브젝트 종속성에 대한 지속적인 전파¶
오브젝트 종속성에 대해 태그가 구성된 경우 다음 중 하나라도 발생하면 Snowflake가 대상 오브젝트를 지속적으로 업데이트 합니다.
태그가 소스 오브젝트 또는 열에 추가됩니다.
태그의 값이 업데이트됩니다.
태그가 소스 오브젝트 또는 열에서 제거됩니다. 이 경우 Snowflake는 대상 오브젝트 또는 열에서 태그를 제거합니다.
예를 들어, t1
테이블에서 v2
뷰로 CREATE VIEW 문을 실행한 후 data_sensitivity
태그가 전파되었다고 가정해 보겠습니다. t1
에서 data_sensitivity
의 값을 변경하면 v2
의 태그 값도 업데이트됩니다.
자동 태그 전파는 소스 오브젝트의 존재 여부에 따라 달라집니다. 태그가 있는 소스 오브젝트가 삭제되면 태그가 대상 오브젝트로 전파되지 않습니다. 뷰는 기본 테이블이나 다른 뷰와 같은 소스에 종속성이 있으므로 태그는 소스 오브젝트가 존재하는 경우에만 전파됩니다.
데이터 이동을 위한 태그 전파¶
데이터 이동을 위해 태그 전파가 구성된 경우, 다음 중 하나를 수행하여 소스 오브젝트에서 다른 오브젝트로 데이터를 이동하면 태그가 전파됩니다.
CREATE TABLE … AS SELECT (CTAS) 문을 실행하여 테이블을 생성합니다.
CREATEDYNAMICTABLE문을 실행합니다.
데이터 조작 언어(DML) 명령 실행. 태그 전파는 다음 DML 명령에 대해 발생합니다.
INSERT
MERGE
UPDATE
COPY INTO
CREATE TABLE … CLONE 및 CREATE TABLE … LIKE 는 태그 전파를 위해 PROPAGATE 태그 속성에 의존하지 않습니다. 이러한 문을 실행하면 소스의 태그가 항상 대상 오브젝트에 할당됩니다.
참고
오브젝트 종속성에 대한 태그 전파와는 달리, 데이터 이동이 있을 때 대상 오브젝트에 적용되는 태그는 소스 오브젝트에서 태그가 변경되어도 지속적으로 업데이트되지 않습니다.
태그 전파 설정하기¶
자동 태그 전파를 사용하려면 CREATE TAG 또는 ALTER TAG 명령을 사용하여 PROPAGATE 속성을 설정합니다. 오브젝트 종속성, 데이터 이동 또는 둘 다에 대해 태그가 전파되도록 속성을 구성할 수 있습니다.
태그 전파 설정에 대한 지침은 자동으로 전파할 태그를 정의합니다 섹션을 참조하십시오.
태그 전파 충돌¶
태그가 서로 다른 소스 오브젝트에서 동일한 대상 오브젝트로 전파될 때 충돌이 발생할 수 있습니다. 태그가 각 소스 오브젝트에서 다른 값을 갖는 경우 해당 태그가 소스 오브젝트에서 대상 오브젝트로 전파될 때 충돌이 발생합니다.
참고
대상 오브젝트에 수동으로 적용된 태그가 있는 경우 기존 태그 값이 전파된 값보다 우선하므로 충돌이 발생하지 않습니다.
대상 오브젝트가 Snowflake 오브젝트 계층 구조에서 상위 오브젝트로부터 값을 상속하는 경우 전파된 값이 우선하며 충돌이 발생하지 않습니다.
태그의 ON_CONFLICT 속성은 충돌이 발생했을 때 어떤 일이 발생하는지를 결정합니다. 태그 전파 충돌을 처리하는 데는 세 가지 옵션이 있습니다.
옵션 1: 태그의 값을 문자열 ``CONFLICT``로 바꿉니다. 태그의 ON_CONFLICT 매개 변수를 설정하지 않은 경우 이것이 기본값입니다.
옵션 2: 태그의 값을 사용자 정의 문자열로 바꿉니다. ON_CONFLICT 매개 변수를 이 문자열로 설정합니다.
예를 들어, 값에 충돌이 있을 때 태그의 값을
HIGHLY CONFIDENTIAL
로 설정하려면 다음 SQL 을 사용하여 태그를 생성합니다.CREATE TAG data_sensitivity PROPAGATE = ON_DEPENDENCY_AND_DATA_MOVEMENT ON_CONFLICT = 'HIGHLY CONFIDENTIAL';
Copy옵션 3: 태그의 ALLOWED_VALUES 매개 변수의 값 순서를 사용하여 사용할 값을 결정합니다. ``ON_CONFLICT = ALLOWED_VALUES_SEQUENCE``를 설정하여 이 전략을 구현합니다.
예를 들어, 다음 SQL 문으로 태그를 생성했다고 가정해 보겠습니다.
CREATE TAG data_sensitivity ALLOWED_VALUES 'confidential', 'internal', 'public' PROPAGATE = ON_DEPENDENCY ON_CONFLICT = ALLOWED_VALUES_SEQUENCE;
Copy이 태그에서
internal
및public
값 사이에 충돌이 있는 경우data_sensitivity
태그의 값은 허용되는 값 목록에서public
앞에 오므로internal
이 됩니다.ON_CONFLICT = ALLOWED_VALUES_SEQUENCE
를 사용하기로 선택한 경우 ALLOWED_VALUES 매개 변수를 변경하면 충돌이 해결되는 방식에 영향을 미칩니다. 예를 들어, 허용된 목록에서 값의 순서를 변경하면 향후 충돌로 인해 태그에 다른 값이 할당될 수 있습니다.
태그 전파와 관련된 충돌을 추적하려면 이벤트 테이블을 사용하여 태그 전파 모니터링 섹션을 참조하세요.
이벤트 테이블을 사용하여 태그 전파 모니터링¶
:doc:`이벤트 테이블</developer-guide/logging-tracing/event-table-setting-up>`을 사용하여 태그 전파와 관련된 원격 분석 데이터를 수집합니다. Snowflake가 이벤트 테이블에서 데이터 수집을 시작한 후 테이블을 쿼리하거나, 스트림을 생성하여 변경 사항을 추적하거나, 특정 이벤트가 발생할 때 알림을 보내도록 경고를 설정할 수 있습니다.
태그 전파를 위해 원격 분석 데이터를 수집하려면 ENABLE_TAG_PROPAGATION_EVENT_LOGGING 계정 매개 변수를 활성화해야 합니다. 데이터 수집을 시작하려면 다음 명령을 실행합니다.
ALTER ACCOUNT SET ENABLE_TAG_PROPAGATION_EVENT_LOGGING = TRUE;
태그의 데이터베이스에 대해 설정된 이벤트 테이블이 있는 경우 이벤트가 해당 테이블에 기록됩니다. 그렇지 않으면 이벤트가 기본 이벤트 테이블에 기록됩니다.
이벤트 이해¶
다음 테이블은 적절한 이벤트에 집중할 수 있도록 태그 전파에 해당하는 이벤트 테이블의 값을 설명합니다. 이벤트 테이블의 구조에 대한 자세한 내용은 이벤트 테이블 열 섹션을 참조하세요.
이벤트 테이블 열 |
열 필드 |
필드 값 |
설명 |
---|---|---|---|
|
|
|
기록이 자동 태그 전파와 관련됨을 나타냅니다. |
|
|
|
전파 중에 이벤트가 발생한 태그의 이름입니다. |
|
|
|
태그를 전파할 때 충돌이 발생했음을 나타냅니다. |
|
|
|
대상 오브젝트가 10,000개를 초과하여 Snowflake가 태그를 전파하지 않았음을 나타냅니다. |
|
|
[ |
충돌하는 태그 값의 배열입니다. |
|
|
|
충돌이 발생했을 때 Snowflake가 취한 작업을 나타냅니다. 충돌이 특정 방식으로 해결된 이유를 이해하려면 태그 전파 충돌 섹션을 참조하세요. |
|
|
|
Snowflake가 충돌을 해결한 후 태그의 최종 값입니다. |
이벤트 테이블에서 태그 전파 이벤트를 식별하는 방법을 더 잘 이해하려면 다음 예를 사용하세요.
- 쿼리: 태그
TAG1
전파와 관련된 모든 이벤트 찾기 SELECT TIMESTAMP as time, RECORD_ATTRIBUTES['event_type'] as event_type, VALUE as event_details FROM tagging_db.tagging_schema.my_event_table WHERE SCOPE['name'] = 'snow.automatic_tag_propagation' AND RECORD_ATTRIBUTES['tag_name'] = 'TAGGING_DB.TAGGING_SCHEMA.TAG1';
Copy- 쿼리: 전파될 때 충돌이 발생한 모든 태그 찾기
SELECT DISTINCT RECORD_ATTRIBUTES['tag_name'] as tags, VALUE['conflict_values'] as conflicting_tag_values, VALUE['resolution_type'] as resolution_type, VALUE['resolved_value'] as resolved_value, FROM tagging_db.tagging_schema.my_event_table WHERE SCOPE['name'] = 'snow.automatic_tag_propagation' AND RECORD_ATTRIBUTES['event_type'] = 'CONFLICT';
Copy- 쿼리: 태그 ``TAG1``이 전파될 때 충돌이 발생한 엔터티 찾기
SELECT TIMESTAMP as time, RECORD_ATTRIBUTES['entity_name'] as entity_name, RECORD_ATTRIBUTES['entity_domain'] as entity_domain, FROM tagging_db.tagging_schema.my_event_table WHERE SCOPE['name'] = 'snow.automatic_tag_propagation' AND RECORD_ATTRIBUTES['tag_name'] = 'TAGGING_DB.TAGGING_SCHEMA.TAG1' AND RECORD_ATTRIBUTES['event_type'] = 'CONFLICT';
Copy
이벤트의 심각도¶
태그 전파 이벤트는 테이블을 관리하는 :ref:`LOG_LEVEL 매개 변수<label-log_level>`가 해당 심각도 수준의 이벤트를 표시하도록 구성된 경우에만 기록됩니다. 다음 테이블을 사용하여 태그 전파 이벤트의 심각도 수준을 확인합니다.
이벤트 유형 |
해결 유형 |
심각도 |
---|---|---|
|
|
WARN |
|
INFO |
|
|
INFO |
|
|
해당 없음 |
ERROR |
지원되는 오브젝트¶
소스에서 대상으로의 태그 전파는 다음 오브젝트 유형에 대해 지원됩니다.
열
다음 유형의 테이블을 사용할 수 있습니다.
테이블
동적 테이블 - 동적 테이블을 생성하는 것은 태그 전파를 목적으로 하는 오브젝트 종속성 및 데이터 이동으로 간주됩니다.
외부 테이블
Iceberg 테이블
임시/일시적 테이블
다음 유형의 뷰가 있습니다.
뷰
보안 뷰
구체화된 뷰
제한 사항 및 고려 사항¶
시스템 태그는 전파되지 않습니다.
상속된 태그 는 전파되지 않습니다.
태그는 공유에서 로컬 오브젝트로 전파되지 않습니다.
오브젝트의 태그 수는 표준 제한 을 초과할 수 없습니다.
태그는 10,000개를 초과하는 대상 오브젝트에 전파할 수 없습니다. :ref:`이벤트 테이블<label-tag_propagation_event_table>을 사용`하여 이러한 이유로 전파가 실패했는지 확인할 수 있습니다.
오브젝트 종속성에 대한 태그 전파를 사용하면 태그를 소스 테이블과 대상 뷰 모두에 적용할 수 있습니다. 태그가 마스킹 정책과 연관된 경우 정책의 중복 실행과 관련된 결과가 발생할 수 있습니다.