Überblick über die Ereignisse

Wenn Ihre Snowflake-Objekte - einschließlich Prozeduren und UDFs - Telemetriedaten aussenden, sammelt Snowflake diese Daten in einer Ereignistabelle, die für Abfragen zur Verfügung steht. Snowflake enthält standardmäßig eine Ereignistabelle, aber Sie können auch eine neue Tabelle erstellen.

Um Telemetriedaten zu sammeln, müssen Sie eine aktive Ereignistabelle haben und Telemetrieebenen festlegen, um die Datenerfassung zu ermöglichen. Wenn Sie nicht bereits eine aktive Ereignistabelle haben, macht Snowflake die Standard-Ereignistabelle zur aktiven Ereignistabelle.

Beim Sammeln von Telemetriedaten entstehen Ihnen Kosten. Um diese Kosten zu verstehen - oder um diese Kosten zu reduzieren oder zu vermeiden - siehe Kosten der Telemetriedatenerfassung.

Was ist ein Ereignistabelle?

Eine Ereignistabelle ist eine spezielle Art von Datenbanktabelle mit einem vordefinierten Satz von Spalten. Die Struktur der Tabelle unterstützt das Datenmodell für OpenTelemetry, ein Rahmenwerk für den Umgang mit Telemetriedaten. Wenn eine Ereignistabelle aktiv ist, sammelt Snowflake Telemetriedaten in der Tabelle - einschließlich Daten, die Snowflake selbst generiert, und Daten, die Sie ausgeben, indem Sie Ihren Handler-Code mit bestimmten APIs instrumentieren. Sie können die gesammelten Daten einsehen, indem Sie SQL-Abfragen ausführen.

Nach der Installation enthält Snowflake eine Standard-Ereignistabelle namens SNOWFLAKE.TELEMETRY.EVENTS. Diese Ereignistabelle ist aktiv und sammelt Daten, bis Sie sie deaktivieren. Sie können auch Ihre eigene erstellen.

Verwenden Sie die Standard-Ereignistabelle

Wenn Sie keine aktive Ereignistabelle festlegen, verwendet Snowflake als aktive Ereignistabelle eine Standard-Ereignistabelle namens SNOWFLAKE.TELEMETRY.EVENTS. Sie können auch Ihre eigenen Ereignistabellen für bestimmte Zwecke erstellen.

Standardmäßig enthält Snowflake auch eine vordefinierte Ansicht namens SNOWFLAKE.TELEMETRY.EVENTS_VIEW-Ansicht, mit der Sie die Daten der Ereignistabelle einer Reihe von Benutzern sicherer zur Verfügung stellen können. Sie können den Zugriff auf die Ansicht mit einer Zeile Zugriffsrichtlinie verwalten.

Bemerkung

Die Standard-Ereignistabelle unterstützt nur eine Teilmenge der DDL-Befehle, die für von Ihnen erstellte Ereignistabellen oder für reguläre Tabellen unterstützt werden. Weitere Informationen dazu finden Sie unter Verwenden von Ereignistabellen.

Rollen für den Zugriff auf die Standard-Ereignistabelle und EVENTS_VIEW

Snowflake enthält die folgenden vordefinierten Anwendungsrollen, die Sie verwenden können, um den Zugriff auf die Standard-Ereignistabelle und die Ansicht EVENTS_VIEW zu verwalten: Eine Person mit der Rolle ACCOUNTADMIN kann auf die Standard-Ereignistabelle und die Ansicht EVENTS_VIEW zugreifen und kann die hier beschriebenen Rollen anderen Rollen für den Zugriff darauf gewähren.

Sie müssen diese Rollen anderen Rollen zuweisen, nicht einem Benutzer. Sie können zum Beispiel die Rolle EVENTS_ADMIN einer anderen Administratorrolle zuweisen, die Sie für eine umfassendere administrative Nutzung erstellt haben.

GRANT APPLICATION ROLE SNOWFLAKE.EVENTS_ADMIN TO ROLE my_admin_role

GRANT APPLICATION ROLE SNOWFLAKE.EVENTS_VIEWER TO ROLE my_analysis_role
Copy
EVENTS_VIEWER:

Rolle mit Berechtigung zur Ausführung einer SELECT Anweisung auf der Ansicht EVENTS_VIEW.

EVENTS_ADMIN:

Rolle mit den folgenden Berechtigungen:

Verwalten Sie den Zugriff auf die Ansicht EVENTS_VIEW

Sie können den Zugriff auf Daten in der Ansicht EVENTS_VIEW mit Zeilenzugriffsrichtlinien verwalten. Snowflake bietet gespeicherte Prozeduren, mit denen Sie eine Richtlinie für den Zeilenzugriff zur Ansicht EVENT_VIEW hinzufügen und entfernen können.

Bemerkung

Sie müssen die EVENTS_ADMIN-Rolle haben, um diese Prozeduren auszuführen.

Die Verwendung von Zeilenzugriffsrichtlinien auf Zeilen in der EVENT_VIEW-Ansicht ist ein Feature der Enterprise Edition.

Verwenden Sie eine benutzerdefinierte Ereignistabelle

Um eine neue Ereignistabelle zu erstellen, führen Sie den CREATE EVENT TABLE-Befehl aus und geben einen Namen für die Ereignistabelle an.

Bemerkung

Wenn Sie keine Ereignistabelle erstellen, verwendet Snowflake die standardmäßige Ereignistabelle, um Telemetriedaten zu sammeln.

  1. Erstellen Sie eine Ereignistabelle, indem Sie den Befehl CREATE EVENT TABLE ausführen und dabei einen Namen für die Ereignistabelle angeben.

  2. Verknüpfen Sie die Ereignistabelle mit einem Objekt, indem Sie den Befehl ALTER <Objekt> für das Objekt ausführen und den Parameter EVENT_TABLE auf den Namen Ihrer Ereignistabelle setzen.

    Damit wird der Umfang der von der Ereignistabelle erfassten Daten auf das Objekt festgelegt, mit dem Sie die Tabelle verknüpfen.

Ereignistabelle erstellen

Um eine Ereignistabelle zu erstellen, führen Sie den Befehl CREATE EVENT TABLE aus.

Wenn Sie eine Ereignistabelle erstellen, geben Sie die Spalten der Tabelle nicht an. Eine Ereignistabelle hat bereits einen Satz vordefinierter Spalten, die unter Spalten von Ereignistabellen beschrieben sind.

  1. Stellen Sie sicher, dass Sie eine Rolle verwenden, die über die Berechtigung CREATE EVENT TABLE verfügt.

  2. Führen Sie den Befehl CREATE EVENT TABLE aus, um die Ereignistabelle zu erstellen, und geben Sie dabei einen Namen für die Ereignistabelle an.

    Sie verwenden den Namen der Ereignistabelle, um die Tabelle mit einem Objekt zu verknüpfen, z. B. mit einer Datenbank.

    Um beispielsweise eine Ereignistabelle mit dem Namen my_events zu erstellen, führen Sie die folgende Anweisung aus:

    CREATE EVENT TABLE my_database.my_schema.my_events;
    
    Copy

Bemerkung

Die Replikation von Ereignistabellen wird derzeit nicht unterstützt. Alle Ereignistabellen, die in primären Datenbanken enthalten sind, werden bei der Replikation übersprungen.

Verknüpfen Sie eine Ereignistabelle mit einem Objekt

Um das Objekt anzugeben, für das eine Ereignistabelle aktiv ist, führen Sie den Befehl ALTER <Objekt> für das Objekt aus.

Die Verknüpfung einer Ereignistabelle mit einer Datenbank ist ein Feature von Enterprise Edition.

  1. Stellen Sie sicher, dass Sie eine Rolle verwenden, die über die erforderlichen Berechtigungen verfügt.

  2. Führen Sie den Befehl ALTER <Objekt> für das Objekt aus und setzen Sie den Parameter EVENT_TABLE auf den Namen Ihrer Ereignistabelle.

    Wenn Sie diesen Parameter setzen, wird das Objekt als der Bereich festgelegt, in dem Ereignisse in der angegebenen Ereignistabelle gesammelt werden.

    Um zum Beispiel die Ereignistabelle mit einer Datenbank zu verknüpfen, verwenden Sie ALTER DATABASE, wie im folgenden Beispiel:

    ALTER DATABASE my_database SET EVENT_TABLE = my_database.my_schema.my_events;
    
    Copy

    In diesem Beispiel erfasst Snowflake - je nachdem, wie Sie Telemetrieebenen angegeben haben - Telemetriedaten für Prozeduren und UDFs in my_database in der Ereignistabelle telemetry_database.telemetry_schema.my_events.

Unterstützte Objekte

In der folgenden Tabelle sind die Objekte aufgeführt, mit denen Sie ein Ereignis verknüpfen können, zusammen mit den Berechtigungen, die für die Verknüpfung erforderlich sind.

Objekt

Berechtigungen erforderlich

Bereich der Objekte, deren Daten gesammelt werden

Konto

Prozeduren und UDFs im Konto. Verwenden Sie diese Option für den weitesten Bereich.

Datenbank

Prozeduren und UDFs in der angegebenen Datenbank.

Eine Rangfolge bestimmt, welche Ereignistabelle zum Sammeln von Telemetriedaten für ein Objekt verwendet wird. In dieser Rangfolge hat eine Ereignistabelle, die mit einer Datenbank verbunden ist, Vorrang vor einer Ereignistabelle, die mit einem Konto verbunden ist.

  • Konto » Datenbank

Mit anderen Worten: Wenn Sie Ereignistabellen sowohl mit Ihrem Konto als auch mit einer Datenbank my_database verknüpft haben, werden Telemetriedaten, die von Objekten in my_database erzeugt werden, in der Ereignistabelle der Datenbank gesammelt. Für andere Datenbanken des Kontos, die nicht über eine zugehörige Ereignistabelle verfügen, werden die Telemetriedaten in der dem Konto zugeordneten Ereignistabelle gesammelt.

Legen Sie die Ereignistabelle für das Konto fest

Bemerkung

Um diesen Befehl auszuführen, müssen Sie die Rolle ACCOUNTADMIN verwenden.

Außerdem müssen Sie über die beiden folgenden Berechtigungen verfügen:

Weitere Informationen zu den für die Ausführung von ALTER ACCOUNT erforderlichen Berechtigungen finden Sie in der Dokumentation zum ALTER ACCOUNT-Befehl.

Um beispielsweise die Ereignistabelle mit dem Namen my_events im Schema my_schema der Datenbank my_database als aktive Ereignistabelle für Ihr Konto einzurichten, führen Sie die folgende Anweisung aus:

ALTER ACCOUNT SET EVENT_TABLE = my_database.my_schema.my_events;
Copy

Wie oben gezeigt, müssen Sie den vollqualifizierten Namen der Ereignistabelle angeben.

Um die Zuordnung einer Ereignistabelle zu einem Konto wieder aufzuheben, führen Sie den Befehl ALTER ACCOUNT aus, und deaktivieren Sie den Parameter EVENT_TABLE. Beispiel:

ALTER ACCOUNT UNSET EVENT_TABLE;
Copy

Sie können den EVENT_TABLE-Wert mit dem Befehl SHOW PARAMETERS bestätigen:

SHOW PARAMETERS LIKE 'event_table' IN ACCOUNT;
Copy

Legen Sie die Ereignistabelle für eine Datenbank fest

Um die Ereignistabelle namens my_events im Schema my_schema in der Datenbank my_database als aktive Ereignistabelle für die Datenbank my_database einzurichten, führen Sie die folgende Anweisung aus:

ALTER DATABASE my_database SET EVENT_TABLE = my_database.my_schema.my_events;
Copy

Um eine Ereignistabelle von einer Datenbank zu trennen, führen Sie den Befehl ALTER DATABASE aus und deaktivieren Sie den Parameter EVENT_TABLE. Beispiel:

ALTER DATABASE my_database UNSET EVENT_TABLE;
Copy

Sie können den EVENT_TABLE-Wert mit dem Befehl SHOW PARAMETERS bestätigen:

SHOW PARAMETERS LIKE 'event_table' IN DATABASE my_database;
Copy