CREATE AGGREGATION POLICY

Crée une nouvelle politique d’agrégation dans le schéma actuel/spécifié ou remplace une politique d’agrégation existante.

Après avoir créé une politique d’agrégation, affectez-la à une table à l’aide de la commande ALTER TABLE ou à une vue à l’aide de la commande ALTER VIEW.

Voir aussi :

Référence DDL d’une politique d’agrégation

Syntaxe

CREATE [ OR REPLACE ] AGGREGATION POLICY [ IF NOT EXISTS ] <name>
  AS () RETURNS AGGREGATION_CONSTRAINT -> <body>
  [ COMMENT = '<string_literal>' ]
Copy

Paramètres

name

Identificateur de la politique d’agrégation ; doit être unique pour votre schéma.

La valeur de l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (p. ex. "My object"). Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Pour plus de détails, voir Exigences relatives à l’identificateur.

body

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> )
Copy

integer_expression correspond à la taille de groupe minimale de la politique.

Il existe une différence entre transmettre un 1 et transmettre un 0 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.

COMMENT = 'string_literal'

Ajoute un commentaire ou remplace un commentaire existant pour la politique d’agrégation.

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

CREATE AGGREGATION POLICY

Schéma

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 que vous avez besoin de voir le corps actuel de la politique, exécutez la commande DESCRIBE AGGREGATION POLICY ou la fonction GET_DDL.

  • 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

Créer une politique d’agrégation qui exige que les requêtes renvoient des groupes de cinq lignes ou plus :

CREATE AGGREGATION POLICY my_policy AS ()
  RETURNS AGGREGATION_CONSTRAINT ->
  AGGREGATION_CONSTRAINT(MIN_GROUP_SIZE => 5);
Copy

Créer une politique d’agrégation qui permet à un utilisateur ayant le rôle admin de renvoyer des résultats non agrégés tout en exigeant que toutes les autres requêtes renvoient des groupes de cinq lignes ou plus :

CREATE AGGREGATION POLICY my_policy AS ()
  RETURNS AGGREGATION_CONSTRAINT ->
    CASE
      WHEN CURRENT_ROLE() = 'ADMIN'
        THEN NO_AGGREGATION_CONSTRAINT()
      ELSE AGGREGATION_CONSTRAINT(MIN_GROUP_SIZE => 5)
    END;
Copy