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 colonneemail
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 :
Démarrez le processus de création de salle blanche.
Lorsque vous êtes invité à sélectionner un modèle, sélectionnez Horizontal » SQL Query puis configurez le modèle de requête SQL.
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 :
Attribuer une politique d’agrégation à une ou plusieurs colonnes
Attribuer des politiques de projection à une ou plusieurs colonnes
- 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 :
Trouvez la section Privacy Settings » Aggregation Policies.
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 :
Dans la section Query Configurations, trouvez la vignette Tables.
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 :
Dans la section Query Configurations, trouvez la vignette Tables.
Utilisez la liste déroulante pour sélectionner une table.
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 :
Exigences en matière de requêtes pour les politiques d’agrégation. Par exemple, vous pouvez utiliser cette section pour déterminer que les fonctions d’agrégation MIN et MAX ne satisfont pas aux exigences de la requête et ne peuvent pas être utilisées.
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 :
Dans la section Query Configurations, trouvez la vignette Tables.
Utilisez la liste déroulante pour sélectionner une table.
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;
SELECT gender, regions FROM TABLE sample_db.demo.customer;
- 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;
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
- 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;
- DATE_TRUNC
Autorisé
SELECT COUNT(*), DATE_TRUNC('week', date_joined) AS week FROM consumer_sample_database.audience_overlap.customers GROUP BY week;
- 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;