CREATE EVENT TABLE¶
Erstellt eine Ereignistabelle, in der Ereignisse, einschließlich protokollierter Meldungen von Funktionen und Prozeduren, erfasst werden.
Syntax¶
CREATE [ OR REPLACE ] EVENT TABLE [ IF NOT EXISTS ] <name>
[ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ]
[ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
[ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
[ CHANGE_TRACKING = { TRUE | FALSE } ]
[ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
[ COPY GRANTS ]
[ [ WITH ] COMMENT = '<string_literal>' ]
[ [ WITH ] ROW ACCESS POLICY <policy_name> ON ( <col_name> [ , <col_name> ... ] ) ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
Erforderliche Parameter¶
name
Gibt den Bezeichner (d. h. den Namen) der Ereignistabelle an. Dieser Name muss in dem Schema, in dem die Ereignistabelle erstellt wird, eindeutig sein.
Darüber hinaus muss der Bezeichner mit einem Buchstaben beginnen und darf keine Leer- oder Sonderzeichen enthalten, es sei denn, die gesamte Bezeichnerzeichenfolge wird in doppelte Anführungszeichen gesetzt (z. B.
"My object"
). Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.Weitere Details dazu finden Sie unter Anforderungen an Bezeichner.
Optionale Parameter¶
CLUSTER BY ( expr [ , expr , ... ] )
Gibt eine oder mehrere Spalten oder Spaltenausdrücke in der Tabelle als Gruppierungsschlüssel an. Weitere Details dazu finden Sie unter Gruppierungsschlüssel und geclusterte Tabellen.
Standard: Kein Wert (für die Tabelle ist kein Gruppierungsschlüssel definiert)
Wichtig
Gruppierungsschlüssel sind nicht für alle Tabellen vorgesehen oder empfehlenswert. Sie eignen sich vorrangig für sehr große Tabellen (im Multi-Terabyte-Bereich).
Bevor Sie Gruppierungsschlüssel für eine Tabelle angeben, lesen Sie erst Grundlegendes zu Tabellenstrukturen in Snowflake.
DATA_RETENTION_TIME_IN_DAYS = integer
Gibt die Aufbewahrungsfrist für die Tabelle an, sodass Time Travel-Aktionen (SELECT, CLONE, UNDROP) für historische Daten in der Tabelle durchgeführt werden können. Weitere Details dazu finden Sie unter Verstehen und Verwenden von Time Travel.
Eine ausführliche Beschreibung dieses Parameters auf Objektebene sowie weitere Informationen zu Objektparametern finden Sie unter Parameter.
Werte:
Standardausführung:
0
oder1
Enterprise Edition:
0
bis90
für permanente Tabellen
Standard:
Standardausführung:
1
Enterprise Edition (oder höher):
1
(es sei denn, es wurde ein anderer Standardwert auf Schema-, Datenbank- oder Kontoebene angegeben).
Bemerkung
Der Wert
0
deaktiviert Time Travel für die Tabelle.MAX_DATA_EXTENSION_TIME_IN_DAYS = integer
Objektparameter, der die maximale Anzahl von Tagen angibt, für die Snowflake die Datenaufbewahrungsfrist für die Tabelle verlängern kann, um zu verhindern, dass Streams auf der Tabelle veraltet sind.
Eine detaillierte Beschreibung dieses Parameters finden Sie unter MAX_DATA_EXTENSION_TIME_IN_DAYS.
CHANGE_TRACKING = TRUE | FALSE
Gibt an, ob die Änderungsverfolgung für die Tabelle aktiviert werden soll.
TRUE
aktiviert die Änderungsverfolgung der Tabelle. Diese Einstellung fügt der Quelltabelle ein Paar ausgeblendeter Spalten hinzu und beginnt mit dem Speichern von Metadaten zur Änderungsverfolgung in den Spalten. Diese Spalten verbrauchen nur wenig Speicherplatz.Die Änderungsverfolgungsmetadaten können mithilfe der CHANGES-Klausel für SELECT-Anweisungen oder durch Erstellen und Abfragen eines oder mehrerer Streams der Tabelle abgefragt werden.
FALSE
aktiviert die Änderungsverfolgung in der Tabelle nicht.
Standard: FALSE
DEFAULT_DDL_COLLATION = 'collation_specification'
Gibt eine Standard-Sortierungsspezifikation für die Spalten in der Tabelle an.
Weitere Informationen zu diesem Parameter finden Sie unter DEFAULT_DDL_COLLATION.
COPY GRANTS
Gibt an, dass die Zugriffsrechte aus der Originaltabelle beibehalten werden, wenn eine neue Tabelle CREATE OR REPLACE EVENT TABLE erstellt wird.
Der Parameter kopiert alle Berechtigungen, mit Ausnahme von OWNERSHIP, aus der bestehenden Tabelle in die neue Tabelle. Die neue Tabelle übernimmt keine zukünftigen Berechtigungen, die für den Objekttyp im Schema definiert werden. Standardmäßig ist die Rolle, die die Anweisung CREATE EVENT TABLE ausführt, Eigentümer der neuen Tabelle.
Wenn der Parameter nicht in der CREATE EVENT TABLE-Anweisung enthalten ist, übernimmt die neue Tabelle keine expliziten Zugriffsrechte für die ursprüngliche Tabelle, übernimmt aber alle zukünftigen Berechtigungszuweisungen, die für den Objekttyp in dem Schema definiert werden.
Hinweis:
Mit Datenfreigabe:
Wenn die vorhandene Tabelle für ein anderes Konto freigegeben wurde, wird auch die Ersatztabelle freigegeben.
Wenn die vorhandene Tabelle mit Ihrem Konto als Datenkonsument geteilt wurde und der Zugriff auf andere Rollen im Konto weiter gewährt wurde (unter Verwendung von
GRANT IMPORTED PRIVILEGES
auf der übergeordneten Datenbank), wird auch der Zugriff auf die Ersatztabelle gewährt.
Die SHOW GRANTS-Ausgabe für die Ersetzungstabelle listet den Berechtigungsempfänger für die kopierten Berechtigungen als Rolle auf, die die CREATE EVENT TABLE-Anweisung ausgeführt hat, mit dem aktuellen Zeitstempel für den Zeitpunkt, an dem die Anweisung ausgeführt wurde.
Die Operation zum Kopieren von Berechtigungen erfolgt atomar im Befehl CREATE EVENT TABLE (d. h. innerhalb derselben Transaktion).
ROW ACCESS POLICY policy_name ON ( col_name [ , col_name ... ] )
Gibt die Zeilenzugriffsrichtlinie an, die für eine Tabelle festgelegt werden soll.
COMMENT = 'string_literal'
Gibt einen Kommentar für die Tabelle an.
Standard: Kein Wert
TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )
Gibt den Namen des Tags und den Wert der Tag-Zeichenfolge an.
Der Tag-Wert ist immer eine Zeichenfolge, die maximale 256 Zeichen lang sein kann.
Weitere Informationen zur Angabe von Tags in einer Anweisung finden Sie unter Tag-Kontingente für Objekte und Spalten.
Nutzungshinweise¶
Ein Schema darf keine Ereignistabellen, Tabellen und/oder Ansichten mit gleichen Namen enthalten. Beim Erstellen einer Ereignistabelle ist Folgendes zu beachten:
Wenn im Schema bereits eine Ansicht mit dem gleichen Namen vorhanden ist, wird ein Fehler zurückgegeben und die Ereignistabelle nicht erstellt.
Wenn im Schema bereits eine Ereignistabelle mit dem gleichen Namen vorhanden ist, wird ein Fehler zurückgegeben, und die Tabelle wird nicht erstellt, es sei denn, das optionale Schlüsselwort
OR REPLACE
ist im Befehl enthalten.
Wichtig
Die Verwendung von
OR REPLACE
ist gleichbedeutend mit der Verwendung von DROP TABLE auf der vorhandenen Ereignistabelle und der anschließenden Erstellung einer neuen Ereignistabelle mit dem gleichen Namen. Die gelöschte Tabelle wird jedoch nicht permanent aus dem System entfernt. Stattdessen wird sie in Time Travel aufbewahrt. Dies muss beachtet werden, da gelöschte Tabellen in Time Travel wiederhergestellt werden können und auch Datenspeicher Ihres Kontos verbrauchen. Weitere Informationen dazu finden Sie unter Speicherkosten für Time Travel und Fail-safe.CREATE OR REPLACE <Objekt>-Anweisungen sind atomar. Das heißt, wenn ein Objekt ersetzt wird, erfolgt das Löschen des alten Objekts und das Erstellen des neuen Objekts in einer einzigen Transaktion.
Das bedeutet, dass alle Abfragen, die parallel zur Operation CREATE OR REPLACE EVENT TABLE ausgeführt werden, entweder die alte oder die neue Version der Tabelle verwenden.
Wenn Sie eine Tabelle neu erstellen (mit dem optionalen Schlüsselwort
OR REPLACE
), wird deren Verlauf gelöscht, wodurch alle Streams auf der Tabelle veraltet sind. Ein veralteter Stream ist unlesbar.Metadaten:
Achtung
Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „Benutzer“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.
CREATE OR REPLACE <Objekt>-Anweisungen sind atomar. Das heißt, wenn ein Objekt ersetzt wird, erfolgt das Löschen des alten Objekts und das Erstellen des neuen Objekts in einer einzigen Transaktion.
Beispiele¶
Erstellen einer Ereignistabelle mit dem Namen my_events
:
CREATE EVENT TABLE my_events;