ユーザー定義タグによるタグの自動伝播

タグの伝播は、 オブジェクトタグ がソースオブジェクトに適用されている場合、ターゲットオブジェクトに自動的に割り当てます。たとえば、テーブルやその列などのソースオブジェクトにタグを定義すると、これらのタグはソースオブジェクトから作成されたビューや別のテーブルなどのターゲットオブジェクトに自動的に伝播されます。

タグの自動伝播の利点は以下の通りです。

  • オブジェクト全体のタグ管理を合理化し、特にソースオブジェクトや列にタグを適用することで、発見やデータ保護を容易にします。

  • タグに関連付けられたポリシーがターゲットオブジェクトに自動的に適用されるようにします。

タグの自動伝播を実装できるのは、アカウントレベル APPLY TAG の権限を持つタグ所有者のみです。

伝播のタイプ

オブジェクト依存関係データ移動 、またはその両方がある場合に、タグを伝播することを選択できます。

オブジェクト依存関係のタグの伝播

オブジェクト依存関係に対してタグの伝播が構成されている場合、タグはソースオブジェクトから、そのオブジェクトをベースとするすべてのターゲットオブジェクトに伝搬されます。例えば、 t1 テーブルでタグ data_sensitivity の伝播をセットし、 t1 をベースに 2 つのビューを作成した場合、 data_sensitivity タグは両方のビューに伝搬されます。

ソース・オブジェクトからビュー、セキュア・ビュー、マテリアライズド・ビュー、または動的テーブルを作成することは、オブジェクト依存関係と見なされます。

オブジェクト依存関係の連続伝搬

タグがオブジェクト依存関係用に構成されている場合、Snowflakeは以下のいずれかが発生すると、ターゲットオブジェクトを 継続的に更新します

  • タグはソース・オブジェクトまたは列に追加されます。

  • タグの値が更新されます。

  • ソース・オブジェクトまたは列からタグが削除されます。この場合、Snowflakeはターゲットオブジェクトまたは列からタグを削除します。

例えば、 CREATE VIEW ステートメントを実行した後、 data_sensitivity タグがテーブル t1 からビュー v2 に伝播されたとします。t1data_sensitivity の値を変更すると、 v2 のタグの値も更新されます。

タグの自動伝播は、ソースオブジェクトの存在に依存します。タグを持つソースオブジェクトがドロップされた場合、タグはターゲットオブジェクトに伝播されません。ビューはベーステーブルや他のビューなどのソースに依存するため、タグはソースオブジェクトが存在する場合にのみ伝播されます。

データ移動のためのタグの伝播

タグの伝播がデータ移動用に構成されている場合、以下のいずれかを実行してソース・オブジェクトから別のオブジェクトにデータを移動すると、タグがプロパゲーションされます。

  • CREATE TABLE ... AS SELECT (CTAS) ステートメントを実行してテーブルを作成します。

  • 実行する CREATE DYNAMIC TABLE ステートメント。

  • データ操作言語 (DML) コマンドの実行。タグの伝播は、以下の DML コマンドで発生します。

    • INSERT

    • MERGE

    • UPDATE

    • COPY INTO

CREATE TABLE ... CLONECREATE 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';
    
  • オプション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;
    

    このタグの値 internalpublic の間に矛盾がある場合、 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;

タグのデータベースにイベントテーブルが設定されている場合、イベントはそのテーブルにログされます。それ以外の場合、イベントはデフォルトのイベントテーブルにログされます。

イベントの理解

次のテーブルでは、タグの伝播に対応するイベントテーブルの値について説明し、適切なイベントに集中できるようにします。イベントテーブルの構造の詳細については、 イベントテーブル列 をご参照ください。

イベントテーブル列

列フィールド

フィールド値

説明

scope

name

snow.automatic_tag_propagation

記録が自動タグ伝播に関連していることを示します。

record_attributes

tag_name

tag_name

伝播中にイベントが発生したタグの名前。

record_attributes

event_type

CONFLICT

タグの伝播時に競合が発生したことを示します。

record_attributes

event_type

TAG_PROPAGATION_LIMIT_EXCEEDED

ターゲットオブジェクトが10,000個以上あったため、Snowflakeがタグを伝播しなかったことを示します。

value

conflict_values

[tag_value, tag_value]

競合していたタグ値の配列。

value

resolution_type

DEFAULTSTRING_OVERRIDE 、または ALLOWED_VALUES_OVERRIDE

競合が発生したときにSnowflakeが実行したアクションを示します。競合が特定の方法で解決された理由を理解するには、 タグの伝播の競合 をご参照ください。

value

resolved_values

tag_value

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';
クエリ:伝播時に競合を引き起こしたすべてのタグを検索
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';
クエリ:タグ 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';

イベントの重大度

Tag propagation events are logged only if the LOG_EVENT_LEVEL parameter governing the table is configured to show events of that severity level. Use the following table to determine the severity level of tag propagation events.

イベントタイプ

解決タイプ

重大性

CONFLICT

default

WARN

string_override

INFO

allowed_values_override

INFO

TAG_PROPAGATION_LIMIT_EXCEEDED

なし

ERROR

サポートされているオブジェクト

ソースからターゲットへのタグの伝播は、以下のオブジェクトタイプでサポートされています。

  • 以下のタイプのテーブル:

    • テーブル

    • 動的テーブル - 動的テーブルの作成は、タグの伝播の目的上、オブジェクト依存関係とデータ移動の両方と見なされます。

    • 外部テーブル

    • Icebergテーブル

    • 一時テーブル

  • 以下の表示タイプ:

    • ビュー

    • セキュアビュー

    • マテリアライズドビュー

制限と考慮事項

  • システムタグは伝播されません。

  • 継承されたタグ は伝播されません。

  • タグは共有からローカルオブジェクトには伝播されません。

  • オブジェクト上のタグの数は、 標準制限 を超えることはできません。

  • In a single transaction that triggers tag propagation, a tag can only be propagated to up to 10,000 downstream objects. If there are more than 10,000 objects in the dependency chain, for instance, a table with more than 10,000 views referencing it, then propagation fails. You can use the event table to find out if propagation failed for this reason.

  • オブジェクト依存関係のタグの伝播では、タグをソース・テーブルとターゲット・ビューの両方に適用できます。タグがマスキングポリシーに関連付けられている場合、ポリシーの重複実行に関連する結果が発生する可能性があります。