Utilisation des domaines de confidentialité en tant qu’analyste

Un domaine de confidentialité définit les valeurs possibles dans une colonne, de manière similaire à un domaine mathématique. Snowflake utilise un domaine de confidentialité pour déterminer la quantité de bruit à introduire dans les résultats.

Pour obtenir une compréhension complète des domaines de confidentialité avant d’effectuer les tâches de cette section, voir À propos des domaines de confidentialité.

Si le fournisseur de données a suivi les meilleures pratiques, la plupart des colonnes numériques et catégorielles d’une table protégée par la confidentialité ont un domaine de confidentialité. Si le fournisseur de données n’en a pas défini une sur une colonne que vous souhaitez agréger ou utiliser dans une clause GROUP BY, vous devez façonner votre requête de manière à ce qu’elle inclue des techniques qui spécifient implicitement un domaine de confidentialité pour cette colonne. Les domaines de confidentialité que le fournisseur de données a définis sur la table peuvent également être perdus en fonction des opérations effectuées sur la table. Par exemple, si vous regroupez un champ dans une sous-requête avec GROUP BY, le système pourrait ne pas être en mesure de dériver un domaine de confidentialité en raison de contraintes de confidentialité.

Vous pouvez également écrire votre requête pour affiner un domaine de confidentialité défini par le fournisseur de données. Ce remplacement peut aider à améliorer les résultats de votre agrégation.

Note

Pour respecter les conditions de jointure avec une table protégée par la confidentialité, un analyste peut avoir besoin de définir un domaine de confidentialité pour une colonne de sa propre table, même si elle n’est pas protégée par la confidentialité. Ces domaines de confidentialité sont définis au niveau de la table et s’appliquent à toutes les requêtes sur la table. Si vous êtes administrateur de l’analyste et que vous devez spécifier un domaine de confidentialité pour la colonne de l’une de vos tables, voir Définition d’un domaine de confidentialité.

Affichage des domaines de confidentialité

Il est utile d’afficher les domaines de confidentialité d’une table protégée par la confidentialité avant d’interroger la table. La vérification des domaines de confidentialité pour chaque colonne peut aider des manières suivantes :

  • Déterminez si le fournisseur de données a défini un domaine de confidentialité pour une colonne.

  • Déterminez les valeurs possibles trouvées dans la colonne, ce qui peut vous aider à améliorer votre analyse. Par exemple, si le domaine de confidentialité est une plage de valeurs possibles trouvées dans la colonne, vous pouvez déterminer le minimum et le maximum de la plage.

  • Recherchez pourquoi vous obtenez plus de bruit dans vos résultats que prévu. Vous pouvez identifier s’il existe des valeurs aberrantes qui ne sont pas importantes pour votre analyse et supprimer ces valeurs de votre agrégation pour améliorer les résultats.

Pour voir si une colonne possède un domaine de confidentialité et, si c’est le cas, déterminer le type et les valeurs possibles du domaine, voir Afficher un domaine de confidentialité.

Spécification d’un domaine de confidentialité

Cette section décrit les techniques qu’un analyste peut utiliser pour définir un domaine de confidentialité pour la durée d’une requête. Elle résume comment la structure d’une requête spécifie un domaine de confidentialité pour une colonne.

Spécifiez un domaine de confidentialité pour les colonnes de chaîne

Le filtrage sur une colonne de chaîne à l’aide d’une clause WHERE spécifie un domaine de confidentialité pour celle-ci. Le domaine de confidentialité se compose des valeurs qui correspondent au filtre. Par exemple, les requêtes spécifient un domaine de confidentialité pour la colonne product si elles incluent les clauses suivantes :

WHERE product = 'hackeysack' OR product = 'frisbee'
Copy
WHERE product IN ('hackeysack', 'frisbee')
Copy

Le domaine de confidentialité est une liste composée de hackeysack et frisbee.

Si le fournisseur de données a déjà défini un domaine de confidentialité sur la colonne product, Snowflake utilise l’intersection des deux domaines de confidentialité pendant la durée de la requête. Pour plus d’informations, voir Interaction entre les domaines de confidentialité spécifiés par l’administrateur et ceux spécifiés par l’analyste.

Les valeurs en dehors du domaine de confidentialité pour les colonnes de chaîne sont traitées comme étant NULL.

Spécifiez un domaine de confidentialité pour les colonnes numériques, de date et d’heure

Vous pouvez utiliser des clauses de filtrage ou des transformations de colonnes pour spécifier un domaine de confidentialité pour une colonne numérique, de date ou d’heure. Ces techniques de requête spécifient un domaine de confidentialité qui est une plage de valeurs possibles.

Vous pouvez utiliser les techniques suivantes pour spécifier un domaine de confidentialité pour une colonne numérique, de date ou d’heure :

Clause WHERE

Par exemple :

WHERE a < 10 AND a >= 0
Copy

Le domaine de confidentialité spécifié de la colonne a est compris entre 0 et 10.

Si le fournisseur de données a déjà défini un domaine de confidentialité sur la colonne a, Snowflake utilise l’intersection des deux domaines de confidentialité pendant la durée de la requête. Pour plus d’informations, voir Interaction entre les domaines de confidentialité spécifiés par l’administrateur et ceux spécifiés par l’analyste.

L’utilisation d’un filtre supprime les valeurs qui ne relèvent pas du domaine de confidentialité, ce qui signifie que ces valeurs sont ignorées lors du calcul des agrégations. Pour plus d’informations, voir Numérique, date et heure.

Transformations de colonne GREATEST et LEAST

Par exemple :

GREATEST(LEAST(a, 100), 0) AS clamped_a
Copy

La plage spécifiée du domaine de confidentialité est comprise entre 0 et 100.

Si le fournisseur de données a déjà défini un domaine de confidentialité sur la colonne a, Snowflake utilise l’intersection des deux domaines de confidentialité pendant la durée de la requête. Pour plus d’informations, voir Interaction entre les domaines de confidentialité spécifiés par l’administrateur et ceux spécifiés par l’analyste.

Si vous limitez un domaine de confidentialité défini par le fournisseur de données, vous pouvez utiliser une seule des transformations GREATEST ou LEAST pour diminuer le maximum ou augmenter le minimum tout en gardant l’autre extrémité de la plage identique au domaine de confidentialité défini par le fournisseur de données.

Les valeurs de la colonne qui sont en dehors du domaine de confidentialité sont limitées, ce qui signifie qu’elles sont traitées comme si elles étaient les valeurs les plus proches dans le domaine (la valeur minimale ou maximale).

Restriction d’un domaine de confidentialité pour améliorer les résultats

Snowflake doit introduire suffisamment de bruit pour masquer les valeurs exactes dans un domaine de confidentialité. Si le domaine de confidentialité inclut des valeurs qui sont des valeurs aberrantes par rapport à la plupart des données de la colonne, Snowflake doit augmenter le bruit pour masquer la présence de ces valeurs. Le remplacement d’un domaine de confidentialité pour réduire sa plage peut réduire le bruit, car Snowflake n’a plus besoin de masquer la présence de valeurs qui ne sont pas importantes pour votre analyse.

La technique que vous utilisez pour restreindre un domaine de confidentialité affecte la manière dont vos agrégations sont calculées. Votre choix dépend de ce qui est important pour votre analyse.

  • Si vous utilisez un filtre (clause WHERE) pour restreindre le domaine de confidentialité, les valeurs en dehors du domaine sont ignorées lors du calcul des agrégations.

    L’utilisation d’un filtre est la technique privilégiée lorsque vous pensez que les valeurs aberrantes d’un domaine de confidentialité sont dues à des problèmes de qualité des données ou si ces valeurs ne sont pas pertinentes pour votre requête. L’exclusion des valeurs aberrantes du domaine de confidentialité peut préserver l’intégrité de votre analyse tout en réduisant considérablement le bruit introduit dans vos résultats.

  • Si vous utilisez une transformation de colonne, les valeurs de la colonne qui sont en dehors du domaine sont limitées, ce qui signifie qu’elles sont traitées comme si elles étaient les valeurs les plus proches dans le domaine (la valeur minimale ou maximale).

    L’utilisation d’une transformation de colonne peut améliorer votre analyse même si vous pensez que les valeurs aberrantes ne sont pas des problèmes liés à la qualité des données. Par exemple, si vous prenez la moyenne des valeurs, la limitation des valeurs aberrantes à l’aide d’une transformation de colonne peut améliorer votre analyse.

Note

Si votre requête inclut des filtres hautement sélectifs qui ciblent un nombre limité d’enregistrements dans un ensemble de données, la quantité relative de bruit va en fait augmenter, car Snowflake doit s’assurer que vous ne pouvez pas utiliser vos résultats pour identifier un individu.