Utilisation du modèle de requête SQL dans l’application Web

L’inclusion d’un modèle de requête SQL dans une salle blanche permet aux consommateurs d’écrire sous forme libre de SQL pour interroger les données dans la salle blanche. Lors de l’utilisation du modèle de requête SQL, les requêtes des consommateurs doivent répondre à certaines exigences pour renvoyer des résultats. Ces exigences sont déterminées par la manière dont le fournisseur de données protège ses tables avec des politiques de confidentialité des données.

Politiques de modèles

Les politiques suivantes sont appliquées par le modèle de requête SQL en vue de contrôler la manière dont le consommateur peut interroger les données :

Politique de projection

Les colonnes dotées d’une politique de projection ne peuvent pas être projetées (c’est-à-dire incluses dans une instruction SELECT). Toutefois, les consommateurs peuvent filtrer ou effectuer une jointure sur une colonne à l’aide d’une politique de projection.

Politique d’agrégation

Nécessite qu’une requête agrège des données afin de renvoyer des résultats.

Une politique d’agrégation protège la confidentialité des entités en exigeant que chaque groupe d’agrégation contienne un nombre minimum d’entités. Une entité est identifiée par une valeur distincte dans une colonne. Par exemple, toutes les lignes avec la valeur joe@company.com dans la colonne email peuvent appartenir à la même entité.

Dans les salles blanches, la politique d’agrégation peut protéger plusieurs entités dans la table. Par exemple, la politique peut exiger qu’un groupe d’agrégation contienne au moins 5 ménages et 10 utilisateurs, où les ménages et les utilisateurs sont tous deux des entités.

Sachez que l’attribution d’une politique d’agrégation à une colonne permet au consommateur de filtrer sur cette colonne, de la projeter et de la joindre.

Important

Les politiques de jointure spécifiées au cours du processus de création de la salle blanche sont ignorées lors de l’utilisation du modèle de requête SQL.

Ajouter un modèle de requête SQL pour une salle blanche

Le processus général de configuration d’une salle blanche afin que les consommateurs puissent utiliser le modèle de requête SQL pour exécuter des analyses comprend les éléments suivants :

  1. Démarrez le processus de création de salle blanche.

  2. Lorsque vous êtes invité à sélectionner un modèle, sélectionnez Horizontal » SQL Query puis configurez le modèle de requête SQL.

  3. Partagez la salle blanche avec un consommateur.

Configurer le modèle de requête SQL

Les requêtes des consommateurs ne peuvent pas sélectionner, filtrer ou joindre une colonne dans un modèle de requête SQL, sauf si vous affectez une politique à une colonne ou si vous autorisez totalement la colonne.

Après avoir ajouté le modèle de requête SQL à la salle blanche, vous pouvez le configurer en effectuant les actions suivantes :

Permettre à un consommateur d’accéder à SELECT, de filtrer ou d’effectuer une jointure sur une colonne sans restriction

Utilisez la liste déroulante Fully Permitted Columns pour sélectionner le nom de la colonne.

Attribuer une politique d’agrégation à une ou plusieurs colonnes

Pour affecter une politique d’agrégation à une colonne, utilisez la liste déroulante Aggregation Policy Columns pour sélectionner le nom de la colonne. Une fois la politique d’agrégation attribuée, les requêtes du consommateur doivent agréger les données dans des groupes contenant un nombre minimum de valeurs distinctes de la colonne.

Après avoir attribué la politique d’agrégation à une colonne, vous pouvez ajuster le nombre de valeurs distinctes (c’est-à-dire d’entités) de la colonne qui doivent être incluses dans les groupes d’agrégation renvoyés par la requête du consommateur. Pour ajuster le nombre requis d’entités dans chaque groupe :

  1. Trouvez la section Privacy Settings » Aggregation Policies.

  2. Trouvez la colonne, puis augmentez ou diminuez son Threshold. Plus le seuil est élevé, plus les valeurs distinctes doivent être renvoyées dans chaque groupe d’agrégation, ce qui offre des protections de confidentialité plus fortes pour l’entité.

Vous pouvez affecter la politique d’agrégation à des colonnes supplémentaires pour définir des entités additionnelles, puis ajuster le nombre de ces entités à inclure dans chaque groupe.

Attribuer des politiques de projection à une ou plusieurs colonnes

Pour affecter une politique de projection à une colonne, utilisez la liste déroulante Projection Policy Columns pour sélectionner le nom de la colonne. Les consommateurs ne peuvent pas utiliser une colonne avec une politique de projection dans une instruction SELECT.

Exécution d’une analyse à l’aide d’un modèle de requête SQL

Utilisez les informations de cette section pour rédiger une requête réussie dans le modèle de requête SQL.

Quelles sont les colonnes sur lesquelles je peux effectuer des jointures et des filtres ?

Vous pouvez effectuer des jointures et des filtres sur n’importe quelle colonne qui a une politique ou qui est entièrement autorisée. Pour déterminer si une colonne peut être jointe ou utilisée dans un filtre :

  1. Dans la section Query Configurations, trouvez la vignette Tables.

  2. Utilisez la liste déroulante pour sélectionner une table. Vous pouvez effectuer des jointures et des filtres sur toutes les colonnes de la liste.

Exigence d’agrégation

Si le fournisseur a attribué une politique d’agrégation à une colonne, toutes les requêtes exécutées à l’aide du modèle de requête SQL doivent renvoyer des résultats agrégés.

Pour déterminer si votre requête doit regrouper les résultats :

  1. Dans la section Query Configurations, trouvez la vignette Tables.

  2. Utilisez la liste déroulante pour sélectionner une table.

  3. Recherchez les colonnes qui ont une étiquette de politique d’agrégation. S’il existe au moins une étiquette de politique d’agrégation, vous devez utiliser un agrégat dans votre requête.

Pour obtenir des instructions sur la manière d’écrire une requête réussie sur des données protégées par une politique d’agrégation, consultez :

Quelles colonnes puis-je projeter ?

Les requêtes exécutées à l’aide des modèles de requête SQL ont des restrictions sur les colonnes qui peuvent être projetées (utilisées dans une instruction SELECT).

Pour déterminer si votre requête peut projeter une colonne :

  1. Dans la section Query Configurations, trouvez la vignette Tables.

  2. Utilisez la liste déroulante pour sélectionner une table.

  3. Recherchez les colonnes qui portent un label de politique de projection, ce qui signifie que vous ne pouvez pas les projeter. Vous pouvez projeter toutes les colonnes à l’exception de celles qui portent l’étiquette de la politique de projection.

Afficher les résultats

Pour exécuter votre requête dans l’application Web, sélectionnez Run, puis nommez et planifiez éventuellement l’exécution de votre requête. Vérifiez le statut de la requête dans la liste Analyses and Queries pour voir quand la requête est terminée. Sélectionnez une requête terminée pour voir les résultats. Les requêtes réussies affichent un tableau de résultats. Si le tableau des résultats répond aux exigences spécifiques détaillées ci-après, les résultats peuvent également être affichés dans un graphique. Snowflake propose plusieurs types de graphiques, notamment des graphiques à barres, à lignes et à secteurs ; choisissez le format de sortie en sélectionnant le bouton approprié dans la section des résultats.

Exigences graphiques

Pour que Snowflake puisse générer un graphique :

  • Le tableau des résultats doit inclure au moins une colonne de mesure (numérique) et une colonne de dimension (catégorie).

  • Le nom de la colonne de mesure doit avoir le préfixe ou le suffixe suivant (insensible à la casse) :

    • Préfixes de nom de colonne :

      • COUNT

      • SUM

      • AVG

      • MIN

      • MAX

      • OUTPUT

      • OVERLAP

    • Suffixe du nom de la colonne :

      • _OVERLAP

Snowflake génère un graphique en utilisant la première colonne de mesure éligible et la première colonne de dimension dans une table de résultats.

Limitations

  • Une clause ORDER BY n’a aucun effet sur la manière dont les résultats de l’analyse sont affichés.

Exemple de requêtes

Utilisez cette section pour mieux comprendre ce qu’une requête peut et ne peut pas inclure lors de l’exécution d’une analyse avec le modèle de requête SQL.

Requêtes sans fonction d’agrégation

Dans certaines circonstances, vous pouvez renvoyer des valeurs sans utiliser de fonction d’agrégation.

Autorisé

Non autorisé

SELECT gender, regions
  FROM TABLE sample_db.demo.customer
  GROUP BY gender, region;
Copy
SELECT gender, regions
  FROM TABLE sample_db.demo.customer;
Copy
Expressions de table communes (CTEs)

Autorisé

Non autorisé

WITH audience AS
  (SELECT COUNT(DISTINCT t1.hashed_email),
    t1.status
    FROM provider_db.overlap.customers t1
    JOIN consumer_db.overlap.customers t2
      ON t1.hashed_email = t2.hashed_email
    GROUP BY t1.status);

SELECT * FROM audience;
Copy
WITH audience AS
  (SELECT t1.hashed_email,
    t1.status
    FROM provider_db.overlap.customers quoted t1
    JOIN consumer_db.overlap.customers t2
      ON t1.hashed_email = t2.hashed_email
    GROUP BY t1.status)

SELECT * FROM audience
Copy
CREATE, ALTER, TRUNCATE

Une requête ne peut pas utiliser CREATE, ALTER ou TRUNCATE.

Requête avec jointures

Autorisé

SELECT p.education_level,
  c.status,
  AVG(p.days_active),
  COUNT(DISTINCT p.age_band)
  FROM  sample_database_preprod.demo.customers c
  INNER JOIN
  sample_database_preprod.demo.customers p
    ON  c.hashed_email = p.hashed_email
  GROUP BY ALL;
Copy
DATE_TRUNC

Autorisé

SELECT COUNT(*),
  DATE_TRUNC('week', date_joined) AS week
  FROM consumer_sample_database.audience_overlap.customers
  GROUP BY week;
Copy
Identificateurs avec guillemets

Autorisé

SELECT COUNT(DISTINCT t1.”hashed_email”)
  FROM provider_sample_database.audience_overlap."customers quoted" t1
  INNER JOIN
  consumer_sample_database.audience_overlap.customers t2
    ON t1."hashed_email" = t2.hashed_email;
Copy