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';
CopyVerwenden 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;
CopyWenn es bei diesem Tag einen Konflikt zwischen den Werten
internal
undpublic
gibt, ist der Wert des Tagsdata_sensitivity
internal
, da er in der Liste der zulässigen Werte vorpublic
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.