ALTER AGGREGATION POLICY¶
Remplace les règles ou commentaires existants d’une politique d’agrégation. Permet également de renommer une politique d’agrégation.
- Voir aussi :
Syntaxe¶
ALTER AGGREGATION POLICY [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER AGGREGATION POLICY [ IF EXISTS ] <name> SET BODY -> <expression>
ALTER AGGREGATION POLICY <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER AGGREGATION POLICY <name> UNSET TAG <tag_name> [ , <tag_name> ... ]
ALTER AGGREGATION POLICY [ IF EXISTS ] <name> SET COMMENT = '<string_literal>'
ALTER AGGREGATION POLICY [ IF EXISTS ] <name> UNSET COMMENT
Paramètres¶
name
Spécifie l’identificateur de la politique d’agrégation à 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, consultez Exigences relatives à l’identificateur.
RENAME TO new_name
Spécifie le nouvel identificateur de la politique d’agrégation ; doit être unique pour votre schéma. Le nouvel identificateur ne peut pas être utilisé si l’identificateur est déjà en place pour une politique d’agrégation différente.
Pour plus de détails, 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_name
qualifiée qui inclut le nouveau nom de la base de données et/ou du schéma sous la formedb_name.schema_name.object_name
ouschema_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.
SET ...
Spécifie une (ou plusieurs) propriété(s) à définir pour la politique d’agrégation :
BODY -> expression
Expression SQL qui détermine les restrictions d’une politique d’agrégation.
Pour définir les contraintes de la politique d’agrégation, utilisez l’expression SQL pour appeler une ou plusieurs des fonctions internes suivantes :
- NO_AGGREGATION_CONSTRAINT
Lorsque le corps de la politique renvoie une valeur de cette fonction, les requêtes peuvent renvoyer sans restriction les données d’une table ou d’une vue soumise à des contraintes d’agrégation. Par exemple, le corps de la politique peut appeler cette fonction lorsqu’un administrateur a besoin d’obtenir des résultats non agrégés provenant de la table ou de la vue soumise à des contraintes d’agrégation.
Appelez NO_AGGREGATION_CONSTRAINT sans argument.
- AGGREGATION_CONSTRAINT
Lorsque le corps de la politique renvoie une valeur de cette fonction, les requêtes doivent agréger les données afin de renvoyer des résultats. Utilisez l’argument MIN_GROUP_SIZE pour spécifier le nombre d’enregistrements à inclure dans chaque groupe d’agrégation.
La syntaxe de la fonction AGGREGATION_CONSTRAINT est la suivante :
AGGREGATION_CONSTRAINT ( MIN_GROUP_SIZE => <integer_expression> )
Où
integer_expression
correspond à la taille de groupe minimale de la politique.Il existe une différence entre transmettre un
1
et transmettre un0
comme argument à la fonction. Dans les deux cas, les résultats doivent être agrégés.La transmission d’un
1
exige également que chaque groupe d’agrégation contienne au moins un enregistrement de la table soumise à des contraintes d’agrégation. Ainsi, pour les jointures externes, au moins un enregistrement de la table soumise à des contraintes d’agrégation doit correspondre à un enregistrement d’une table non protégée.La transmission d’un
0
permet à la requête de renvoyer des groupes entièrement constitués d’enregistrements provenant d’une autre table. Ainsi, pour les jointures externes entre une table soumise à des contraintes d’agrégation et une table non protégée, un groupe peut être constitué d’enregistrements de la table non protégée qui ne correspondent à aucun enregistrement de la table soumise à des contraintes d’agrégation.
Le corps d’une politique ne peut pas faire référence à des fonctions, des tables ou des vues définies par l’utilisateur.
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 Quotas de balises pour les objets et les colonnes.
COMMENT = 'string_literal'
Ajoute un commentaire ou écrase le commentaire existant pour la politique d’agrégation.
Par défaut : aucune valeur
UNSET ...
Spécifie une ou plusieurs propriétés et/ou paramètres à désactiver, en les réinitialisant à leurs valeurs par défaut, pour la politique d’agrégation :
TAG tag_name [ , tag_name ... ]
COMMENT
Lors de la réinitialisation d’une propriété ou d’un paramètre, spécifiez seulement le nom ; si vous spécifiez une valeur pour la propriété, vous obtiendrez une erreur.
Exigences en matière de contrôle d’accès¶
Un rôle utilisé pour exécuter cette commande SQL doit avoir les privilèges suivants définis au minimum ainsi :
Privilège |
Objet |
Remarques |
---|---|---|
OWNERSHIP |
Politique d’agrégation |
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). |
Notez que l’exploitation d’un objet dans un schéma requiert également le privilège USAGE sur la base de données et le schéma parents.
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.
Pour plus de détails sur la DDL de politique d’agrégation et les privilèges, voir Privilèges et commandes.
Notes sur l’utilisation¶
Si vous souhaitez mettre à jour une politique d’agrégation existante et si vous avez besoin de voir le corps actuel de cette politique, exécutez la commande DESCRIBE AGGREGATION POLICY. Vous pouvez également utiliser la fonction GET_DDL pour obtenir la définition complète de la politique d’agrégation, y compris son corps.
Le déplacement d’une politique d’agrégation vers un schéma d’accès géré (utilisant la syntaxe ALTER AGGREGATION POLICY … RENAME TO) est interdit sauf si le propriétaire de la politique d’agrégation (c’est-à-dire le rôle qui a le privilège OWNERSHIP sur la politique d’agrégation) est également propriétaire du schéma cible.
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¶
Modifier l’expression SQL de la politique d’agrégation pour exiger une taille de groupe minimale de deux lignes en toutes circonstances :
ALTER AGGREGATION POLICY my_policy SET BODY -> AGGREGATION_CONSTRAINT(MIN_GROUP_SIZE=>2);
Renommer une politique d’agrégation :
ALTER AGGREGATION POLICY my_policy RENAME TO agg_policy_table1;