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:

  • Ersetzen Sie den Wert des Tags durch die Zeichenfolge CONFLICT. Dies ist die Standardeinstellung, wenn Sie den ON_CONFLICT-Parameter des Tags nicht festlegen.

  • Ersetzen Sie den Wert des Tags durch eine benutzerdefinierte Zeichenfolge. Sie setzen den Parameter ON_CONFLICT auf diese Zeichenfolge.

    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
  • Verwenden Sie die Reihenfolge der Werte im Parameter ALLOWED_VALUES des Tags, um zu bestimmen, welcher Wert verwendet werden soll. Stellen Sie ON_CONFLICT = ALLOWED_VALUES_SEQUENCE ein, um diese Strategie umzusetzen.

    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.

Identifizieren Sie ungelöste Konflikte

Wenn ein Tag-Wert durch eine benutzerdefinierte Zeichenfolge oder die Standardzeichenfolge CONFLICT ersetzt wird, weil ein Tag-Übertragungskonflikt vorliegt, können Sie die Tabellenfunktion TAG_REFERENCES abfragen, um die Konflikte zu identifizieren.

Wenn Sie beispielsweise die Vorgabe akzeptieren, den Tag-Wert durch die Zeichenfolge CONFLICT zu ersetzen, können Sie mit der folgenden Abfrage feststellen, ob es Konflikte gegeben hat:

SELECT tag_name, tag_value, apply_method, level, domain
  FROM table(my_db.INFORMATION_SCHEMA.TAG_REFERENCES('my_table', 'table'))
  WHERE tag_name = '<tag_name>' AND tag_value = 'CONFLICT';
Copy

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.

  • Die Tag-Übertragung funktioniert nicht, wenn es mehr als 10.000 Ansichten gibt, die von einer Quelltabelle abhängen.

  • 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.