CREATE ALERT¶
Erstellt einen neuen Alert im aktuellen Schema.
Dieser Befehl unterstützt auch die folgende Variante:
CREATE ALERT … CLONE (erstellt einen Klon eines bestehenden Alerts)
- Siehe auch:
ALTER ALERT , DESCRIBE ALERT, DROP ALERT , SHOW ALERTS , EXECUTE ALERT
Wichtig
Neu erstellte oder geklonte Alerts werden bei der Erstellung ausgesetzt. Informationen zur Wiederaufnahme von ausgesetzten Alerts finden Sie unter Unterbrechen und Fortsetzen eines Alerts.
Syntax¶
CREATE [ OR REPLACE ] ALERT [ IF NOT EXISTS ] <name>
WAREHOUSE = <warehouse_name>
SCHEDULE = '{ <num> MINUTE | USING CRON <expr> <time_zone> }'
COMMENT = '<string_literal>'
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
IF( EXISTS(
<condition>
))
THEN
<action>
Syntaxvariante¶
CREATE ALERT … CLONE
Erstellt einen neuen Alert mit den gleichen Parameterwerten:
CREATE [ OR REPLACE ] ALERT <name> CLONE <source_alert> [ ... ]
Weitere Details dazu finden Sie unter CREATE <Objekt> … CLONE.
Bemerkung
Wenn Sie einen Alert klonen, indem Sie CREATE ALERT <name> CLONE verwenden oder ein Schema oder eine Datenbank klonen, die den Alert enthält, verfügt der neue Alert über alle Eigenschaften des ursprünglichen Alerts mit Ausnahme der Eigenschaften, die Sie explizit überschreiben.
Erforderliche Parameter¶
name
Zeichenfolge, die den Bezeichner (d. h. den Namen) des Alerts angibt. Der Wert muss für das Schema, in dem der Alert 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.
WAREHOUSE = warehouse_name
Gibt das virtuelle Warehouse an, das Computeressourcen für das Ausführen dieses Alerts bereitstellt.
SCHEDULE ...
Gibt den Zeitplan für die periodische Auswertung der Alert-Bedingung an.
Sie können den Zeitplan auf eine der folgenden Arten festlegen:
USING CRON expr time_zone
Gibt einen Cron-Ausdruck und eine Zeitzone für die regelmäßige Auswertung der Alert-Bedingung an. Unterstützt eine Teilmenge der Standardsyntax des Cron-Dienstprogramms.
Der Cron-Ausdruck besteht aus folgenden Feldern:
# __________ minute (0-59) # | ________ hour (0-23) # | | ______ day of month (1-31, or L) # | | | ____ month (1-12, JAN-DEC) # | | | | _ day of week (0-6, SUN-SAT, or L) # | | | | | # | | | | | * * * * *
Folgende Sonderzeichen werden unterstützt:
Sonderzeichen
Beschreibung
*
Platzhalter. Wenn Sie diesen in einem bestimmten Feld angeben, wird der Alert immer zu der Zeiteinheit dieses Feldes ausgeführt.
Beispielweise wird durch Angabe von
*
im Feld „Monat“ festgelegt, dass der Alert jeden Monat ausgeführt wird.L
Steht für „last“ (letzte). Bei Verwendung im Feld Wochentag können Sie Konstrukte wie „den letzten Freitag“ („5L“) eines bestimmten Monats angeben. Im Feld Tag des Monats wird der letzte Tag des Monats angegeben.
/n
Gibt die
n
-te Instanz einer bestimmten Zeiteinheit an. Jeder Zeitanteil wird unabhängig berechnet.Wenn beispielsweise im Monatsfeld
4/3
angegeben ist, ist die Auswertung der Bedingung für April, Juli und Oktober geplant (d. h. alle 3 Monate, beginnend mit dem 4. Monat des Jahres).In den Folgejahren wird derselbe Zeitplan beibehalten. Das heißt, die Bedingung ist nicht für eine Auswertung im Januar (3 Monate nach der Oktober-Ausführung) geplant.
Bemerkung
Der Cron-Ausdruck wird derzeit nur für die angegebene Zeitzone ausgewertet. Das Ändern des TIMEZONE-Parameterwerts für das Konto (oder das Festlegen des Werts auf Benutzer- oder Sitzungsebene) führt nicht zur Änderung der Zeitzone des Alerts.
Der Cron-Ausdruck definiert alle gültigen Zeitpunkte für die Auswertung der Alert-Bedingung. Snowflake versucht, die Bedingung auf Basis dieses Zeitplans auszuwerten. Jede gültige Ausführungszeit wird jedoch übersprungen, wenn eine vorherige Ausführung nicht vor dem Start der nächsten gültigen Ausführung abgeschlossen wurde.
Wenn sowohl ein bestimmter Tag des Monats als auch ein bestimmter Wochentag im Cron-Ausdruck enthalten sind, wird die Aktualisierung an Tagen geplant, die entweder dem Tag des Monats oder dem Wochentag entsprechen. Beispielsweise plant
SCHEDULE = 'USING CRON 0 0 10-20 * TUE,THU UTC'
eine Auswertung um 0:00 Uhr an jedem 10. bis 20. Tag des Monats und auch an jedem Dienstag oder Donnerstag außerhalb dieser Tage.
num MINUTE
Gibt ein Intervall (in Minuten) für die Wartezeit an, die zwischen Auswertungen der Alert-Bedingung eingefügt wird. Akzeptiert nur positive ganze Zahlen.
Unterstützt auch die Syntax
num M
.Zur Vermeidung von Mehrdeutigkeiten wird eine Basisintervallzeit festgelegt, wenn der Alert aktiviert wird (mit ALTER ALERT … RESUME).
Die Basisintervallzeit startet den Intervallzähler ab der aktuellen Uhrzeit. Wenn beispielsweise ein Alert mit dem Wert
10 MINUTE
erstellt wird und der Alert um 9:03 Uhr aktiviert wird, dann wird die Bedingung des Alerts um 9:13 Uhr, 9:23 Uhr usw. ausgewertet. Beachten Sie, dass wir uns nach besten Kräften bemühen, absolute Präzision sicherzustellen, aber nur garantieren, dass die Bedingungen nicht vor ihrem festgelegten Intervall ausgewertet werden (im aktuellen Beispiel könnte es sein, dass die Auswertung erst 9:14 Uhr ausgeführt wird, aber definitiv nicht 9:12 Uhr).Bemerkung
Der maximal unterstützte Wert ist
11520
(8 Tage). Bei Alerts mit einem größerennum MINUTE
-Wert werden die Bedingungen nie ausgewertet.
COMMENT = 'string_literal'
Gibt einen Kommentar zu dem Alert an.
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.
IF( EXISTS( condition ))
Die SQL-Anweisung, die die Bedingung für den Alert enthält. Sie können die folgenden Befehle verwenden:
Wenn die Anweisung eine oder mehrere Zeilen zurückgibt, wird die Aktion des Alerts ausgeführt.
THEN action
SQL-Anweisung, die ausgeführt werden soll, wenn die Bedingung eine oder mehrere Zeilen zurückgibt.
Um eine E-Mail-Benachrichtigung zu senden, können Sie die gespeicherte Prozedur SYSTEM$SEND_EMAIL() aufrufen.
Anforderungen an die Zugriffssteuerung¶
Eine Rolle, die zur Ausführung dieses SQL-Befehls verwendet wird, muss mindestens die folgenden Berechtigungen haben:
Berechtigung |
Objekt |
Anmerkungen |
---|---|---|
EXECUTE ALERT |
Konto |
|
CREATE ALERT |
Schema |
|
USAGE |
Warehouse |
Erforderlich für das Warehouse, das für den Alert verwendet wird. |
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.
Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.
Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.
Nutzungshinweise¶
Alerts werden mit den Berechtigungen ausgeführt, die dem Eigentümer des Alerts (d. h. der Rolle mit OWNERSHIP-Berechtigung für den Alert) erteilt wurden. Eine Liste der für zum Ausführen von Alerts erforderlichen minimalen Berechtigungen finden Sie unter Erteilen von Berechtigungen zum Erstellen von Alerts.
Um sicherzustellen, dass die Rolle des Eigentümers des Alerts über die erforderlichen Berechtigungen zum Ausführen der SQL-Anweisungen für die Bedingung und die Aktion verfügt, empfehlen wir, die Anweisungen mit der Rolle des Alert-Eigentümers auszuführen, bevor Sie sie ihn in CREATE ALERT angeben.
Wenn Sie einen Alert erstellen, wird dieser standardmäßig auf „Unterbrochen“ gesetzt.
Um den Alert zu aktivieren, müssen Sie ALTER ALERT … RESUME ausführen.
Wenn Sie CREATE ALERT oder ALTER ALERT ausführen, werden einige Validierungsprüfungen für die Anweisungen in der Bedingung und der Aktion nicht durchgeführt, einschließlich:
Auflösung der Bezeichner für Objekte
Auflösung der Datentypen von Ausdrücken
Überprüfung von Anzahl und Typen der Argumente eines Funktionsaufrufs
Die Befehle CREATE ALERT und ALTER ALERT schlagen nicht fehl, wenn die SQL-Anweisung für eine Bedingung oder Aktion einen ungültigen Bezeichner, einen falschen Datentyp, eine falsche Anzahl und Art von Funktionsargumenten usw. angibt. Stattdessen tritt der Fehler auf, wenn der Alert ausgeführt wird.
Um den Alert auf Fehler zu überprüfen, verwenden Sie die Tabellenfunktion ALERT_HISTORY.
Um diese Art von Fehlern zu vermeiden, sollten Sie, bevor Sie die Bedingungen und Aktionen für Alerts festlegen, die SQL-Ausdrücke und -Anweisungen für diese Bedingungen und Aktionen überprüfen.
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¶
Siehe Erstellen eines Alerts.