Create and manage storage lifecycle policies

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.

When you create a storage lifecycle policy, you can choose an archive tier and optionally set an archival period in days. If you set an archival period, Snowflake moves table rows that match the policy expression into a lower-cost storage tier for the specified number of days before expiring the rows. Snowflake also enables change tracking on any tables that you attach the policy to.

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

For considerations when you work with tables that have archival storage policies, see 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.

To avoid this inconsistent behavior, convert timestamps to dates in your expression:

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

This method provides consistent policy execution regardless of the time of day.

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.

To recreate a storage lifecycle policy named my_slp, return the DDL, as shown in the following example:

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.

To create a table and attach the policy to a new table by using the specified columns, use CREATE TABLE, as shown in the following example.

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

To attach the policy to an existing table by using the specified columns, use ALTER TABLE, as shown in the following example:

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

Appliquer une politique en tant qu’opération unique

If you only need to expire or archive historical data once, as a one-time operation, we recommend the following procedure:

  1. Create, and then attach a storage lifecycle policy to your table.

  2. Wait for the policy to execute, and then archive or expire the data.

    Monitor the INFORMATION_SCHEMA.STORAGE_LIFECYCLE_POLICY_HISTORY table function to confirm the process is complete.

  3. To prevent recurring charges, remove the storage lifecycle policy from the table.

    Storage lifecycle policies incur cost per execution.

This method ensures that you only pay for a single execution instead of ongoing daily charges for a policy that has already processed all eligible data. For more information about cost, see Facturation des politiques de cycle de vie du stockage.

Supprimer une politique d’une table

To remove a storage lifecycle policy from a table, use ALTER TABLE, as shown in the following example:

ALTER TABLE my_table DROP STORAGE LIFECYCLE POLICY;
Copy
  • This command removes all future policy executions for this 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.