Création et gestion de politiques de cycle de vie du stockage

Note

Les politiques de cycle de vie du stockage ne sont actuellement pas disponibles dans les régions gouvernementales.

Les sections suivantes expliquent comment créer, créer à nouveau et gérer des politiques de cycle de vie du stockage sur vos tables.

Créer une politique de cycle de vie du stockage

Pour créer une politique de cycle de vie du stockage, utilisez la commande CREATE STORAGE LIFECYCLE POLICY.

Lorsque vous créez une politique de cycle de vie du stockage, vous pouvez choisir un niveau d’archivage et éventuellement définir une période d’archivage (en jours). Si vous définissez une période d’archivage, Snowflake déplace les lignes de table qui correspondent à l’expression de la politique dans une zone de stockage à faibles coûts pour le nombre de jours spécifié avant l’expiration des lignes. Snowflake permet également de suivre les modifications sur toutes les tables auxquelles vous joignez la politique.

Par exemple :

CREATE STORAGE LIFECYCLE POLICY my_slp
  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 = 90;
Copy

Note

Pour les considérations relatives au travail avec des tables qui disposent de politiques de stockage d’archivage, voir Politiques du stockage d’archives.

Bonnes pratiques : Utiliser des conversions de date pour les expressions basées sur le temps

Pour améliorer les performances et garantir une exécution cohérente des politiques, convertissez les horodatages en dates dans vos expressions de politique lorsque vous comparez les valeurs temporelles.

Par exemple, examinons l’expression de politique suivante :

event_time < DATEADD(DAY, -400, CURRENT_TIMESTAMP())
Copy

Cette comparaison inclut la composante temporelle de l’horodatage, ce qui peut entraîner des incohérences de comportement. Lorsque les données sont insérées dans l’ordre chronologique par event_time, le temps d’exécution de la politique affecte le nombre de lignes supprimées de chaque fichier.

Pour éviter ce problème, convertissez les horodatages en dates dans votre expression :

TO_DATE(event_time) < TO_DATE(DATEADD(DAY, -400, CURRENT_TIMESTAMP()))
Copy

Cette approche permet d’assurer une exécution cohérente des politiques, quelle que soit l’heure de la journée.

Recréer une politique de cycle de vie du stockage

Cette fonctionnalité étend la commande GET_DDL pour recréer une politique de cycle de vie du stockage spécifiée. Vous pouvez procéder ainsi si vous souhaitez modifier le niveau d’archivage d’une politique.

Renvoyer le DDL pour recréer une politique de cycle de vie du stockage nommée my_slp.

SELECT GET_DDL('policy','my_slp');
Copy

Sortie :

---------------------------------------------------------------------+
                      GET_DDL('POLICY','SLP')                        |
---------------------------------------------------------------------+
create or replace storage lifecycle policy SLP 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_FOR_DAYS = 365                                             |
;                                                                    |
---------------------------------------------------------------------+

Gérer les politiques de cycle de vie du stockage sur les tables

Utilisez les options suivantes pour gérer les pièces jointes de la politique de cycle de vie du stockage.

Associer une politique à une table

Vous pouvez gérer plusieurs tables avec une seule politique de cycle de vie du stockage. Associez la politique lorsque vous créez ou modifiez la table.

Utilisez CREATE TABLE pour créer une table et associer la politique à une nouvelle table en utilisant les colonnes spécifiées.

Note

  • Vous devez disposer des privilèges nécessaires pour appliquer la politique. Pour obtenir des informations sur les privilèges requis, consultez Storage lifecycle policy privileges.

  • Une table ne peut avoir qu’une seule politique de cycle de vie de stockage associée.

  • Le nombre de colonnes doit correspondre au nombre d’arguments dans la signature de la fonction de politique, et les données des colonnes doivent être compatibles avec les types d’arguments.

  • Les politiques associées ne sont pas affectées si vous renommez les colonnes de la table. Snowflake associe des politiques à des tables en utilisant les IDs de colonne.

  • Afin d’évaluer et d’appliquer les expressions de politique de cycle de vie du stockage, Snowflake contourne en interne et temporairement toute politique de gouvernance sur une table.

CREATE TABLE my_table
  ...
  WITH STORAGE LIFECYCLE POLICY my_slp ON (col1);
Copy

Utilisez ALTER TABLE pour associer la politique à une table existante en utilisant les colonnes spécifiées.

ALTER TABLE my_table ADD STORAGE LIFECYCLE POLICY my_slp
  ON (col1);
Copy

Appliquer une politique en tant qu’opération unique

Si vous ne devez expirer ou archiver les données historiques qu’une seule fois (une seule opération), nous vous recommandons l’approche suivante :

  1. Créez et associez une politique de cycle de vie du stockage à votre table.

  2. Attendez l’exécution de la politique et archivez ou expirez les données. Surveillez la fonction INFORMATION_SCHEMA.STORAGE_LIFECYCLE_POLICY_HISTORY de la table pour confirmer que le processus est terminé.

  3. Pour éviter les frais récurrents, supprimez la politique de cycle de vie du stockage de la table. Les politiques de cycle de vie du stockage ont un coût par exécution.

Cette approche garantit que vous ne payez que pour une seule exécution au lieu de frais quotidiens continus pour une politique ayant déjà traité toutes les données éligibles. Pour plus d’informations sur les coûts, voir Facturation des politiques de cycle de vie du stockage.

Supprimer une politique d’une table

Utilisez ALTER TABLE pour supprimer une politique de cycle de vie du stockage d’une table.

ALTER TABLE my_table DROP STORAGE LIFECYCLE POLICY;
Copy
  • Cette opération supprime toutes les futures exécutions de politiques pour cette table.

  • Les exécutions de politiques en cours d’exécution peuvent se terminer avant qu’elles ne soient supprimées de la table.

  • Pour supprimer une politique de cycle de vie du stockage, vous devez disposer du privilège OWNERSHIP sur la table à laquelle la politique est associée.