CREATE STORAGE LIFECYCLE POLICY

Crée une nouvelle politique de cycle de vie du stockage dans le schéma actuel ou spécifié, ou remplace une politique existante. La politique exécute une expression sur des arguments que vous spécifiez pour déterminer les lignes qui expirent dans la table à laquelle la politique est associée. Les arguments d’une politique font référence aux colonnes de vos tables.

Après avoir créé une politique, utilisez la commande ALTER TABLE pour ajouter la politique à une table.

Voir aussi :

ALTER STORAGE LIFECYCLE POLICY, DESCRIBE STORAGE LIFECYCLE POLICY, DROP STORAGE LIFECYCLE POLICY, SHOW STORAGE LIFECYCLE POLICIES

Syntaxe

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

Paramètres requis

name

Chaîne qui spécifie l’identificateur de la politique de cycle de vie du stockage. Il doit être unique pour le schéma.

De plus, l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (par exemple, "My object"). Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Pour plus d’informations, voir Exigences relatives à l’identificateur.

AS ( arg_name arg_type [ , ... ] )

La signature de la politique. Vous devez inclure au moins un argument dans la signature.

Une signature spécifie un ensemble d’attributs qui doivent être pris en compte pour déterminer s’il est possible de mettre un terme à la ligne. Les valeurs de l’attribut proviennent de l’objet de la base de données (table).

RETURNS BOOLEAN -> body

Une politique de cycle de vie du stockage doit être évaluée comme vraie ou fausse. Un utilisateur qui interroge une table protégée par une politique de cycle de vie du stockage voit les lignes dans la sortie en fonction de la façon dont le body est écrit.

body

Expression SQL que Snowflake utilise pour déterminer les lignes auxquelles mettre un terme.

Pour transformer les données, vous pouvez utiliser des fonctions intégrées telles que Fonctions d’expressions conditionnelles ou les fonctions définies par l’utilisateur (UDFs).

Note

Actuellement, seules les UDFs SQL et JavaScript sont prises en charge dans le corps d’une politique de cycle de vie du stockage.

Paramètres facultatifs

ARCHIVE_TIER = { COOL | COLD }

Spécifie le type de niveau de stockage à utiliser pour l’archivage des lignes. Après avoir défini ARCHIVE_TIER pour une politique, vous ne pouvez pas la modifier. Pour plus d’informations, voir Niveaux du stockage d’archives.

Si vous ne spécifiez pas ce paramètre, la politique est une politique d’expiration qui supprime les lignes sans les archiver.

  • COOL exige que vous définissiez une période d’archivage (ARCHIVE_FOR_DAYS) de 90 jours ou plus pour activer l’archivage.

  • COLD exige que vous définissiez une période d’archivage (ARCHIVE_FOR_DAYS) de 180 jours ou plus pour permettre l’archivage.

Par défaut : aucune valeur

ARCHIVE_FOR_DAYS = number_of_days

Spécifie le nombre de jours de conservation des lignes correspondant à l’expression de la politique dans le stockage d’archive. Si cette option est activée, Snowflake déplace les données dans un stockage d’archives en fonction de la valeur que vous sélectionnez pour ARCHIVE_TIER. Si non défini, Snowflake met un terme aux lignes de la table sans archiver les données.

Valeurs :

  • ARCHIVE_TIER = COOL: 90 - 2147483647

  • ARCHIVE_TIER = COLD: 180 - 2147483647

Par défaut : Non défini

COMMENT = 'string_literal'

Spécifie un commentaire pour la politique de cycle de vie du stockage.

Par défaut : aucune valeur

TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )

Spécifie le nom de la balise et la valeur de la chaîne de la balise.

La valeur de la balise est toujours une chaîne de caractères et le nombre maximum de caractères pour la valeur de la balise est 256.

Pour plus d’informations sur la spécification des balises dans une instruction, voir Tag quotas.

Exigences en matière de contrôle d’accès

Un rôle utilisé pour exécuter cette opération doit au minimum disposer des privilèges suivants :

Privilège

Objet

Remarques

CREATE STORAGE LIFECYCLE POLICY

Schéma

Aucun(e)

Le privilège USAGE relatif à la base de données et au schéma parents est exigé pour effectuer des opérations sur tout objet d’un schéma. Notez qu’un rôle doté d’un privilège quelconque sur un schéma permet à ce rôle de résoudre le schéma. Par exemple, un rôle doté du privilège CREATE sur un schéma peut créer des objets sur ce schéma sans également avoir le privilège USAGE attribué sur ce schéma.

Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.

Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.

Notes sur l’utilisation

  • Les clauses OR REPLACE et IF NOT EXISTS s’excluent mutuellement. Elles ne peuvent pas être utilisées dans la même instruction.

  • Les instructions CREATE OR REPLACE <objet> sont atomiques. En d’autres termes, lorsqu’un objet est remplacé, l’ancien objet est supprimé et le nouvel objet est créé dans une seule transaction.

  • Les instructions CREATE OR REPLACE <objet> sont atomiques. En d’autres termes, lorsqu’un objet est remplacé, l’ancien objet est supprimé et le nouvel objet est créé dans une seule transaction.

    • Si vous spécifiez OR REPLACE et que la politique est associée à des objets, la commande échoue.

    • Vous ne pouvez pas utiliser OR REPLACE et IF NOT EXISTS ensemble pour cette commande.

    • Si vous souhaitez remplacer une politique de cycle de vie du stockage existante et si vous avez besoin de voir la définition actuelle de cette politique, appelez la fonction GET_DDL ou exécutez la commande DESCRIBE STORAGE LIFECYCLE POLICY.

  • L’inclusion d’une ou plusieurs sous-requêtes dans le corps de la politique peut provoquer des erreurs. Dans la mesure du possible, limitez le nombre de sous-requêtes, limitez le nombre d’opérations JOIN et simplifiez les conditions des clauses WHERE.

  • Vous ne pouvez pas modifier la signature de la politique si celle-ci est associée à une table. Si vous devez modifier la signature, utilisez la commande DROP STORAGE LIFECYCLE POLICY et créez une nouvelle politique.

  • Concernant les métadonnées :

    Attention

    Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.

Exemples

La politique de cycle de vie suivante déplace les données des lignes qui correspondent aux comptes fermés et qui ont plus de 60 jours dans le stockage d’archives (niveau COOL).

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