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>' , ... ] ) ]
Copy

Erforderliche Parameter

name

Zeichenfolge, 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 -> body

Eine 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 body geschrieben wurde.

body

SQL-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.

  • COOL erfordert, dass Sie eine Archivierungsfrist (ARCHIVE_FOR_DAYS) von 90 Tagen oder länger festlegen, um die Archivierung zu ermöglichen.

  • COLD erfordert, 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_days

Gibt 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: 902147483647

  • ARCHIVE_TIER = COLD: 1802147483647

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

CREATE STORAGE LIFECYCLE POLICY

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 REPLACE und IF NOT EXISTS nicht 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;
Copy