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 |
Description |
---|---|
Politique de projection |
Contrôle si une requête peut projeter une colonne, c’est-à-dire inclure la colonne dans une instruction SELECT. Dans une salle blanche, les consommateurs ne peuvent pas projeter une colonne avec 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. Chaque table accessible avec un modèle de requête SQL a une politique d’agrégation. 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 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. |
Important
Les politiques de jointure, qui sont ajoutées à la salle blanche à l’étape 2 du processus de création, ne contrôlent pas les jointures lors de l’utilisation du modèle de requête SQL. Au lieu de cela, la salle blanche applique une politique de projection et une politique d’agrégation à chaque colonne sélectionnée comme colonne de jointure. Unre requête SQL peut joindre n’importe quelle colonne, pas seulement celles sélectionnées avec la liste déroulante Join Columns.
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.
À l’étape 2, utilisez la liste déroulante Join Columns pour sélectionner les colonnes que vous souhaitez protéger avec des politiques d’agrégation et de projection. Vos sélections n’auront aucun effet sur les colonnes pouvant être utilisées comme clés de jointure.
À l’étape 3, Horizontal » SQL Query dans la liste des modèles, puis configurez le modèle de requête SQL.
Partagez la salle blanche avec un consommateur.
Configurer le modèle de requête SQL¶
Après avoir ajouté le modèle de requête SQL à la salle blanche, vous pouvez le configurer en effectuant les actions suivantes :
Autoriser le consommateur à utiliser une colonne de jointure dans une instruction SELECT
Permettre au consommateur de SELECT et filtrer sur une colonne non jointe
- Autoriser le consommateur à utiliser une colonne de jointure dans une instruction SELECT
Utilisez la liste déroulante Aggregation Policy Columns pour sélectionner le nom de la colonne, qui est étiqueté avec Join Policy.
- Permettre au consommateur de SELECT et filtrer sur une colonne non jointe
Utilisez la liste déroulante Fully Permitted Columns pour sélectionner le nom de la colonne.
- Définir des entités supplémentaires
Chaque colonne avec une politique de jointure identifie une entité protégée par la politique d’agrégation de la table. Cela signifie que chaque groupe d’agrégation doit contenir un nombre minimum de valeurs distinctes de chaque colonne de jointure.
Vous pouvez désigner des colonnes supplémentaires comme entités d’identification afin que chaque groupe d’agrégation contienne un nombre minimum de valeurs distinctes de ces colonnes. Par exemple, supposons que
HEM
est une politique de jointure. La configuration par défaut de la politique d’agrégation force les requêtes à agréger les données dans des groupes contenant une certaine quantité de valeurs distinctes de la colonneHEM
. Supposons maintenant que vous ajoutiez la colonneFIRST_NAME
comme colonne de politique d’agrégation. Désormais, chaque groupe d’agrégation doit contenir un certain nombre de valeurs distinctes des colonnesHEM
et un certain nombre de valeurs distinctes de la colonneFIRST_NAME
.Pour ajouter une colonne qui identifie une entité, utilisez la liste déroulante Aggregation Policy Columns pour sélectionner le nom de la colonne.
Note
Il faut savoir que le fait de spécifier qu’une colonne identifie une entité permet également au consommateur de filtrer et de projeter cette colonne.
- Modifier le nombre minimum d’entités
Lorsqu’une colonne identifie une entité, chaque groupe d’agrégation doit contenir un certain nombre de valeurs distinctes de la colonne. Pour ajuster le nombre de valeurs distinctes d’une entité :
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é.
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 ?¶
Vous pouvez joindre n’importe quelle colonne.
Exigence d’agrégation¶
Chaque table dans une salle blanche qui utilise le modèle de requête SQL a une politique d’agrégation. Par conséquent, toutes les requêtes exécutées à l’aide du modèle de requête SQL doit renvoyer des résultats agrégés.
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 comportant une étiquette de politique de projection. Vous pouvez projeter toutes les colonnes répertoriées, à l’exception de celles avec une politique de projection.
Sur quelles colonnes puis-je filtrer ?¶
Pour déterminer sur quelles colonnes votre requête peut filtrer :
Dans la section Query Configurations, trouvez la vignette Tables.
Utilisez la liste déroulante pour sélectionner une table et examiner les colonnes. Vous pouvez filtrer sur toutes les colonnes répertoriées.
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;