CREATE STORAGE LIFECYCLE POLICY¶
Erstellt eine neue Lebenszyklusrichtlinie des Speichers im aktuellen oder angegebenen Schema oder ersetzt eine bestehende Richtlinie. Die Richtlinie führt einen Ausdruck auf Argumenten aus, die Sie angeben, um zu bestimmen, welche Zeilen in der Tabelle, an die die Richtlinie angehängt ist, ablaufen sollen. Die Argumente in einer Richtlinie beziehen sich auf die Spalten in Ihren Tabellen.
Nachdem Sie eine Richtlinie erstellt haben, verwenden Sie den Befehl ALTER TABLE, um die Richtlinie zu einer Tabelle hinzuzufügen.
- Siehe auch:
ALTER STORAGE LIFECYCLE POLICY, DESCRIBE STORAGE LIFECYCLE POLICY, DROP STORAGE LIFECYCLE POLICY, SHOW STORAGE LIFECYCLE POLICIES
Syntax¶
CREATE [ OR REPLACE ] STORAGE LIFECYCLE POLICY [ IF NOT EXISTS ] <name>
AS ( <arg_name> <arg_type> [ , ... ] )
RETURNS BOOLEAN -> <body>
[ ARCHIVE_TIER = { COOL | COLD } ]
[ ARCHIVE_FOR_DAYS = <number_of_days> ]
[ COMMENT = '<string_literal>' ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
Erforderliche Parameter¶
nameZeichenfolge, die den Bezeichner für die Speicherlebenszyklusrichtlinie angibt. Dieser muss für das Schema 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 Informationen dazu finden Sie unter Anforderungen an Bezeichner.
AS ( arg_name arg_type [ , ... ] )Die Signatur für die Richtlinie. Sie müssen mindestens ein Argument in die Signatur aufnehmen.
Eine Signatur gibt einen Satz von Attributen an, die berücksichtigt werden müssen, um festzustellen, ob die Zeile ablaufen kann. Die Attributwerte stammen aus dem Datenbankobjekt (Tabelle).
RETURNS BOOLEAN -> bodyEine Speicherlebenszyklusrichtlinie muss den Wert „true“ oder „false“ ergeben. Dem Benutzer, der eine durch eine Speicherlebenszyklusrichtlinie geschützte Tabelle abfragt, werden in der Ausgabe die Zeilen angezeigt, die auf dem basieren, wie
bodygeschrieben wurde.bodySQL-Ausdruck, mit dem Snowflake bestimmt, welche Zeilen ablaufen.
Um die Daten zu transformieren, können Sie integrierte Funktionen wie Funktionen für bedingte Ausdrücke oder benutzerdefinierte Funktionen (UDFs) verwenden.
Bemerkung
Derzeit werden nur SQL und JavaScript UDFs im Tetxtteil einer Speicherlebenszyklusrichtlinie unterstützt.
Optionale Parameter¶
ARCHIVE_TIER = { COOL | COLD }Gibt den Typ der Speicherebene an, der für die Archivierung von Zeilen verwendet werden soll. Nachdem Sie die ARCHIVE_TIER für eine Richtlinie eingestellt haben, können Sie diese nicht ändern. Weitere Informationen dazu finden Sie unter Archivspeicher-Ebenen.
Wenn Sie diesen Parameter nicht angeben, ist die Richtlinie eine Ablaufrichtlinie, die Zeilen löscht, ohne sie zu archivieren.
COOLerfordert, dass Sie eine Archivierungsfrist (ARCHIVE_FOR_DAYS) von 90 Tagen oder länger festlegen, um die Archivierung zu ermöglichen.COLDerfordert, dass Sie eine Archivierungsfrist (ARCHIVE_FOR_DAYS) von 180 Tagen oder länger festlegen, um die Archivierung zu ermöglichen.
Standard: Kein Wert
ARCHIVE_FOR_DAYS = number_of_daysGibt die Anzahl der Tage an, in denen Zeilen, die mit dem Richtlinienausdruck übereinstimmen, im Archivspeicher aufbewahrt werden sollen. Wenn dieser Wert gesetzt ist, verschiebt Snowflake die Daten gemäß dem Wert, den Sie für ARCHIVE_TIER auswählen, in den Archivspeicher. Wenn dieser Wert nicht gesetzt ist, lässt Snowflake die Zeilen in der Tabelle ablaufen, ohne die Daten zu archivieren.
Werte:
ARCHIVE_TIER = COOL:
90–2147483647ARCHIVE_TIER = COLD:
180–2147483647
Standard: Nicht gesetzt
COMMENT = 'string_literal'Gibt einen Kommentar für die Lebenszyklusrichtlinie des Speichers 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 quotas.
Anforderungen an die Zugriffssteuerung¶
Eine Rolle, die zur Ausführung dieser Operation verwendet wird, muss mindestens die folgenden Berechtigungen haben:
Berechtigung |
Objekt |
Anmerkungen |
|---|---|---|
Schema |
Keine |
USAGE-Berechtigung für die übergeordnete Datenbank und das Schema ist erforderlich, um Operationen an einem beliebigen Objekt in einem Schema durchzuführen. Beachten Sie, dass eine Rolle, die eine beliebige Berechtigung für ein Schema erhalten hat, es dieser Rolle erlaubt, das Schema aufzulösen. Zum Beispiel kann eine Rolle, der die CREATE-Berechtigung für ein Schema gewährt wurde, Objekte in diesem Schema erstellen, ohne auch USAGE für dieses Schema gewährt bekommen zu haben.
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¶
Die Klauseln OR REPLACE und IF NOT EXISTS schließen sich gegenseitig aus. Sie können nicht beide in der gleichen Anweisung verwendet werden.
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.
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.
Wenn Sie OR REPLACE angeben und die Richtlinie an beliebige Objekte angehängt ist, schlägt der Befehl fehl.
Sie können
OR REPLACEundIF NOT EXISTSnicht zusammen für diesen Befehl verwenden.Wenn Sie eine bestehende Speicherlebenszyklusrichtlinie ersetzen möchten und dazu die aktuelle Definition der Richtlinie anzeigen müssen, können Sie die Funktion GET_DDL aufrufen oder den Befehl DESCRIBE STORAGE LIFECYCLE POLICY ausführen.
Das Einfügen einer oder mehrerer Unterabfragen in den Richtlinientext kann zu Fehlern führen. Wenn möglich, begrenzen Sie die Anzahl der Unterabfragen, begrenzen Sie die Anzahl der JOIN-Operationen, und vereinfachen Sie die Bedingungen der WHERE-Klausel.
Sie können die Richtliniensignatur nicht ändern, wenn die Richtlinie an eine Tabelle angehängt ist. Wenn Sie die Signatur ändern müssen, verwenden Sie den DROP STORAGE LIFECYCLE POLICY-Befehl, und erstellen Sie eine neue Richtlinie.
Hinweis zu Metadaten:
Achtung
Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „User“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.
Beispiele¶
Die folgende Lebenszyklusrichtlinie verschiebt Daten aus Zeilen, die geschlossenen Konten entsprechen und älter als 60 Tage sind, in den Archivspeicher (COOL-Ebene).
CREATE STORAGE LIFECYCLE POLICY example_policy
AS (event_ts TIMESTAMP, account_id NUMBER)
RETURNS BOOLEAN ->
event_ts < DATEADD(DAY, -60, CURRENT_TIMESTAMP())
AND EXISTS (
SELECT 1 FROM closed_accounts
WHERE id = account_id
)
ARCHIVE_TIER = COOL
ARCHIVE_FOR_DAYS = 180;