Guide du développeur Snowflake Data Clean Rooms

Cette page fournit quelques lignes directrices aux utilisateurs qui souhaitent créer ou gérer des clean rooms ou des modèles dans Snowflake de manière programmatique.

Snowflake expose des procédures stockées qui vous permettent de développer des applications pour créer ou contrôler des clean rooms. Ces procédures stockées peuvent être exécutées dans n’importe quelle interface ayant accès au compte Snowflake associé à votre environnement de clean room, y compris les carnets ou feuilles de calcul Snowsight ainsi que le site Snowflake CLI. Ces procédures peuvent être appelées à l’adresse SQL ou dans n’importe quelle langue prise en charge par les interfaces Snowflake.

Paramétrage de votre environnement

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.

  • Les UI de clean rooms : Utilisez les UI de clean rooms pour configurer, gérer ou créer des clean rooms. La plupart des analystes de clean rooms utilisent le l’UI plutôt qu’un code. Il peut donc être utile de voir et de tester l’expérience de vos clean rooms dans l’UI. En outre, il existe quelques fonctions qui ne sont disponibles que dans les UI de clean rooms.

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

Configuration du codage

Rôle et entrepôt requis

Les API clean rooms nécessitent le rôle SAMOOHA_APP_ROLE pour un accès complet à l’API. Demandez à l’administrateur de votre clean room de vous l’accès complet à l’API.

Clean rooms permet également de créer des rôles donnant accès à un sous-ensemble de procédures d’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.

-- 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 clean room. Ces procédures sont accessibles par tout environnement de ligne de commande qui supporte les procédures Snowflake, y compris les notebooks, les workbooks et le CLI Snowflake. Vous pouvez utiliser les API de clean rooms dans n’importe quelle langue prenant en charge les procédures stockées. La documentation présente l’utilisation de SQL, mais vous pouvez également utiliser Python ou toute autre langue supportée.

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 éléments sont documentés dans les pages de référence du fournisseur et du consommateur)

Certaines procédures comportent une version pour le fournisseur et une version pour le consommateur. Les résultats sont adaptés au schéma : par exemple, provider.view_cleanrooms annonce toutes les clean rooms du compte courant pour lequel vous êtes fournisseur, et consumer.view_cleanrooms annonce toutes les clean rooms du compte courant pour lequel vous êtes consommateur.

À 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.

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 à l’aide de procédures stockées. 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, en particulier si vous créez un formulaire Web de configuration de l’utilisateur pour une salle blanche que vous créez. 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 savoir à quel compte vous connecter.

Salles blanches de tests internes

Vous pouvez tester le développement d’une salle blanche en agissant à la fois en tant que fournisseur et en tant que consommateur en utilisant le même compte Snowflake. C’est ce qu’on appelle une salle blanche de test interne. 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. L’utilisation d’un compte unique pour le fournisseur et le consommateur est pratique pour les tests rapides des fonctions, mais tenez compte des restrictions suivantes des salles blanches de tests internes :

  • Lorsqu’une salle blanche a été partagée avec le compte du fournisseur, elle ne peut pas être partagé avec aucun autre compte et elle sera toujours une salle blanche de test interne.

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

    • consumer.view_cleanrooms ne montre pas de 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

    • Modèles personnalisés (fournisseur ou consommateur)

    • 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 carnet de calcul qui illustre l’utilisation d’une salle blanche dans un compte unique pour le fournisseur et le consommateur.

Lignes directrices et recommandations

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 les UI de clean rooms pour le même compte, ou l’inverse, vous devez donc vous assurer que les UI de clean rooms et Snowsight sont ouvertes dans le même compte.

Noms Clean room vs ID des clean rooms

Lorsque vous utilisez l’API, pour les procédures qui nécessitent un argument cleanroom_name, déterminez s’il faut utiliser le nom ou l’ID de la clean room 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.

Mettez à jour votre clean room chaque fois que vous effectuez des changements

Pour modifier l’ensemble des paramètres de la clean room, y compris les modèles, les autorisations ou les politiques, appelez provider.create_or_update_cleanroom_listing pour activer les modifications. Dans certains cas, les modifications peuvent être visibles avant l’appel de cette procédure, mais elles ne s’appliqueront correctement qu’après l’appel de provider.create_or_update_cleanroom_listing.

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

Lorsque vous créez une clean room dans l’API, certaines fonctions ne sont pas modifiables dans l’UI de clean rooms. Par exemple, vous ne pouvez pas ajouter de modèles supplémentaires, même des modèles Snowflake en stock, dans le code d’une clean room créée dans l’UI. Vous ne pouvez pas non plus modifier les paramètres de confidentialité différentielle.

Description des objets de la clean room

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.

SAMOOHA_BY_SNOWFLAKE.TEMPLATES.TEMPLATES:

Contient la liste et la définition de tous les modèles Snowflake en stock disponibles pour les clean rooms dans ce compte.

Résolution des problèmes

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. 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 fonctions des APIs de développeur, vous pouvez vous référer aux exemples de la section Use cases de la documentation sur les clean rooms.