ALTER STORAGE LIFECYCLE POLICY¶
Modifie les propriétés d’une politique de cycle de vie du stockage existante.
Attention
Les modifications apportées à une politique de cycle de vie du stockage peuvent avoir un impact significatif sur toutes les tables associées. Utilisez la vue QUERY_HISTORY dans le schéma ACCOUNT_USAGE pour vérifier régulièrement les modifications apportées aux politiques. Pour plus d’informations, voir Vue QUERY_HISTORY.
- Voir aussi :
CREATE STORAGE LIFECYCLE POLICY, DESCRIBE STORAGE LIFECYCLE POLICY, DROP STORAGE LIFECYCLE POLICY, SHOW STORAGE LIFECYCLE POLICIES
Syntaxe¶
ALTER STORAGE LIFECYCLE POLICY [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER STORAGE LIFECYCLE POLICY [ IF EXISTS ] <name> SET
BODY -> <expression_on_arg_name>
| ARCHIVE_TIER = { COOL | COLD }
| ARCHIVE_FOR_DAYS = <number_of_days>
| COMMENT = '<string_literal>'
| TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER STORAGE LIFECYCLE POLICY [ IF EXISTS ] <name> UNSET
ARCHIVE_FOR_DAYS
| COMMENT
| TAG <tag_name> [ , <tag_name> ... ]
Paramètres¶
nameSpécifie l’identificateur de la politique à modifier.
Si l’identificateur contient des espaces ou des caractères spéciaux, toute la chaîne doit être délimitée par des guillemets doubles. Les identificateurs entre guillemets doubles sont également sensibles à la casse.
Pour plus d’informations, voir Exigences relatives à l’identificateur.
RENAME TO new_nameSpécifie le nouvel identificateur de la politique ; il doit être unique pour votre schéma.
Pour plus d’informations, voir Exigences relatives à l’identificateur.
Vous pouvez déplacer l’objet vers une autre base de données et/ou un autre schéma tout en renommant éventuellement l’objet. Pour ce faire, spécifiez une valeur
new_namequalifiée qui inclut le nouveau nom de la base de données et/ou du schéma sous la formedb_name.schema_name.object_nameouschema_name.object_name, respectivement.Note
La base de données et/ou le schéma de destination doivent déjà exister. En outre, un objet portant le même nom ne peut pas déjà exister dans le nouvel emplacement ; sinon, l’instruction renvoie une erreur.
Le déplacement d’un objet vers un schéma d’accès géré est interdit sauf si le propriétaire de l’objet (c’est-à-dire le rôle qui a le privilège OWNERSHIP sur l’objet) est également propriétaire du schéma cible.
Lorsqu’un objet est renommé, les autres objets qui le référencent doivent être mis à jour avec le nouveau nom.
SET ...Spécifie une ou plusieurs propriétés à définir pour la politique :
BODY -> expression_on_arg_nameExpression SQL qui détermine les lignes à expirer.
Pour transformer les données, vous pouvez utiliser des fonctions intégrées telles que des Fonctions d’expressions conditionnelles ou des 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.
ARCHIVE_TIER = { COOL | COLD }Spécifie un niveau de stockage pour convertir une politique d’expiration où ARCHIVE_FOR_DAYS n’est pas défini en une politique d’archivage.
COOLexige que vous définissiez une période d’archivage (ARCHIVE_FOR_DAYS) de 90 jours ou plus.COLDexige que vous définissiez une période d’archivage (ARCHIVE_FOR_DAYS) de 180 jours ou plus.
ARCHIVE_FOR_DAYS = number_of_daysSpécifie le nombre de jours de conservation des lignes correspondant à l’expression de la politique dans le stockage d’archives. Si ce paramètre est défini, Snowflake déplace les données dans un stockage d’archives en fonction de la valeur que vous sélectionnez pour ARCHIVE_TIER. S’il n’est pas défini, Snowflake expire les lignes de la table sans archiver les données.
Valeurs :
ARCHIVE_TIER = COOL:
90-2147483647ARCHIVE_TIER = COLD:
180-2147483647
Par défaut : Non défini
COMMENT = 'string_literal'Ajoute un commentaire ou écrase le commentaire existant pour la politique.
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.
UNSET ...Spécifie les propriétés à désactiver pour la politique, qui réinitialise les propriétés à leurs valeurs par défaut :
ARCHIVE_FOR_DAYSCOMMENTTAG tag_name [ , tag_name ... ]
Pour désactiver plusieurs propriétés ou paramètres via une seule instruction ALTER, séparez chaque propriété ou paramètre par une virgule.
Lorsque vous désactivez une propriété ou un paramètre, spécifiez uniquement le nom de propriété ou de paramètre (sauf si la syntaxe ci-dessus indique que vous devez spécifier la valeur). La spécification de la valeur renvoie une erreur.
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 |
|---|---|---|
OWNERSHIP |
Politique de cycle de vie du stockage |
OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
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¶
Si vous souhaitez mettre à jour une politique 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.
Vous ne pouvez pas modifier la signature de la politique avec cette commande. Pour modifier la signature, utilisez la commande DROP STORAGE LIFECYCLE POLICY, puis créez une nouvelle politique.
Après avoir défini le ARCHIVE_TIER d’une politique, vous ne pouvez plus le modifier. Par exemple, vous ne pouvez pas utiliser cette commande pour modifier le ARCHIVE_TIER d’une politique de COOL à COLD.
Si vous désactivez ARCHIVE_FOR_DAYS pour une politique, le niveau de stockage ne change pas. Si vous réactivez ultérieurement le stockage d’archives pour la politique, vous ne pourrez pas modifier le niveau de stockage.
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.
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¶
L’exemple suivant met à jour la politique de cycle de vie du stockage pour permettre l’expiration des comptes fermés après 30 jours.
ALTER STORAGE LIFECYCLE POLICY expire_storage_for_closed_accounts
SET BODY ->
event_ts < DATEADD(DAY, -30, CURRENT_TIMESTAMP())
AND EXISTS (
SELECT 1 FROM closed_accounts
WHERE id = account_id
);