Objekt-Tagging

Unter diesem Thema werden die Konzepte und Anweisungen zur Verwendung von Tags in Snowflake beschrieben.

Weitere Informationen zur Verwendung einer Maskierungsrichtlinie bei einem Tag finden Sie unter Tag-basierte Maskierungsrichtlinien.

Unter diesem Thema:

Was ist ein Tag?

Tags bieten Datenverwaltern die Möglichkeit, sensible Daten für Compliance-, Erkennungs-, Schutz- und Ressourcennutzungszwecke über einen zentralen oder dezentralen Data Governance-Verwaltungsansatz zu verfolgen.

Ein Tag ist ein Objekt auf Schemaebene, das einem anderen Snowflake-Objekt zugewiesen werden kann. Einem Tag kann ein beliebiger Zeichenfolgenwert zugewiesen werden, wenn das Tag einem Snowflake-Objekt zugeordnet wird. Snowflake speichert das Tag und seinen Zeichenfolgenwert als Schlüssel-Wert-Paar. Das Tag muss für Ihr Schema eindeutig sein, wobei der Tag-Wert immer eine Zeichenfolge ist.

Sie erstellen einen Tag mit einer CREATE TAG-Anweisung und geben den Tag-Zeichenfolgenwert an, wenn Sie das Tag einem Objekt zuweisen. Das Tag kann einem Objekt beim Erstellen des Objekts mit einer CREATE <Objekt>-Anweisung zugewiesen werden, vorausgesetzt, das Tag ist bereits vorhanden. Alternativ können Sie das Tag mit einer ALTER <Objekt>-Anweisung einem vorhandenen Objekt zuweisen.

Ein einziges Tag kann gleichzeitig verschiedenen Objekttypen zugewiesen werden (z. B. Warehouse und Tabelle gleichzeitig). Zum Zeitpunkt der Zuweisung zum Snowflake-Objekt kann der Zeichenfolgenwert des Tags dupliziert werden oder eindeutig bleiben. So kann z. B. mehreren Tabellen das Tag „cost_center“ zugewiesen werden, und das Tag kann immer den Zeichenfolgenwert „sales“ haben. Alternativ kann der Zeichenfolgenwert auch anders lauten (z. B. „engineering“, „marketing“, „finance“). Nach dem Definieren der Tags und deren Zuweisung zu Snowflake-Objekten können die Tags abgefragt werden, um die Nutzung der Objekte zu verfolgen und so Data Governance-Operationen wie Nachverfolgung, Auditing und Reporting zu vereinfachen.

Da Tags Tabellen, Ansichten und Spalten zugewiesen werden können, ermöglicht das Setzen eines Tags und die anschließende Abfrage des Tags die Erkennung einer Vielzahl von Datenbankobjekten und -spalten, die sensible Informationen enthalten. Nach dem Erkennen können die Datenverwalter bestimmen, wie die Verfügbarkeit der Daten am besten gesteuert werden kann, z. B. durch selektive Filterung mithilfe von Zeilenzugriffsrichtlinien oder mithilfe von Maskierungsrichtlinien, um zu bestimmen, ob die Daten tokenisiert, vollständig maskiert, teilweise maskiert oder nicht maskiert sind.

Die Zuweisung von Tags zu Warehouses ermöglicht eine genaue Verfolgung der Ressourcennutzung. Das Abfragen von Ressourcen-Tags ermöglicht eine einfache Gruppierung von Ressourcen nach Kostenstellen oder anderen Organisationseinheiten. Darüber hinaus kann das Tag die Analyse relativ kurzfristiger Geschäftsaktivitäten, wie z. B. Projekte, erleichtern, um detailliertere Informationen darüber zu erhalten, wann welche Ressourcen wie verwendet wurden.

Tag-Kontingente für Objekte und Spalten

Der Zeichenfolgenwert für jedes Tag kann bis zu 256 Zeichen lang sein mit der Option, zulässige Werte für ein Tag anzugeben.

Die folgende Beschreibung gilt für alle Objekte, die keine Tabellen und Ansichten sind:

Snowflake erlaubt eine maximale Anzahl von 50 eindeutigen Tags, die für ein einzelnes Objekt gesetzt werden können. In einer einzelnen CREATE <Objekt>- oder ALTER <Objekt>-Anweisung können maximal 100 Tags angegeben werden.

Die maximale Anzahl eindeutiger Tags ist für Tabellen und Ansichten, einschließlich der Spalten in diesen Tabellen und Ansichten, leicht unterschiedlich.

Tabellen, Ansichten und Spalten

Für eine Tabelle oder Ansicht und deren Spalten können maximale 100 eindeutigen Tags in einer einzelnen CREATE <Objekt>- oder ALTER <Objekt>-Anweisung angegeben werden. Für diesen Gesamtwert gelten die folgenden Limits:

  • Ein einzelnes Tabellen- oder Ansichtsobjekt: 50 eindeutige Tags.

  • Alle Spalten kombiniert in einer einzigen Tabelle oder Ansicht: 50 eindeutige Tags.

Wenn beispielsweise für eine einzelne Spalte in einer Tabelle 10 eindeutige Tags gesetzt wurden, erlaubt Snowflake Folgendes:

  • Setzen von 40 weiteren eindeutigen Tags entweder auf dieselbe Spalte, auf andere Spalten in der Tabelle oder auf eine Kombination von Spalten der Tabelle.

  • Setzen von 50 weiteren eindeutigen Tags auf die Tabelle selbst.

Sobald die Grenze von 50 eindeutigen Tags für die Tabelle selbst oder deren Spalten erreicht ist, können keine weiteren Tags auf die Tabelle oder deren Spalten gesetzt werden. Wenn nun der Wunsch besteht, der Tabelle oder ihren Spalten zusätzliche Tags zuzuweisen, ist der nächste Schritt die Frage, wie die Tag-Kontingente eines Objekts verwaltet werden können.

Verwalten von Tag-Kontingenten

Die maximale Anzahl von 50 eindeutigen Tags umfasst gelöschte Tags für einen Zeitraum von 24 Stunden ab dem Zeitpunkt, an dem das Tag mit einer DROP TAG-Anweisung gelöscht wurde. Der Grund für diese Zeitspanne ist, dass der Benutzer, der das Tag gelöscht hat, eine UNDROP TAG-Anweisung ausführen kann, falls erforderlich. Wenn die UNDROP TAG-Operation innerhalb des 24-Stunden-Zeitintervalls ausgeführt wird, stellt Snowflake die Tag-Zuweisung (d. h. Referenzen) wieder her, die vor der DROP TAG-Operation aktuell waren.

Nach Ablauf des Zeitraums von 24 Stunden löscht Snowflake alle Referenzen, die sich auf das gelöschte Tag beziehen. An diesem Punkt kann dem Objekt oder der Spalte, das/die früher auf das gelöschte Tag verwiesen hat, ein neues Tag zugewiesen werden.

Gehen Sie wie folgt vor, um die Tag-Kontingente für ein Objekt zu verwalten:

  1. Fragen Sie die Ansicht TAG_REFERENCES (in Account Usage) ab, um die Tag-Zuweisungen zu ermitteln.

  2. Entfernen Sie das Tag von dem Objekt oder der Spalte. Beispiel:

    Für Objekte verwenden Sie den entsprechenden Befehl ALTER <Objekt> ... UNSET TAG.

    Für die Spalte einer Tabelle oder Ansicht verwenden Sie den entsprechenden Befehl ALTER { TABLE | VIEW } ... { ALTER | MODIFY } COLUMN ... UNSET TAG.

  3. Löschen Sie das Tag mit einer DROP TAG-Anweisung.

Tag-Herkunft

Ein Tag wird basierend auf der Hierarchie der sicherbaren Snowflake-Objekte vererbt. Snowflake empfiehlt, dass sich die Definition der Tag-Schlüssel so nah wie möglich an der Hierarchie der sicherbaren Objekte in Ihrer Snowflake-Umgebung orientieren sollte.

The tag administrator can apply masking policies to tables and views.

Tag-Vererbung bedeutet, dass ein Tag, das auf eine Tabelle angewendet wird, auch für die Spalten in dieser Tabelle gilt. Dieses Verhalten wird als „Tag-Herkunft“ bezeichnet.

Es ist möglich, das geerbte Tag eines bestimmten Objekts zu überschreiben. Wenn beispielsweise eine Tabellenspalte das Tag „cost_center“ erbt, kann das Tag durch ein Tag mit einem spezifischeren Zeichenfolgenwert wie „sales_na“ ersetzt werden, mit dem die Vertriebskostenstelle „Nordamerika“ angegeben wird. Zusätzlich kann ein neues Tag auf die Tabellenspalte angewendet werden. Verwenden Sie eine ALTER TABLE … ALTER COLUMN-Anweisung, um den Tag-Zeichenfolgenwert der Spalte zu aktualisieren und um ein oder mehrere zusätzliche Tags für eine Spalte festzulegen.

Nachdem Sie die Tag-Schlüssel definiert und die Tags den Snowflake-Objekten zugewiesen haben, können Sie die Tags, die Tag-Referenzen und die Tag-Herkunft mithilfe der angegebenen Tabellenfunktionen oder durch Abfragen der Ansichten verfolgen, wie in Verwenden von Tags (unter diesem Thema) gezeigt.

Bemerkung

Die Tag-Herkunft schließt nicht die Verbreitung auf verschachtelte Objekte ein. Beispiel:

table_1 » view_1 » materialized_view_1

Wenn verschachtelte Objekte bereits in Bezug auf eine zugrunde liegende Tabelle oder Ansicht vorhanden sind, führt ein auf das zugrunde liegende Objekt gesetztes Tag nicht automatisch dazu, dass auch auf das verschachtelte Objekt ein Tag gesetzt wird. In diesem Beispiel führt ein auf table_1 gesetztes Tag nicht dazu, dass dasselbe Tag auf view_1 und materialized_view_1 gesetzt wird. Dieses Verhalten gilt auch für Spalten.

Wenn es erforderlich ist, dass Tags von darunter liegenden Objekten oder Spalten auf verschachtelte Objekte übertragen werden, führen Sie eine CREATE OR REPLACE-Anweisung auf dem verschachtelten Objekt aus, und Sie stellen sicher, dass die SQL-Anweisung das Tag auf dem verschachtelten Objekt oder der Spalte angibt.

Vorteile von Tags

Benutzerfreundlichkeit

Ein Tag wird einmal definiert und kann dann auf beliebig viele verschiedene Objekte angewendet werden.

Tag-Herkunft

Da Tags vererbt werden, führt die Anwendung des Tags auf Objekte, die in der Hierarchie der sicherbaren Objekte höher stehen, dazu, dass das Tag auf alle untergeordneten Objekte angewendet wird. Wird beispielsweise ein Tag für eine Tabelle festgelegt, so wird das Tag an alle Spalten in dieser Tabelle vererbt.

Konsistente Zuweisung mit Replikation

Snowflake repliziert die Tags und deren Zuweisungen innerhalb der Primärdatenbank auch in die Sekundärdatenbank.

Weitere Informationen dazu finden Sie unter Replikation (unter diesem Thema).

Verfolgen von sensiblen Daten und der Ressourcennutzung

Tags vereinfachen das Identifizieren von sensiblen Daten (z. B. PII, Geheimnis) und machen die Nutzung von Snowflake-Ressourcen transparent. Da sich Daten und Metadaten im gleichen System befinden, können Analysten anhand der Tag-Definition (z B. cost_center, department) schnell feststellen, welche Ressourcen die meisten Snowflake-Credits verbrauchen.

Zentrale oder dezentrale Verwaltung

Tags unterstützen verschiedene Verwaltungsansätze, um die Konformität mit internen und externen Vorschriften zu vereinfachen.

Bei einem zentralen Ansatz werden Tags von der kundenspezifischen Rolle tag_admin erstellt und auf Snowflake-Objekte angewendet.

Bei einem dezentralen Ansatz werden die Tags zwar von der kundenspezifischen Rolle tag_admin definiert, um eine einheitliche Benennung sicherzustellen, aber die Anwendung der Tags auf die Snowflake-Objekte erfolgt durch einzelne Teams.

Hinweise

Zukünftige Berechtigungszuweisungen

Zukünftige Berechtigungszuweisungen zu Tags werden nicht unterstützt.

Als Problemumgehung können Sie einer kundenspezifischen Rolle die Berechtigung APPLYTAG erteilen, damit diese Rolle Tags auf andere Objekte anwenden kann.

Verwenden von Tags mit Objekten und Features in Snowflake

Im Folgenden wird beschrieben, wie sich Tags auf Objekte und Features in Snowflake auswirken.

Unterstützte Objekte

In der folgenden Tabelle sind die unterstützten Objekte für Tags, einschließlich Spalten, basierend auf der Hierarchie der sicherbaren Snowflake-Objekte aufgeführt.

Ein Tag kann mit einer CREATE <Objekt>-Anweisung oder einer ALTER <Objekt>-Anweisung auf ein Objekt festgelegt werden, sofern in der nachstehenden Tabelle nichts anderes angegeben ist.

Ein Tag kann für eine Spalte entweder mit einer CREATE TABLE-, CREATE VIEW-, ALTER TABLE … MODIFY COLUMN- oder ALTER VIEW-Anweisung gesetzt werden.

Objekthierarchie

Unterstützte Objekte

Anmerkungen

Organisation

Konto

Ein Tag kann über eine Rolle mit der globalen Berechtigung APPLY TAG auf Ihr aktuelles Konto gesetzt werden.

Konto

Datenbank

Integration

Alle Typen werden unterstützt.

Verwenden Sie einen ALTER INTEGRATION-Befehl, um ein Tag für die Integration festzulegen.

Rolle

Ein Tag kann auf eine Rolle gesetzt werden, jedoch kann ein Tag nicht auf eine Datenbankrolle gesetzt werden.

Freigabe

Die Tags auf Freigaben werden vom Data Sharing-Anbieter gesetzt. Diese Tags sind für den Data Sharing-Verbraucher nicht sichtbar. Verwenden Sie einen ALTER SHARE-Befehl, um ein Tag für die Freigabe festzulegen.

Benutzer

Warehouse

Datenbank

Schema

Schema

Externe Tabelle

Materialisierte Ansicht

Pipe

Setzen Sie ein Tag auf eine Pipe mit einer ALTER PIPE-Anweisung.

Prozedur

Setzen Sie ein Tag auf eine gespeicherte Prozedur mit einer ALTER PROCEDURE-Anweisung.

Stagingbereich

Setzen Sie ein Tag auf einen Stagingbereich mit einer ALTER STAGE-Anweisung.

Stream

Tabelle

Aufgabe

Setzen Sie ein Tag auf eine Aufgabe mit einer ALTER TASK-Anweisung.

Ansicht

Tabelle oder Ansicht

Spalte

Festlegen von Tag-Werten

Mit der Tag-Eigenschaft ALLOWED_VALUES können die möglichen Zeichenfolgenwerte angegeben werden, die dem Tag zugewiesen werden können, wenn das Tag auf ein Objekt gesetzt wird. Die maximale Anzahl möglicher Zeichenfolgenwert für ein einzelnes Tag ist 50.

Sie können diese Werte beim Erstellen oder Ersetzen eines Tags mit einer CREATE TAG-Anweisung oder beim Ändern eines vorhandenen Tag-Schlüssels mit einer ALTER TAG-Anweisung angeben. Beachten Sie, dass die Anweisung ALTER TAG das Hinzufügen zulässiger Werte für ein Tag und das Löschen vorhandener Werte für ein Tag unterstützt.

Um die Liste der zulässigen Werte für ein Tag zu ermitteln, rufen Sie die Funktion GET_DDL auf.

Beispiel:

Erstellen Sie ein Tag mit dem Namen cost_center mit 'finance' und 'engineering' als den beiden einzigen zulässigen Zeichenfolgenwerten:

create tag cost_center
    allowed_values 'finance', 'engineering';
Copy

Prüfen Sie die zulässigen Werte:

select get_ddl('tag', 'cost_center')

+------------------------------------------------------------------------------+
| GET_DDL('tag', 'cost_center')                                                |
|------------------------------------------------------------------------------|
| create or replace tag cost_center allowed_values = 'finance', 'engineering'; |
+------------------------------------------------------------------------------+
Copy

Ändern Sie das Tag mit dem Namen cost_center, um 'marketing' als zulässigen Zeichenfolgenwert hinzuzufügen:

alter tag cost_center
    add allowed_values 'marketing';
Copy

Ändern Sie das Tag mit dem Namen cost_center, um 'engineering' als zulässigen Zeichenfolgenwert zu entfernen:

alter tag cost_center
    drop allowed_values 'engineering';
Copy

Um die Liste der zulässigen Zeichenfolgenwerte für ein bestimmtes Tag zu erhalten, rufen Sie entweder die Funktion GET_DDL oder die Funktion SYSTEM$GET_TAG_ALLOWED_VALUES auf. Angenommen, das Tag cost_center ist in einer Datenbank namens governance und einem Schema namens tags gespeichert:

select system$get_tag_allowed_values('governance.tags.cost_center');

+--------------------------------------------------------------+
| SYSTEM$GET_TAG_ALLOWED_VALUES('GOVERNANCE.TAGS.COST_CENTER') |
|--------------------------------------------------------------|
| ["finance","marketing"]                                      |
+--------------------------------------------------------------+
Copy

Objekt-Tagging und Maskierungsrichtlinien

Weitere Details dazu finden Sie unter Tag-basierte Maskierungsrichtlinien.

Beachten Sie, dass eine Maskierungsrichtlinie, die einer Spalte direkt zugewiesen ist, Vorrang vor einer Tag-basierten Maskierungsrichtlinie hat.

CREATE TABLE-Anweisungen

Mit CREATE TABLE … LIKE werden die der Quelltabelle zugewiesenen Tags der Zieltabelle zugewiesen.

Replikation

Tags und deren Zuweisungen können von einem Quellkonto in ein Zielkonto repliziert werden.

Tag-Zuweisungen können nach der ersten Replikation vom Quellkonto im Zielkonto nicht mehr geändert werden. So ist beispielsweise das Setzen eines Tags auf eine Sekundärdatenbank (d. h. eine replizierte Datenbank) nicht zulässig. Um Tag-Zuweisungen im Zielkonto zu ändern, ändern Sie diese im Quellkonto, und replizieren Sie sie dann in das Zielkonto.

Bei der Datenbankreplikation kann die Replikationsoperation fehlschlagen, wenn eine der folgenden Bedingungen erfüllt ist:

  • Die Primärdatenbank befindet sich in einem Enterprise-Konto (oder höher) und enthält ein Tag, aber mindestens eines der zur Replikation genehmigten Konten befindet sich in einer niedrigeren Edition.

  • Ein in der Primärdatenbank enthaltenes Objekt hat eine verwaiste Referenz auf ein Tag in einer anderen Datenbank.

Um Fehler durch verwaiste Referenzen zu vermeiden, replizieren Sie die Datenbank und die Objekte auf Kontoebene mit einer Replikations- oder Failover-Gruppe. Stellen Sie sicher, dass die Replikationsgruppe Folgendes enthält:

  • Die Datenbank, die die Tags in der Eigenschaft ALLOWED_DATABASES enthält.

  • Andere Objekte auf Kontoebene, die ein Tag in der Eigenschaft OBJECT_TYPES haben (z. B. ROLES, WAREHOUSES).

    Weitere Informationen dazu finden Sie unter CREATE REPLICATION GROUP und CREATE FAILOVER GROUP.

Bemerkung

Bei Verwendung von Replikations-/Failover-Gruppen oder Datenbankreplikation:

  • Failover/Failback-Features sind nur für Snowflake-Konten mit Business Critical Edition (oder höher) verfügbar.

    Weitere Informationen dazu finden Sie unter Einführung in Kontoreplikation und Failover.

  • Wenn Sie die IGNORE EDITION CHECK-Klausel für die Datenbankreplikation in einer ALTER DATABASE-Anweisung oder in einer CREATE OR ALTER-Anweisung für eine Replikations- oder Failover-Gruppe angeben, kann eine Tag-Replikation erfolgen, wenn das Zielkonto eine niedrigere Edition als Business Critical aufweist.

    Weitere Informationen dazu finden Sie in der Klauselbeschreibung unter dem jeweiligen Befehl.

Klonen

  • Tag-Zuordnungen im Quellobjekt (z. B. Tabelle) bleiben in den geklonten Objekten erhalten.

  • Für eine Datenbank oder ein Schema:

    Die in dieser Datenbank oder diesem Schema gespeicherten Tags werden ebenfalls geklont.

    Wenn eine Datenbank oder ein Schema geklont wird, werden die Tags, die sich in diesem Schema oder dieser Datenbank befinden, ebenfalls geklont.

    Wenn eine Tabelle oder Ansicht im Quellschema bzw. in der Quelldatenbank vorhanden ist und Verweise auf Tags in demselben Schema oder derselben Datenbank hat, wird die geklonte Tabelle oder Ansicht dem entsprechenden geklonten Tag (im Zielschema bzw. in der Zieldatenbank) zugeordnet und nicht dem Tag im Quellschema bzw. der Quelldatenbank.

Data Sharing (Datenfreigabe)

  • Wenn die freigegebene Ansicht und das freigegebene Tag in verschiedenen Datenbanken vorhanden sind, erteilen Sie der Freigabe die REFERENCE_USAGE-Berechtigung für die Datenbank, die das Tag enthält. Weitere Details dazu finden Sie unter Freigeben von Daten aus mehreren Datenbanken.

  • Für das Data Sharing-Verbraucherkonto gilt Folgendes:

    • Bei Ausführung von SHOW TAGS wird das freigegebene Tag zurückgegeben, vorausgesetzt, die Rolle, die den Befehl SHOW TAGS ausführt, verfügt über die USAGE-Berechtigung für das Schema, das das freigegebene Tag enthält.

    • Wenn ein Tag des Data Sharing-Anbieterkontos einer freigegebenen Tabelle zugewiesen ist, kann der Data Sharing-Verbraucher die Funktion SYSTEM$GET_TAG oder die Information Schema-Funktion TAG_REFERENCES aufrufen, um die Tag-Zuweisung anzuzeigen.

Verwenden von Tags

Tags können in Snowflake im Allgemeinen für Folgendes verwendet werden:

  1. Kundenspezifische Rolle definieren und Berechtigungen zuweisen

  2. Kundenspezifische Rolle einem Benutzer zuweisen

  3. Tag mit CREATE TAG-Anweisung erstellen

  4. Tag einem vorhandenen Snowflake-Objekt mit dem ALTER <Objekt>-Befehl zuweisen

    Beachten Sie, dass Sie alternativ ein Tag einem neuen Objekt zuweisen können, indem Sie einen CREATE <Objekt>-Befehl verwenden.

  5. Tags über Tabellenfunktionen und Ansichten verfolgen

Der Einfachheit halber wird in diesen Schritten von einem zentralen Verwaltungsansatz für Tags ausgegangen, bei dem die kundenspezifische Rolle tag_admin sowohl die CREATE- als auch die APPLY-Berechtigungen für das Tag besitzt.

Schritt 1: Kundenspezifische Rolle definieren und Berechtigungen zuweisen

In einem zentralen Verwaltungsansatz ist die kundenspezifische Rolle tag_admin für die Erstellung und Zuweisung von Tags zu Snowflake-Objekten zuständig.

Beachten Sie, dass in diesem Beispiel die Systemrolle ACCOUNTADMIN verwendet wird. Wenn die Verwendung dieser Rolle mit deren höheren Berechtigungen in einer Produktionsumgebung nicht erwünscht ist, überprüfen Sie, ob die Rolle, die der kundenspezifischen Rolle tag_admin Berechtigungen zuweist, über die notwendigen Berechtigungen verfügt, um die kundenspezifische Rolle tag_admin zu qualifizieren. Weitere Informationen dazu finden Sie unter Verwalten von Tags (unter diesem Thema).

use role useradmin;
create role tag_admin;
use role accountadmin;
grant create tag on schema <schema_name> to role tag_admin;
grant apply tag on account to role tag_admin;
Copy

Schritt 2: Kundenspezifische Rolle TAG_ADMIN einem Benutzer zuweisen

Weisen Sie einem Benutzer, der als Tag-Administrator fungiert, die kundenspezifische Rolle TAG_ADMIN zu.

use role useradmin;
grant role tag_admin to user jsmith;
Copy

Schritt 3: Tag erstellen

Führen Sie eine CREATE TAG-Anweisung aus, um ein Tag zu erstellen.

use role tag_admin;
use schema my_db.my_schema;
create tag cost_center;
Copy

Schritt 4: Tag einem Snowflake-Objekt zuweisen

Verwenden Sie für das Zuweisen eines Tags zu einem neuen Snowflake-Objekt die CREATE <Objekt>-Anweisung.

Um beispielsweise ein Tag einem neuen Warehouse zuzuweisen, verwenden Sie den Befehl CREATE WAREHOUSE.

use role tag_admin;
create warehouse mywarehouse with tag (cost_center = 'sales');
Copy

Verwenden Sie für das Zuweisen eines Tags zu einem vorhandenen Snowflake-Objekt die ALTER <Objekt>-Anweisung.

Um beispielsweise ein Tag einem vorhandenen Warehouse zuzuordnen, verwenden Sie den Befehl ALTER WAREHOUSE.

use role tag_admin;
alter warehouse wh1 set tag cost_center = 'sales';
Copy

Um ein Tag einer vorhandenen Spalte zuzuordnen oder zu entziehen, verwenden Sie bei einer Tabellenspalte den Befehl ALTER TABLE … MODIFY COLUMN und bei einer Ansichtsspalte den Befehl ALTER VIEW … MODIFY COLUMN. Beachten Sie, dass mit einer einzelnen Anweisung auch mehrere Tags zugeordnet oder entzogen werden können.

-- For a table or external table column

alter table <table_name> modify column <column_name> set tag <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ];
alter table <table_name> modify column <column_name> unset tag <tag_name> [ , <tag_name> , ... ];

-- For a view or materialized view column

alter view <view_name> modify column <column_name> set tag <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ];
alter view <view_name> modify column <column_name> unset tag <tag_name> [ , <tag_name> , ... ];
Copy

Schritt 5: Tags verfolgen

Sie können die Tag-Nutzung über zwei verschiedene Account Usage-Ansichten, eine Information Schema-Tabellenfunktion, eine Account Usage-Tabellenfunktion und eine Systemfunktion verfolgen.

Es kann hilfreich sein, sich zwei allgemeine Ansätze vorzustellen, um zu bestimmen, wie die Tag-Nutzung verfolgt werden soll:

  • Tags ermitteln oder auflisten

  • Zuweisungen (d. h. Referenzen) zwischen Tag und Objekt identifizieren

Tags ermitteln

Snowflake unterstützt die folgenden Optionen, um Tags aufzulisten und den Tag-Zeichenfolgenwert eines bestimmten Tag-Schlüssels zu identifizieren.

  • Identifizieren von Tags in Ihrem Konto:

    Verwenden Sie die Ansicht TAGS im Account Usage-Schema der freigegebenen SNOWFLAKE-Datenbank. Diese Ansicht fungiert wie ein Katalog für alle Tags in Ihrem Snowflake-Konto, der Informationen über aktuelle und gelöschte Tags enthält. Beispiel:

    select * from snowflake.account_usage.tags
    order by tag_name;
    
    Copy
  • Identifizieren des Werts eines bestimmten Tags:

    Verwenden Sie die Systemfunktion SYSTEM$GET_TAG, um den Tag-Wert, der dem angegebenen Tag zugewiesen ist, sowie das Snowflake-Objekt oder die Spalte zurückzugeben.

    select system$get_tag('cost_center', 'my_table', 'table');
    
    Copy
Zuweisungen identifizieren

Snowflake unterstützt verschiedene Optionen zur Identifizierung von Tag-Zuweisungen, je nachdem, ob die Abfrage auf das Konto oder eine bestimmte Datenbank abzielen soll und ob eine Tag-Herkunft benötigt wird.

  • Abfrage auf Kontoebene mit Herkunft:

    Verwenden Sie die Account Usage-Tabellenfunktion TAG_REFERENCES_WITH_LINEAGE, um alle Objekte zu ermitteln, die einen bestimmten Tag-Schlüssel und Tag-Wert haben, der auch die Tag-Herkunft enthält:

    select *
    from table(snowflake.account_usage.tag_references_with_lineage('my_db.my_schema.cost_center'));
    
    Copy
  • Abfrage auf Kontoebene ohne Herkunft:

    Verwenden Sie die Account Usage-Ansicht TAG_REFERENCES, um alle Objekte zu ermitteln, die einen bestimmten Tag-Schlüssel und Tag-Wert haben, aber nicht die Tag-Herkunft enthalten:

    select * from snowflake.account_usage.tag_references
    order by tag_name, domain, object_id;
    
    Copy
  • Abfrage auf Datenbankebene mit Herkunft:

    Jede Snowflake-Datenbank enthält ein Snowflake Information Schema. Verwenden Sie die Information Schema-Tabellenfunktion TAG_REFERENCES, um alle Objekte zu ermitteln, die ein bestimmtes Tag haben, das auch die Tag-Herkunft in einer bestimmten Datenbank enthält:

    select *
    from table(my_db.information_schema.tag_references('my_table', 'table'));
    
    Copy
  • Abfrage auf Datenbankebene nach allen Tags für jede Spalte in einer Tabelle oder Ansicht mit Herkunft:

    Verwenden Sie die Information Schema-Tabellenfunktion TAG_REFERENCES_ALL_COLUMNS, um alle Tags zu erhalten, die auf jeder Spalte einer gegebenen Tabelle oder Ansicht festgelegt sind:

    Beachten Sie, dass die Domäne TABLE für alle Objekte verwendet werden muss, die Spalten enthalten, auch wenn der Objektname eine Ansicht ist (d. h. Ansicht, materialisierte Ansicht).

    select *
    from table(information_schema.tag_references_all_columns('my_table', 'table'));
    
    Copy

Verwalten von Tags

Tag-Berechtigungen

Snowflake unterstützt die folgenden Berechtigungen, um zu bestimmen, ob Benutzer Tags erstellen, festlegen und besitzen können.

Beachten Sie, dass für die Bearbeitung eines Objekts in einem Schema auch die Berechtigung USAGE für die übergeordnete Datenbank und das Schema erforderlich ist.

Berechtigung

Verwendung

CREATE

Ermöglicht das Erstellen eines neuen Tags in einem Schema.

APPLY

Aktiviert die Set- und Unset-Operationen für das Tag auf einem Snowflake-Objekt. Beispiele für die Syntax finden Sie unter: Übersicht der DDL-Befehle, Operationen und Berechtigungen.

OWNERSHIP

Überträgt die Eigentümerschaft eines Tags, was die volle Kontrolle über das Tag gewährt. Erforderlich, um die meisten Eigenschaften eines Tags zu ändern.

Tag-DDL-Referenz

Snowflake unterstützt die folgenden DDL-Befehle zum Erstellen und Verwalten von Tags:

Beachten Sie, dass Snowflake die describe-Operation bei Tag-Objekten nicht unterstützt.

Übersicht der DDL-Befehle, Operationen und Berechtigungen

Die folgende Tabelle fasst die Beziehung zwischen Tag-Berechtigungen und DDL-Operationen zusammen.

Operation

Erforderliche Berechtigung

Tag erstellen.

Eine Rolle mit CREATE TAG-Berechtigung in demselben Schema.

Tag ändern.

Die Rolle mit OWNERSHIP-Berechtigung für das Tag.

Tag löschen und wiederherstellen.

Eine Rolle mit OWNERSHIP-Berechtigung für das Tag und USAGE-Berechtigung für die Datenbank und das Schema, in denen sich das Tag befindet.

Tags anzeigen.

Eine der folgenden Möglichkeiten: . Eine Rolle mit USAGE-Berechtigung für das Schema, in dem die Tags existieren, oder . Eine Rolle mit APPLY TAG on ACCOUNT-Berechtigung.

Tag einem Objekt zuordnen oder entziehen.

Für einzelne Objekte eine Rolle mit APPLY TAG-Berechtigung für das Konto oder APPLY TAG-Berechtigung für das Tag und OWNERSHIP-Berechtigung für das Objekt, dem das Tag zugeordnet wurde. Siehe Unterstützte Objekte.

Tag einer Spalte zuordnen oder entziehen.

Eine Rolle mit der Berechtigung APPLY TAG für das Konto oder eine Rolle mit APPLY-Berechtigung für das Tag und OWNERSHIP-Berechtigung für die Tabelle oder Ansicht.

Tags eines Objekts abrufen.

Siehe SYSTEM$GET_TAG, TAG_REFERENCES und TAG_REFERENCES_WITH_LINEAGE.

Snowflake unterstützt verschiedene Berechtigungen zum Erstellen und Festlegen eines Tags für ein Objekt.

  1. Bei einem zentralen Ansatz für die Tag-Verwaltung, bei dem die kundenspezifische Rolle tag_admin Tags für alle Objekte/Spalten erstellt und festlegt, sind die folgenden Berechtigungen erforderlich:

    use role securityadmin;
    grant create tag on schema <db_name.schema_name> to role tag_admin;
    grant apply tag on account to role tag_admin;
    
    Copy
  2. In einem hybriden Verwaltungsansatz verfügt eine einzelne Rolle über die CREATE TAG-Berechtigung, um die konsistente Benennung der Tags sicherzustellen, und einzelne Teams oder Rollen verfügen über die APPLY-Berechtigung für ein bestimmtes Tag.

    So kann beispielsweise der kundenspezifischen Rolle finance_role die Berechtigung erteilt werden, das Tag cost_center für Tabellen und Ansichten festzulegen, deren Eigentümer die Rolle ist (d. h. die Rolle hat die OWNERSHIP-Berechtigung für die Tabelle oder Ansicht):

    use role securityadmin;
    grant create tag on schema <db_name.schema_name> to role tag_admin;
    grant apply on tag cost_center to role finance_role;
    
    Copy