Vue d’ensemble des Snowflake Data Clean Rooms

Cette rubrique fournit un guide de haut niveau sur les composants d’une collaboration, et décrit les étapes de base de la création ou de l’utilisation d’une collaboration Snowflake Data Clean Room.

Exigences

  • Vous devez disposer de la dernière version de Snowflake Data Clean Rooms.

  • Vous avez besoin d’accéder à l’API Data Clean Rooms Collaboration pour pouvoir voir ou gérer les collaborations. Pour plus d’informations, voir Gestion de l’accès aux collaborations, aux ressources et aux données.

  • Les fournisseurs de données doivent utiliser Snowflake Enterprise Edition. Les gestionnaires d’analyses et les propriétaires peuvent utiliser l’édition Standard.

  • Si vous utilisez Snowflake Standard Edition, vous ne pouvez pas partager des données via une salle blanche de données avec application de la politique. Toutefois, vous pouvez accéder aux offres de données d’autres collaborateurs, ou utilisez vos propres données sans politiques ou sans les partager.

  • Pour activer les résultats dans un autre compte Snowflake, vous devez utiliser Snowflake Enterprise Edition.

  • Les comptes d’essai ne prennent pas en charge Snowflake Data Clean Rooms.

Rôles et ressources dans une collaboration

Pour comprendre comment utiliser une collaboration, vous devez d’abord comprendre les rôles de la collaboration et les ressources de collaboration.

Rôles de collaboration

Les rôles suivants sont disponibles dans une collaboration. Ces rôles définissent les capacités de haut niveau du collaborateur.

  • Propriétaire : le propriétaire définit, crée et possède la collaboration, et détermine les collaborateurs qui sont invités et leurs rôles de collaboration. Un propriétaire n’est pas automatiquement un gestionnaire d’analyses ou un fournisseur de données, et ne dispose pas de privilèges d’exécution élevés. Les principales capacités du propriétaire sont de créer la salle blanche, d’attribuer des rôles de collaboration, de déterminer qui peut partager des données avec qui, et de supprimer la salle blanche. Une collaboration ne peut avoir qu’un seul propriétaire.

  • Fournisseur de données : fournit des offres de données, telles que des tables et des vues, à une collaboration, et spécifie quels gestionnaires d’analyses peuvent les utiliser. En d’autres termes, le compte A est un fournisseur de données pour les comptes B et C, comme spécifié dans la spécification de la collaboration.

  • Gestionnaire d’analyses : exécute les modèles autorisés sur les offres de données autorisées, comme spécifié par la spécification de la collaboration.

Ces rôles sont désignés dans la spécification de collaboration utilisée pour créer la collaboration.

Un collaborateur peut se voir attribuer plusieurs rôles de collaboration et (à l’exception du rôle de propriétaire) un rôle de collaboration peut être attribué à plusieurs collaborateurs.

Ressources de collaboration

Une collaboration contient des ressources, notamment des offres de données, des modèles et des bundles de code. Toutes les ressources, et la collaboration elle-même, sont définies par des spécifications YAML.

Les collaborations prennent en charge les types de ressources suivants :

  • Modèle : une requête JinjaSQL que les exécutants d’analyse peuvent exécuter dans la collaboration. Selon le type de modèle, les résultats peuvent être livrés directement ou activés (sauvegardés) sur le compte Snowflake d’un collaborateur désigné. Les exécutions d’analyse peuvent passer des valeurs dans un modèle au moment de l’exécution pour remplacer les variables de modèle utilisées pour les noms de colonne, clauses WHERE et autres éléments de requête.

  • Offre de données : un paquet d’une ou plusieurs tables partagées par un fournisseur de données avec des exécutants d’analyse spécifiques. Une offre de données est une vue en direct des données sources, et non un instantané, et sa spécification contrôle les colonnes exposées et les politiques appliquées.

  • ** Bundle de code : ** un ensemble de fonctions ou de procédures Python personnalisées qui peuvent être appelées par un modèle. Les bundles de code vous permettent d’étendre les capacités des modèles avec une logique définie par l’utilisateur, comme les modèles de machine learning ou les transformations personnalisées.

Exemple de spécification de salle blanche

Voici la spécification YAML pour une salle blanche de base qui implique deux participants,``alice`` (un alias pour le compte``corp1.acct123``) et``bob`` (un alias pour le compte``corp2.acctxyz``). La spécification attribue des rôles à chaque utilisateur et relie deux offres de données à la collaboration.

api_version: 2.0.0
spec_type: collaboration
name: basic_collaboration
owner: alice                # alice is the collaboration owner.
collaborator_identifier_aliases:
  alice: corp1.acct123
  bob: corp2.acctxyz
analysis_runners:
  alice:                    # alice is also an analysis runner.
    data_providers:
      alice:                # alice provides data to herself.
        data_offerings:     # alice provides these data offerings.
        - id: alice_data_1
        - id: alice_data_2
      bob:                  # bob provides data to alice.
        data_offerings:     # bob provides this data to alice.
        - id: bob_data_1
    templates:              # alice can use this template with any data she can access.
    - id: template1
  bob:                      # bob is an analysis runner
    data_providers:         # bob can use data from the following data providers.
      alice:
        data_offerings:     # alice provides the following data to bob.
        - id: alice_data_1
    templates:              # bob can use this template with any data he can access.
    - id: template2

Cette collaboration simple comprend les ressources et les rôles de collaboration suivants :

  • alice est la propriétaire de la collaboration, un exécutant d’analyses et un fournisseur de données pour elle-même et``bob``.

  • bob est un exécutant d’analyses et un fournisseur de données pour alice, mais pas pour lui-même.

  • alice peut exécuter template1, bob peut exécuter template2.

Autres points à noter sur cette collaboration :

  • Aucun nouveau collaborateur ne peut être ajouté après la création de la collaboration à partir de cette spécification.

  • Les alice et bob peuvent ajouter de nouveaux modèles et les partager avec d’autres collaborateurs.

  • Les rôles ne peuvent pas être modifiés, donc bob ne peut pas devenir un fournisseur de données pour lui-même plus tard.

  • Tout fournisseur de données peut ajouter ou supprimer des offres de données dans sa liste d’offres de données, même après la création de la collaboration.

Workflow de collaboration de base dans les salles blanches

Voici un scénario simple de collaboration en salle blanche :

  1. Le propriétaire de la collaboration enregistre éventuellement les modèles ou les offres de données qu’il souhaite voir apparaître dans la configuration initiale de la collaboration.

  2. Le propriétaire demande éventuellement à tous les collaborateurs prévus d’enregistrer les modèles ou les offres de données qu’ils souhaitent voir apparaître dans la configuration initiale de la collaboration. Les collaborateurs donnent alors les IDs de ressource de tous les éléments qu’ils ont enregistrés.

  3. Ensuite, le propriétaire crée une collaboration. La spécification de la collaboration définit les collaborateurs, leurs rôles et toutes les ressources qui doivent être disponibles dans l’état initial de la collaboration.

    • À ce stade, l’ensemble des collaborateurs et de leurs rôles de collaboration est fixe.

    • Si votre collaboration inclut des utilisateurs dans d’autres régions d’hébergement Cloud, ils doivent activer l’exécution automatique inter-Cloud sur leur compte avant de pouvoir examiner et rejoindre la collaboration.

    • Lorsque la collaboration est créée, elle devient visible et joignable par tous les collaborateurs dans la spécification de collaboration.

  4. Les collaborateurs examinent et rejoignent la collaboration.

  5. Les collaborateurs peuvent alors éventuellement lier des ressources dans la collaboration, en fonction de leurs rôles. Les fournisseurs de données peuvent lier des offres de données à leurs exécutants d’analyses ; tout rôle peut demander l’ajout d’un modèle pour le partager avec un autre collaborateur.

  6. Les exécutants d’analyses peuvent ensuite exécuter tous les modèles partagés avec eux dans le cadre de la collaboration, en utilisant toutes les offres de données partagées avec eux dans le cadre de la collaboration. Le gestionnaire d’analyses prend en charge le coût de l’analyse. Les modèles peuvent soit renvoyer les résultats de la requête dans la réponse, soit activer les résultats pour l’appelant ou un autre collaborateur.

En savoir plus

Création d’une collaboration.

Tout utilisateur de salles blanches de données Snowflake disposant des privilèges appropriés peut créer une salle blanche. Une salle blanche est définie à l’aide d’une spécification YAML qui détermine tous les collaborateurs et leurs rôles relatifs dans la collaboration, ainsi que les ressources présentes dans la configuration initiale de la collaboration. (Les propriétaires des ressources doivent se joindre avant que les ressources puissent être utilisées.) Les ressources peuvent être ajoutées ou supprimées après la création de la collaboration, mais la liste des collaborateurs et de leurs rôles relatifs est fixe après la création de la collaboration.

Les collaborations ne sont pas versionnées : une collaboration peut changer avec l’ajout ou la suppression de ressources, mais ces changements ne sont pas suivis.

Ajout de ressources à une collaboration

Une collaboration peut accéder à des ressources, notamment à des modèles, à des offres de données et à des bundles de code. Pour utiliser une ressource dans une collaboration, vous devez d’abord l’enregistrer avec l’environnement des salles blanches de collaboration, puis la lier à une collaboration spécifique :

  • L’enregistrement est une action au niveau du compte ; cette action consiste à packager et copier la ressource dans l’environnement des salles blanches, et renvoie un ID qui est utilisé pour référencer cette ressource. Une ressource est enregistrée dans un registre, soit le registre par défaut de votre compte, soit un registre personnalisé créé par une personne de votre compte. Le registre par défaut est disponible pour tout collaborateur du compte avec des privilèges READ REGISTRY ; un registre personnalisé peut être contrôlé par le créateur du registre.

  • Lier partage une ressource enregistrée avec une collaboration spécifique. Plus précisément, cette action partage une ressource enregistrée avec un ensemble spécifique de collaborateurs dans une collaboration spécifique. Vous pouvez lier une ressource en l’ajoutant à la spécification de collaboration utilisée pour créer une collaboration, ou vous pouvez appeler la procédure de l’API de collaboration appropriée pour lier la ressource à une collaboration.

Les ressources peuvent être ajoutées à une collaboration avant ou après la création de la collaboration.

Contrairement aux collaborations, les ressources sont versionnées. Les versions plus récentes d’une ressource ne remplacent pas les versions plus anciennes. Si vous souhaitez remplacer une ressource par une version plus récente, vous devez également mettre à jour la collaboration pour supprimer l’ancienne version (si vous le souhaitez) et ajouter la nouvelle version.

Le compte qui enregistre une ressource doit être un collaborateur, et doit rejoindre la collaboration avant que toutes les ressources qu’il a enregistrées puissent être disponibles dans la collaboration.

Rejoindre une collaboration

Une collaboration est visible par tous les collaborateurs répertoriés dans la spécification de collaboration. Tous les collaborateurs, y compris le créateur, doivent rejoindre la collaboration. Tous les collaborateurs, à l’exception du propriétaire, doivent vérifier la collaboration avant de pouvoir la rejoindre. L’examen d’une collaboration expose la spécification de la collaboration à la partie invitée. Après avoir examiné la collaboration, l’invité peut alors rejoindre la collaboration. Vous devez rejoindre une collaboration avant que les ressources que vous fournissez à une collaboration ne deviennent utilisables.

Vous pouvez consulter votre statut (invité, en train de rejoindre la collaboration, a rejoint) en appelant GET_STATUS sur la collaboration. La plupart des actions de migration de collaboration, telles que la liaison d’une ressource, l’action de rejoindre une collaboration ou l’activation de résultats, sont soit asynchrones, soit peuvent prendre un certain temps pour se propager à d’autres collaborateurs. Vous devez donc appeler la procédure appropriée pour voir l’état du changement.

Exécution d’une analyse

Les collaborateurs répertoriés comme exécutants d’analyses dans une collaboration peuvent exécuter des requêtes sur toutes les offres de données disponibles dans la collaboration.

Les collaborations prennent en charge les types d’analyses suivants :

  • Requêtes d’analyse modélisées : Un exécutant d’analyse peut exécuter tous les modèles qui lui sont attribués dans la collaboration et voir les résultats de manière synchrone.

  • Analyses d’activation : Si l’offre de données, la collaboration et le modèle le permettent, l’exécutant d’analyses peut activer (enregistrer) les résultats sur le compte Snowflake d’un collaborateur désigné.

  • Analyses SQL en format libre : Si la collaboration et l’offre de données le permettent, les exécutants d’analyses peuvent exécuter des requêtes SQL directement sur les données d’une offre de données. Voir Requêtes SQL libres.

Quitter ou supprimer une collaboration

Vous pouvez quitter une collaboration à tout moment, bien que le propriétaire de la collaboration ne puisse pas le faire, pour cela, il supprime la collaboration pour tout le monde.

  • Les non-propriétaires quittent une collaboration en appelant LEAVE. Toutes les offres de données qu’ils ont fournies seront supprimées de la collaboration. Vous ne pouvez pas rejoindre à nouveau une collaboration après l’avoir quittée.

  • Les propriétaires de collaboration ne peuvent pas quitter une collaboration ; la propriété ne peut pas être transférée. Un propriétaire de collaboration peut supprimer une collaboration pour tous les collaborateurs en appelant TEARDOWN.

Quitter ou supprimer une collaboration est asynchrone. Vous devez appeler GET_STATUS pour contrôler le statut, et appelez LEAVE ou TEARDOWN à nouveau lorsque GET_STATUS affiche le statut LOCAL_DROP_PENDING.

La suppression d’une collaboration n’affecte pas le statut d’enregistrement des ressources liées à la collaboration. Ces ressources peuvent continuer à être utilisées ou liées à de nouvelles collaborations.