Guide du développeur Snowflake Data Clean Rooms

Cette rubrique fournit des lignes directrices pour les utilisateurs qui souhaitent créer ou gérer Snowflake Data Clean Rooms de manière programmatique.

Snowflake expose une API de procédures stockées pour la création et le contrôle de salles blanches. Ces procédures stockées peuvent être exécutées dans n’importe quelle interface qui peut accéder au compte Snowflake associé à votre environnement de salle blanche, y compris les notebooks et les feuilles de calcul Snowsight, ainsi que le Snowflake CLI. Ces procédures peuvent être appelées en SQL ou dans n’importe quel langage pris en charge par votre environnement Snowflake.

Paramétrage de votre environnement

Voici quelques conseils pour configurer votre environnement de codage afin d’utiliser efficacement l’API des salles blanches.

Outils de développement

Voici les principaux outils de développement pour les clean rooms :

  • Environnement de codage : Tout environnement de codage capable d’exécuter des procédures stockées dans votre compte Snowflake fonctionnera. La plupart des développeurs utilisent des feuilles de calcul dans Snowsight (l’outil basé sur le navigateur) ou sur le site Snowflake CLI.

  • **UI des salles blanches : ** utiliser l’UI des salles blanches pour configurer, gérer ou créer des salles blanches. La plupart des analystes de salles blanches utilisent l’UI plutôt que du code, il est donc important de voir et de tester l’expérience de vos salles blanches dans l’UI. En outre, il existe un certain nombre de fonctionnalités qui ne sont disponibles que dans l’UI des salles blanches.

  • Snowsight est utile pour explorer des bases de données et d’autres objets et pour rechercher des objets.

  • API des salles blanches : la documentation e l’API est divisée en rubriques fournisseur et consommateur.

Configuration du codage

Voici comment configurer votre environnement de codage pour les salles blanches :

Rôle et entrepôt requis

L’API des salles blanches requiert le rôle SAMOOHA_APP_ROLE pour un accès complet à l’API. Demandez à votre administrateur des salles blanches de vous accorder un accès complet à l’API. Les salles blanches prennent également en charge la création de rôles avec accès à un sous-ensemble de procédures API.

Vous devez utiliser l’API des salles blanches dans un entrepôt que SAMOOHA_APP_ROLE peut utiliser. app_wh est l’un des entrepôts avec accès à l’API. Choisissez l’entrepôt approprié à vos besoins.

Nous vous recommandons d’utiliser un entrepôt XS pour les commandes générales d’édition, de création ou de suppression de salles blanches. Envisagez d’utiliser des entrepôts plus grands, ou des entrepôts optimisés pour Snowpark, lorsque vous exécutez des analyses volumineuses, comme des charges de travail de machine learning.

-- Set up environment.
USE ROLE SAMOOHA_APP_ROLE;
USE WAREHOUSE app_wh;

-- Call your clean rooms API functions.
...
Copy

Si vous utilisez un autre entrepôt, veillez à autoriser l’utilisation de SAMOOHA_APP_ROLE sur cet entrepôt :

GRANT USAGE ON WAREHOUSE <your_warehouse> TO SAMOOHA_APP_ROLE;`
Copy

A propos de l’API des clean rooms

Snowflake Data Clean Rooms expose un ensemble de procédures stockées qui permettent à un fournisseur de créer, configurer et partager une salle blanche. Ces procédures peuvent être appelées dans n’importe quel environnement de ligne de commande prenant en charge les procédures Snowflake, y compris les notebooks, les feuilles de calcul et le Snowflake CLI. La documentation montre ici l’utilisation du SQL, mais vous pouvez aussi utiliser Python ou tout autre langage Snowflake pris en charge.

Les procédures existent dans les schémas suivants :

  • samooha_by_snowflake_local_db.provider - Procédures spécifiques aux fournisseurs. Ces procédures ne peuvent être appelées que sur les clean rooms qui ont été créées dans le compte courant.

  • samooha_by_snowflake_local_db.consumer - Procédures spécifiques aux consommateurs. Ces procédures ne peuvent être appelées que dans les salles blanches où le compte courant a été invité en tant que consommateur.

  • samooha_by_snowflake_local_db.library - Procédures générales appelées par le créateur de la salle blanche (fournisseur) ou par un collaborateur de la salle blanche (consommateur). Ces procédures sont documentées dans les pages de référence du fournisseur et du consommateur.

Certaines procédures ont des versions à la fois pour le fournisseur et le consommateur. Les résultats sont appropriés au schéma : par exemple, provider.view_cleanrooms répertorie toutes les salles blanches du compte actuel dont vous êtes un fournisseur, et consumer.view_cleanrooms répertorie toutes les salles blanches du compte actuel dont vous êtes un consommateur. Assurez-vous d’appeler la procédure dans l’espace de noms dont vous avez besoin.

À propos des noms de clean room dans les procédures d’API

De nombreuses procédures d’API de clean room s’appuient sur un argument cleanroom_name.

  • Utilisez le nom d’une salle blanche, si cette salle blanche a été créée à l’aide de l’API. Si le nom est utilisé comme partie du nom d’un package, remplacez les espaces par des traits de soulignement :

    -- Spaces work here:
    CALL samooha_by_snowflake_local_db.provider.describe_cleanroom('my code created clean room');
    
    -- Underscores required here:
    SHOW VERSIONS IN APPLICATION PACKAGE SAMOOHA_CLEANROOM_my_code_created_clean_room;
    
    Copy
  • Utilisez l’ID de la salle blanche, si cette salle blanche a été créée en utilisant l’UI des salles blanches.

Vous pouvez voir le nom et l’ID de la salle blanche en appelant describe_cleanroom ou view_cleanrooms.

Les salles blanches créées à l’aide de l’API sont étiquetées dans l’UI des salles blanches comme Supported with Developer APIs.

Paramétrage des comptes, des utilisateurs et des rôles

Vous n’êtes pas obligé d’utiliser l’UI des salles blanches pour développer des salles blanches : la plupart des fonctionnalités de salle blanche sont disponibles en appelant l’API. Cependant, des fonctionnalités sont disponibles uniquement dans l’UI, et certaines sont plus rapides à exécuter dans l’UI. Et, comme de nombreux utilisateurs utilisent exclusivement l’UI, il est important de voir comment votre salle blanche se comporte dans l’UI. Par conséquent, vous devez demander à un administrateur de salle blanche de vous ajouter en tant que gestionnaire de salle blanche ou à un niveau supérieur dans les comptes de salle blanche appropriés.

En fonction de votre cas d’utilisation, vous pouvez également configurer un compte Snowflake supplémentaire dans différentes régions d’hébergement Web pour tester le comportement inter-Cloud.

Nommez vos comptes Snowflake de test de manière significative pour indiquer leur utilisation typique : par exemple, « Compte consommateur », « Compte fournisseur » et « Compte inter-Cloud ». Cela peut s’avérer utile lorsque vous avez plusieurs comptes de test et que vous devez choisir un compte sur la page de connexion des salles blanches.

Salles blanches de tests internes

Vous pouvez tester une salle blanche au cours du développement en la partageant avec vous-même. Une telle salle blanche est appelée une salle blanche de test interne. L’utilisation d’un compte unique pour le fournisseur et le consommateur est pratique pour les tests rapides des fonctionnalités.

Pour créer une salle blanche de test interne, il suffit de transférer le compte du fournisseur dans provider.add_consumers comme seul consommateur.

Les salles blanches de tests internes ont les restrictions suivantes :

  • Une salle blanche de test interne ne peut pas être partagée ultérieurement avec d’autres comptes. Une salle blanche de test interne est toujours une salle blanche de test interne.

  • Les fonctions suivantes ne sont pas prises en charge dans les salles blanches de tests internes :

    • Activation du fournisseur

    • Analyses menées par les fournisseurs

    • Monter ou voir les journaux de requêtes (provider.mount_request_logs_for_all_consumers ou provider.view_request_logs)

    • Modèles définis par le consommateur

    • Analyses multi-fournisseurs

    • Confidentialité différentielle

    Si vous souhaitez tester des fonctionnalités qui ne sont pas prises en charge dans une salle blanche de test interne, vous devez configurer des comptes Snowflake distincts du fournisseur et du consommateur pour tester les deux côtés d’une salle blanche.

Téléchargez un exemple de feuille de calcul qui illustre l’utilisation d’une salle blanche dans un compte unique pour le fournisseur et le consommateur.

Voir ce qui est installé avec l’environnement des salles blanches

Snowflake Data Clean Rooms crée de nombreuses bases de données locales lors de l’installation. Vous pouvez trouver des détails sur les tâches et les objets qui sont exécutés ou installés avec un paquet de salle blanche dans Snowflake Data Clean Rooms : objets installés.

Données d’échantillon

L’environnement des salles blanches installe quelques ensembles de données d’échantillon que vous pouvez utiliser.

Vous pouvez également générer des données de test synthétiques avec Snowflake

Lignes directrices et recommandations

Voici quelques lignes directrices pour éviter les problèmes lorsque vous travaillez dans des salles blanches :

Confirmez que vous utilisez le même compte dans les UI de clean rooms et dans le code

Vous devez souvent ouvrir un environnement de codage et les UI de clean rooms pour le même compte Snowflake, par exemple, lorsque vous créez une clean room dans le code, puis que vous vérifiez son apparence dans les UI de clean rooms. Il est important de confirmer que vous utilisez le même compte Snowflake dans chaque cas.

Snowsight n’a pas de raccourci pour ouvrir l’UI des salles blanches pour le même compte, ou l’inverse, vous devez donc vous assurer de vous connecter au même compte dans chaque environnement.

Noms Clean room vs ID des clean rooms

Lorsque vous utilisez l’API, pour les procédures qui prennent un argument de nom de salle blanche, déterminez s’il faut utiliser le nom de la salle blanche ou l’ID de la salle blanche comme suit :

  • Si la clean room a été créée à l’aide de l’API, utilisez le nom de la clean room.

  • Si la salle blanche a été créée dans l’UI des salles blanches, utilisez l’ID de la salle blanche. Vous pouvez voir à la fois le nom de la salle blanche et l’ID en appelant provider.view_cleanrooms ou provider.describe_cleanroom.

Mettre à jour votre salle blanche chaque fois que l’UI est modifiée

Lorsque vous modifiez des propriétés de salle blanche qui affectent l’UI, appelez provider.create_or_update_cleanroom_listing pour propager les changements.

Interopérabilité entre les clean rooms créées en code ou dans l’UI

Lorsque vous créez une salle blanche à l’aide de l’API, certaines fonctionnalités ne sont pas modifiables dans l’UI des salles blanches. Par exemple, vous ne pouvez pas ajouter de modèles supplémentaires, même des modèles Snowflake de stock, dans le code pour une salle blanche créée par UI. Vous ne pouvez pas non plus modifier les paramètres de confidentialité différentielle.

Résolution des problèmes

Voici quelques conseils de résolution courants :

Le consommateur ne peut pas définir de politiques de jointure ou effectuer d’autres actions de base sur une salle blanche jointe

Confirmez que vous avez installé votre clean room avec le rôle approprié (SAMOOHA_APP_ROLE). Si vous n’avez pas utilisé SAMOOHA_APP_ROLE lors de l’installation de la clean room, vous rencontrerez de nombreux problèmes, généralement des erreurs d’autorisation. Si c’est le cas, même consumer.uninstall_cleanroom échouera et vous devrez prendre des mesures supplémentaires pour désinstaller puis réinstaller la clean room avec le rôle correct.

-- Who owns the clean room?
SHOW SHARES LIKE 'SAMOOHA_CLEANROOM_REQUESTS_<cleanroom_name>';

-- If the owner role is not SAMOOHA_APP_ROLE, you must drop the share, then
-- uninstall the clean room.
DROP SHARE SAMOOHA_CLEANROOM_REQUESTS_<cleanroom_name>;
CALL samooha_by_snowflake_local_db.consumer.uninstall_cleanroom($cleanroom_name);
USE ROLE SAMOOHA_APP_ROLE;
CALL samooha_by_snowflake_local_db.consumer.install_cleanroom($cleanroom_name, '<provider_locator>');
Copy

Impossible de trouver une clean room que vous avez créée

Si vous avez créé une clean room dans un compte mais que vous ne la voyez pas dans le compte du collaborateur, voici quelques raisons possibles :

  • La clean room a été créée dans une région d’hébergement Cloud différente et vous n’avez pas activé l’exécution automatique inter-Cloud.

  • Vous n’avez pas publié votre clean room en appelant provider.create_or_update_cleanroom_listing.

  • Vous appelez consumer.view_cleanrooms() au lieu de provider.view_cleanrooms() (ou l’inverse).

  • Vous n’avez pas partagé la clean room, vous avez partagé la clean room avec le mauvais compte, ou vous avez ouvert le mauvais compte de collaborateur dans l’UI/CLI Clean rooms de Snowsight. Confirmez que le compte sur lequel vous pensez voir votre clean room est celui avec lequel vous avez partagé la clean room, et que vous êtes connecté à ce compte partagé.

  • Il y a un petit délai entre la publication d’une clean room et le moment où elle devient visible pour le collaborateur.

Fonction inconnue

Si vous appelez une procédure et obtenez une erreur comme l’extrait suivant :

Unknown user-defined function SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.CONSUMER.<procedure name>

Voici quelques causes possibles :

Vous avez saisi le mauvais espace de noms.

Veillez à appeler la version consumer ou provider appropriée de votre procédure. De nombreuses procédures comportent une version pour le fournisseur et une version pour le consommateur.

Vous avez mal saisi le nom de la fonction.

Consultez le guide de référence pour connaître le nom correct.

Un rôle d’exécution avec accès limité vous a été attribué et la fonction que vous avez appelée n’est pas autorisée par votre rôle.

Testez ceci en exécutant le code SQL suivant :

USE DATABASE samooha_by_snowflake_local_db;
CALL IS_DATABASE_ROLE_IN_SESSION('samooha_run_role');
Copy

Si l’extrait de code renvoie TRUE, vous avez des autorisations de rôle d’exécution avec accès limité sur l’API de salle blanche. Si vous avez besoin d’un niveau accès plus élevé, demandez à un administrateur de salle blanche de vous accorder un accès complet. Voir la liste des procédures de rôle d’exécution autorisées dans la documentation de consumer.grant_run_on_cleanrooms_to_role.

Vous n’avez pas le rôle SAMOOHA_APP_ROLE

Pour savoir si vous pouvez utiliser le rôle SAMOOHA_APP_ROLE, exécutez la commande suivante :

-- Get current user name.
SELECT current_user();

-- Add current user name in place as indicated.
SHOW GRANTS TO USER <current_user_name> ->> select * from $1 where "role" = 'SAMOOHA_APP_ROLE';
Copy

Si vous n’obtenez aucun résultat, demandez à un administrateur de vous donner l’accès API à la salle blanche.

Voir si un utilisateur a installé une salle blanche

Vous pouvez vérifier si un utilisateur donné a installé une salle blanche donnée en exécutant le code SQL suivant. Remplacez $consumer_locator et $cleanroom_name avec le localisateur de consommateur et le nom de la salle blanche.

SELECT * FROM snowflake.data_sharing_usage.application_state
  WHERE consumer_account_locator = $consumer_locator
    AND CONTAINS(package_name, UPPER(REPLACE($cleanroom_name, ' ', '_')));
Copy

Vérifier les requêtes ou l’historique des analyses

Vous pouvez voir l’historique de vos requêtes pour les analyses exécutées dans l’UI ou dans le code. Les historiques sont stockés et vérifiés séparément.

Historique de l’analyse de l’UI

L’UI des salles blanches affiche une liste de toutes les analyses précédentes pour ce compte dans la page Analyses & Queries. Ces résultats ne concernent que les requêtes exécutées dans l’UI.

Si vous modifiez ou supprimez une salle blanche, les rapports d’analyse dans l’UI pour cette salle blanche seront supprimées à moins que le rapport n’utilise l’un des modèles suivants :

  • Audience Overlap & Segmentation

  • SQL Query

  • Un modèle personnalisé.

L’historique des requêtes pour les modèles répertoriés ci-dessus est conservé même si une salle blanche est modifiée ou supprimée.

Historique des requêtes de l’API

Pour afficher l’historique de tous les appels exécutés à l’aide de l’API pour un compte, y compris les analyses de modèles, procédez comme suit :

  1. Connectez-vous à Snowsight.

  2. Dans le menu de navigation, sélectionnez Monitoring » Query History.

  3. Utilisez les filtres pour trouver la requête associée à l’analyse, puis sélectionnez la requête ou l’analyse.

Exemples étendus

Pour vous aider à comprendre comment utiliser les différentes fonctionnalités des APIs du développeur, vous pouvez consulter les exemples dans les sections Use cases et Features de la documentation sur les salles blanches.