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;
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())
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()))
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');
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);
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);
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:
Create, and then attach a storage lifecycle policy to your table.
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.
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;
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.