Automatische Tag-Weitergabe mit benutzerdefinierten Tags

Die Tag-Propagierung weist den Zielobjekten automatisch ein Objekt-Tag zu, wenn es auf das Quellobjekt angewendet wird. Sie können beispielsweise Tags für ein Quellobjekt definieren, wie eine Tabelle und ihre Spalten. Diese Tags werden automatisch auf ein Zielobjektübertragen, z. B. eine Ansicht oder eine andere Tabelle, die aus dem Quellobjekt erstellt wurde

Die Vorteile der automatischen Tag-Weiterleitung umfassen Folgendes:

  • Optimierung der Tag-Verwaltung über Objekte hinweg, insbesondere wenn Tags auf Quellobjekte oder Spalten angewendet werden, um die Suche und den Datenschutz zu erleichtern.

  • Sicherstellen, dass alle mit den Tags verbundenen Richtlinien automatisch auf die Zielobjekte angewendet werden.

Nur der Tag-Eigentümer mit der APPLY TAG-Berechtigung auf Kontoebene kann die automatische Tag-Weitergabe implementieren.

Arten der Weitergabe

Sie können wählen, ob ein Tag weitergegeben werden soll, wenn es eine Objektabhängigkeit, Datenbewegung oder beides gibt.

Tag-Weitergabe für Objektabhängigkeiten

Wenn die Tag-Weitergabe für Objektabhängigkeiten konfiguriert ist, wird ein Tag von einem Quellobjekt an alle Zielobjekte weitergegeben, die auf ihm basieren. Wenn Sie z. B. die Weitergabe für ein Tag data_sensitivity in einer Tabelle t1 einrichten und dann zwei Ansichten auf der Grundlage von t1 erstellen, wird das Tag data_sensitivity auf beide Ansichten übertragen.

Das Erstellen einer Ansicht, einer gesicherten Ansicht, einer materialisierten Ansicht oder einer dynamischen Tabelle aus einem Quellobjekt gilt als Objektabhängigkeit.

Kontinuierliche Weitergabe für Objektabhängigkeiten

Wenn ein Tag für Objektabhängigkeiten konfiguriert ist, werden die Zielobjekte von Snowflake kontinuierlich aktualisiert die Zielobjekt, wenn eines der folgenden Ereignisse eintritt:

  • Das Tag wird zu einem Quellobjekt oder einer Spalte hinzugefügt.

  • Der Wert eines Tags wird aktualisiert.

  • Ein Tag wird aus einem Quellobjekt oder einer Spalte entfernt. In diesem Fall entfernt Snowflake das Tag aus dem Zielobjekt oder der Zielspalte.

Nehmen wir zum Beispiel an, dass das Tag data_sensitivity nach der Ausführung einer Anweisung CREATE VIEW von der Tabelle t1 in die Ansicht v2 übertragen wurde. Wenn Sie den Wert von data_sensitivity auf t1 ändern, wird auch der Wert des Tags auf v2 aktualisiert.

Die automatische Tag-Weitergabe hängt von der Existenz des Quellobjekts ab. Wenn das Quellobjekt mit Tags gelöscht wird, werden die Tags nicht an das Zielobjekt weitergegeben. Da eine Ansicht von ihren Quellen, wie einer Basistabelle oder anderen Ansichten, abhängt, werden Tags nur übertragen, wenn das Quellobjekt existiert.

Tag-Weitergabe für die Datenbewegung

Wenn die Tag-Weitergabe für die Datenbewegung konfiguriert ist, wird ein Tag weitergegeben, wenn Sie Daten von einem Quellobjekt in ein anderes Objekt verschieben, indem Sie eine der folgenden Aktionen ausführen:

  • Ausführen einer CREATE TABLE … AS SELECT (CTAS)-Anweisung, um eine Tabelle zu erstellen.

  • Ausführen einer CREATEDYNAMICTABLE-Anweisung.

  • Ausführen eines Data Manipulation Language (DML)-Befehls. Die Tag-Weitergabe erfolgt für die folgenden DML-Befehle:

    • INSERT

    • MERGE

    • UPDATE

    • COPY INTO

CREATE TABLE … CLONE und CREATE TABLE … LIKE verlassen sich nicht auf die Tag-Eigenschaft PROPAGATE für die Tag-Weitergabe. Wenn Sie diese Anweisungen ausführen, werden dem Zielobjekt immer Tags aus der Quelle zugewiesen.

Bemerkung

Anders als bei der Tag-Weitergabe für Objektabhängigkeiten werden Tags, die bei Datenbewegungen auf Zielobjekte angewendet werden, nicht kontinuierlich aktualisiert, wenn sich Tags auf dem Quellobjekt ändern.

Einrichten der Tag-Weitergabe

Um die automatische Weitergabe von Tags zu aktivieren, verwenden Sie den Befehl CREATE TAG oder ALTER TAG, um die Eigenschaft PROPAGATE zu setzen. Sie können die Eigenschaft so konfigurieren, dass Tags für Objektabhängigkeiten, Datenbewegungen oder beides weitergegeben werden.

Anweisungen zum Einrichten der Tag-Weitergabe finden Sie unter Definieren Sie ein Tag, das automatisch weitergegeben wird..

Konflikte bei der Tag-Weitergabe

Es kann zu Konflikten kommen, wenn ein Tag von verschiedenen Quellobjekten auf dasselbe Zielobjekt übertragen wird. Wenn das Tag in jedem der Quellobjekte einen anderen Wert hat, kommt es zu einem Konflikt, wenn dieses Tag von den Quellobjekten an das Zielobjekt weitergegeben wird.

Bemerkung

Wenn das Zielobjekt über ein manuell zugewiesenes Tag verfügt, hat der vorhandene Tag-Wert Vorrang vor einem übertragenen Wert, sodass es keinen Konflikt gibt.

Wenn das Zielobjekt einen Wert von einem Objekt erbt, das in der Snowflake-Objekthierarchie höher steht, hat der übertragene Wert Vorrang und es gibt keinen Konflikt.

Die Eigenschaft ON_CONFLICT eines Tags bestimmt, was passiert, wenn ein Konflikt auftritt. Sie haben drei Optionen für die Behandlung von Konflikten bei der Tag-Weitergabe:

  • Option 1: Ersetzen Sie den Wert des Tags durch die Zeichenfolge CONFLICT. Dies ist die Standardeinstellung, wenn Sie nicht den Parameter ON_CONFLICT des Tags einstellen.

  • Option 2: Ersetzen Sie den Wert des Tags durch eine benutzerdefinierte Zeichenfolge. Sie legen den Parameter ON_CONFLICT auf diese Zeichenfolge fest.

    Wenn Sie beispielsweise möchten, dass der Wert eines Tags HIGHLY CONFIDENTIAL lautet, wenn es einen Konflikt zwischen den Werten gibt, verwenden Sie die folgende SQL-Abfrage, um das Tag zu erstellen:

    CREATE TAG data_sensitivity
      PROPAGATE = ON_DEPENDENCY_AND_DATA_MOVEMENT
      ON_CONFLICT = 'HIGHLY CONFIDENTIAL';
    
    Copy
  • Option 3: Verwenden Sie die Reihenfolge der Werte im Parameter ALLOWED_VALUES des Tags, um zu bestimmen, welcher Wert verwendet werden soll. Legen Sie ON_CONFLICT = ALLOWED_VALUES_SEQUENCE fest, um diese Strategie zu implementieren.

    Nehmen wir zum Beispiel an, Sie haben das Tag mit der folgenden SQL-Anweisung erstellt:

    CREATE TAG data_sensitivity
      ALLOWED_VALUES 'confidential', 'internal', 'public'
      PROPAGATE = ON_DEPENDENCY
      ON_CONFLICT = ALLOWED_VALUES_SEQUENCE;
    
    Copy

    Wenn es bei diesem Tag einen Konflikt zwischen den Werten internal und public gibt, ist der Wert des Tags data_sensitivity internal, da er in der Liste der zulässigen Werte vor public steht.

    Beachten Sie, dass die Änderung des Parameters ALLOWED_VALUES die Lösung von Konflikten beeinflusst, wenn Sie ON_CONFLICT = ALLOWED_VALUES_SEQUENCE verwenden. Wenn Sie z. B. die Reihenfolge der Werte in der Liste der zulässigen Werte ändern, könnten zukünftige Konflikte dazu führen, dass dem Tag ein anderer Wert zugewiesen wird.

Informationen zum Verfolgen von Konflikten im Zusammenhang mit der Tag-Weitergabe finden Sie unter Verwenden einer Ereignistabelle zur Überwachung der Tag-Weitergabe.

Verwenden einer Ereignistabelle zur Überwachung der Tag-Weitergabe

Sie können eine Ereignistabelle verwenden, um Telemetriedaten im Zusammenhang mit der Tag-Weitergabe zu sammeln. Nachdem Snowflake mit dem Sammeln der Daten in der Ereignistabelle begonnen hat, können Sie die Tabelle abfragen, einen Stream zum Verfolgen von Änderungen erstellen oder Alerts einstellen, um Benachrichtigungen beim Auftreten bestimmter Ereignisse zu senden.

Wenn Sie Telemetriedaten für die Tag-Weitergabe sammeln möchten, müssen Sie den Kontoparameter ENABLE_TAG_PROPAGATION_EVENT_LOGGING aktivieren. Um mit dem Erfassen von Daten zu beginnen, führen Sie den folgenden Befehl aus:

ALTER ACCOUNT SET ENABLE_TAG_PROPAGATION_EVENT_LOGGING = TRUE;
Copy

Wenn Sie für die Datenbank des Tags eine Ereignistabelle festgelegt haben, werden die Ereignisse in dieser Tabelle protokolliert. Andernfalls werden die Ereignisse in der Standard-Ereignistabelle protokolliert.

Erläuterungen zu den Ereignissen

Die folgende Tabelle beschreibt die Werte in der Ereignistabelle, die der Tag-Weitergabe entsprechen, sodass Sie sich auf die entsprechenden Ereignisse konzentrieren können. Ausführliche Informationen über die Struktur einer Ereignistabelle finden Sie unter Spalten von Ereignistabellen.

Spalte der Ereignistabelle

Spaltenfeld

Feldwert

Beschreibung

scope

name

snow.automatic_tag_propagation

Zeigt an, dass sich der Datensatz auf die automatische Tag-Weitergabe bezieht.

record_attributes

tag_name

tag_name

Name des Tags, bei dem während der Weitergabe ein Ereignis aufgetreten ist.

record_attributes

event_type

CONFLICT

Zeigt an, dass bei der Weitergabe eines Tags ein Konflikt aufgetreten ist.

record_attributes

event_type

TAG_PROPAGATION_LIMIT_EXCEEDED

Zeigt an, dass Snowflake kein Tag weitergegeben hat, da es mehr als 10.000 Zielobjekte gab.

value

conflict_values

[tag_value, tag_value]

Array der widersprüchlichen Tag-Werte.

value

resolution_type

DEFAULT, STRING_OVERRIDE oder ALLOWED_VALUES_OVERRIDE

Gibt die Aktion an, die Snowflake bei Auftreten eines Konflikts durchgeführt hat. Um zu verstehen, warum der Konflikt auf eine bestimmte Weise gelöst wurde, lesen Sie Konflikte bei der Tag-Weitergabe.

value

resolved_values

tag_value

Endgültiger Wert des Tags, nachdem Snowflake einen Konflikt behoben hat.

Verwenden Sie die folgenden Beispiele, um besser zu verstehen, wie Tag-Weitergabeereignisse in einer Ereignistabelle identifiziert werden können.

Abfrage: Suchen aller Ereignisse im Zusammenhang mit der Weitergabe des Tags 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
Abfrage: Suchen aller Tags, bei deren Weitergabe ein Konflikt aufgetreten ist
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
Abfrage: Suchen von Entitäten, in denen Konflikte auftraten, als das Tag TAG1 weitergegeben wurde
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

Schweregrad der Ereignisse

Ereignisse zur Tag-Weitergabe werden nur protokolliert, wenn der LOG_LEVEL-Parameter, der für die Tabelle gilt, so konfiguriert ist, dass er Ereignisse dieses Schweregrads anzeigt. Verwenden Sie die folgende Tabelle, um den Schweregrad von Ereignissen bei der Tag-Weitergabe zu bestimmen.

Ereignistyp

Lösungstyp

Schweregrad

CONFLICT

default

WARN

string_override

INFO

allowed_values_override

INFO

TAG_PROPAGATION_LIMIT_EXCEEDED

k.A.

ERROR

Unterstützte Objekte

Die Tag-Übertragung von der Quelle zum Ziel wird für die folgenden Objekttypen unterstützt:

  • Spalten

  • Die folgenden Arten von Tabellen:

    • Tabellen

    • Dynamische Tabellen – Das Erstellen einer dynamischen Tabelle wird sowohl als Objektabhängigkeit als auch als Datenbewegung für die Zwecke der Tag-Verteilung betrachtet.

    • Externe Tabellen

    • Iceberg-Tabellen

    • Temporäre/transiente Tabellen

  • Die folgenden Arten von Ansichten:

    • Ansichten

    • Sichere Ansichten

    • Materialisierte Ansichten

Einschränkungen und Hinweise

  • System-Tags werden nicht weitergegeben.

  • Vererbte Tags werden nicht weitergegeben.

  • Tags werden nicht von einer Freigabe an lokale Objekte weitergegeben.

  • Die Anzahl der Tags auf einem Objekt darf die Standardgrenze von nicht überschreiten.

  • Ein Tag kann nicht an mehr als 10.000 Zielobjekte weitergegeben werden. Sie können die Ereignistabelle verwenden, um herauszufinden, ob die Weitergabe aus diesem Grund fehlgeschlagen ist.

  • Bei der Tag-Propagierung für Objektabhängigkeiten kann ein Tag sowohl auf die Quelltabelle als auch auf die Zielansichten angewendet werden. Wenn das Tag mit einer Maskierungsrichtlinie verknüpft ist, könnte die doppelte Ausführung der Richtlinie Konsequenzen haben.