ユーザー定義タグによるタグの自動伝播¶
タグの伝播は、 オブジェクトタグ がソースオブジェクトに適用されている場合、ターゲットオブジェクトに自動的に割り当てます。たとえば、テーブルやその列などのソースオブジェクトにタグを定義すると、これらのタグはソースオブジェクトから作成されたビューや別のテーブルなどのターゲットオブジェクトに自動的に伝播されます。
タグの自動伝播の利点は以下の通りです。
オブジェクト全体のタグ管理を合理化し、特にソースオブジェクトや列にタグを適用することで、発見やデータ保護を容易にします。
タグに関連付けられたポリシーがターゲットオブジェクトに自動的に適用されるようにします。
タグの自動伝播を実装できるのは、アカウントレベル APPLY TAG の権限を持つタグ所有者のみです。
伝播のタイプ¶
オブジェクト依存関係、 データ移動 、またはその両方がある場合に、タグを伝播することを選択できます。
オブジェクト依存関係のタグの伝播¶
オブジェクト依存関係に対してタグの伝播が構成されている場合、タグはソースオブジェクトから、そのオブジェクトをベースとするすべてのターゲットオブジェクトに伝搬されます。例えば、 t1
テーブルでタグ data_sensitivity
の伝播をセットし、 t1
をベースに 2 つのビューを作成した場合、 data_sensitivity
タグは両方のビューに伝搬されます。
ソース・オブジェクトからビュー、セキュア・ビュー、マテリアライズド・ビュー、または動的テーブルを作成することは、オブジェクト依存関係と見なされます。
オブジェクト依存関係の連続伝搬¶
タグがオブジェクト依存関係用に構成されている場合、Snowflakeは以下のいずれかが発生すると、ターゲットオブジェクトを 継続的に更新します。
タグはソース・オブジェクトまたは列に追加されます。
タグの値が更新されます。
ソース・オブジェクトまたは列からタグが削除されます。この場合、Snowflakeはターゲットオブジェクトまたは列からタグを削除します。
例えば、 CREATE VIEW ステートメントを実行した後、 data_sensitivity
タグがテーブル t1
からビュー v2
に伝播されたとします。t1
の data_sensitivity
の値を変更すると、 v2
のタグの値も更新されます。
タグの自動伝播は、ソースオブジェクトの存在に依存します。タグを持つソースオブジェクトがドロップされた場合、タグはターゲットオブジェクトに伝播されません。ビューはベーステーブルや他のビューなどのソースに依存するため、タグはソースオブジェクトが存在する場合にのみ伝播されます。
データ移動のためのタグの伝播¶
タグの伝播がデータ移動用に構成されている場合、以下のいずれかを実行してソース・オブジェクトから別のオブジェクトにデータを移動すると、タグがプロパゲーションされます。
CREATE TABLE ... AS SELECT (CTAS) ステートメントを実行してテーブルを作成します。
実行する CREATE DYNAMIC TABLE ステートメント。
データ操作言語 (DML) コマンドの実行。タグの伝播は、以下の DML コマンドで発生します。
INSERT
MERGE
UPDATE
COPY INTO
CREATE TABLE ... CLONE と CREATE TABLE ... LIKE は、タグの伝播に PROPAGATE タグプロパティを利用していません。これらのステートメントを実行すると、ソースからのタグは常にターゲット・オブジェクトに割り当てられます。
注釈
オブジェクト依存関係のタグの伝播とは異なり、データ移動があるときにターゲットオブジェクトに適用されるタグは、ソースオブジェクトのタグが変更されると継続的に更新され ません。
タグ伝播のセットアップ¶
タグの自動伝播を有効にするには、 CREATE TAG または ALTER TAG コマンドを使用して、 PROPAGATE プロパティをセットします。オブジェクト依存関係、データ移動、またはその両方に対してタグが伝播されるように、プロパティを構成できます。
タグの伝播のセットアップについては、 自動的に伝播するタグの定義 を参照してください。
タグの伝播の競合¶
タグが異なるソースオブジェクトから同じターゲットオブジェクトに伝播されると、競合が発生する可能性があります。タグがソース・オブジェクトのそれぞれで異なる値を持っている場合、そのタグがソース・オブジェクトからターゲット・オブジェクトに伝播されるときに競合が発生します。
注釈
ターゲット・オブジェクトに手動で適用されたタグがある場合、既存のタグ値が伝播された値よりも優先されるため、競合は発生しません。
ターゲットオブジェクトがSnowflakeのオブジェクト階層で上位のオブジェクトから値を継承している場合、伝播された値が優先され、競合は発生しません。
タグの ON_CONFLICT プロパティは、コンフリクトが発生したときに何が起こるかを決定します。タグ伝播の競合を処理するには、3つのオプションがあります。
オプション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
タグの値はinternal
になります。これは、public
よりも前にあるためです。ON_CONFLICT = ALLOWED_VALUES_SEQUENCE
を使用する場合、 ALLOWED_VALUES パラメーターを変更すると、コンフリクトの解決方法に影響することに注意してください。例えば、許可リストの値の順番を変更した場合、将来競合が発生し、タグに異なる値が割り当てられる可能性があります。
タグの伝播に関連する競合を追跡するには、イベントテーブルを使用したタグ伝播の監視 をご参照ください。
イベントテーブルを使用したタグ伝播の監視¶
タグの伝播に関連するテレメトリーデータを収集するには、 イベントテーブル を使用することができます。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
イベントの重大度¶
タグ伝播イベントはテーブルを管理する LOG_LEVEL パラメーター がその重大度レベルのイベントを表示するように構成されている場合にのみログされます。次のテーブルを使用して、タグ伝播イベントの重大度レベルを決定します。
イベントタイプ |
解決タイプ |
重大性 |
---|---|---|
|
|
WARN |
|
INFO |
|
|
INFO |
|
|
なし |
ERROR |
サポートされているオブジェクト¶
ソースからターゲットへのタグの伝播は、以下のオブジェクトタイプでサポートされています。
列
以下のタイプのテーブル:
テーブル
動的テーブル - 動的テーブルの作成は、タグの伝播の目的上、オブジェクト依存関係とデータ移動の両方と見なされます。
外部テーブル
Icebergテーブル
一時テーブル
以下の表示タイプ:
ビュー
セキュアビュー
マテリアライズドビュー
制限と考慮事項¶
システムタグは伝播されません。
継承されたタグ は伝播されません。
タグは共有からローカルオブジェクトには伝播されません。
オブジェクト上のタグの数は、 標準制限 を超えることはできません。
タグは、10,000個を超えるターゲットオブジェクトに伝播することはできません。イベントテーブルを使用して この理由で伝播が失敗したかどうかを確認することができます。
オブジェクト依存関係のタグの伝播では、タグをソース・テーブルとターゲット・ビューの両方に適用できます。タグがマスキングポリシーに関連付けられている場合、ポリシーの重複実行に関連する結果が発生する可能性があります。