Collaboration multipartite de base

Introduction

Cette rubrique présente les étapes à suivre pour créer une collaboration multipartite de base. Elle montre comment enregistrer des modèles et des offres de données, comment ajouter des données à la version initiale d’une collaboration, et comment les collaborateurs peuvent ajouter des ressources après la création de la collaboration. Elle montre également comment exécuter des requêtes en utilisant des modèles et des ressources de données dans la collaboration.

Workflow de collaboration de base dans les salles blanches

Voici un scénario de collaboration de salle blanche multipartite de base :

  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 des éléments au propriétaire.

  3. Ensuite, le propriétaire crée une collaboration. La collaboration est définie par une spécification YAML de collaboration qui répertorie les collaborateurs, leurs rôles et toutes les ressources qui doivent être présentes dans la version initiale de la collaboration.

    • Lorsqu’une collaboration est créée, l’ensemble des collaborateurs et de leurs rôles de collaboration est fixe.

    • Des ressources supplémentaires peuvent être ajoutées par les collaborateurs après la création de la collaboration, si leur rôle de collaboration le permet.

    • Si votre collaboration partage des données avec des utilisateurs dans d’autres régions d’hébergement Cloud, la personne à l’origine du partage doit :ref:` activer l’exécution automatique inter-Cloud sur leur compte <label-dcr_collab_enabling_laf>`.

  4. Les collaborateurs examinent et rejoignent la collaboration.

  5. Les collaborateurs peuvent alors éventuellement lier des ressources supplémentaires à la collaboration, comme les modèles et les offres de données, en fonction de leurs rôles de collaboration. Des ressources supplémentaires peuvent être ajoutées à une collaboration à tout moment.

  6. Les exécutants d’analyses peuvent exécuter tous les modèles qui leur sont attribués dans la collaboration, en utilisant toutes les données disponibles pour eux dans la collaboration. Le gestionnaire d’analyses prend en charge le coût de l’analyse. Les modèles peuvent être conçus soit pour renvoyer les résultats de la requête dans la réponse, soit pour activer les résultats pour l’appelant ou un autre collaborateur.

Les sections suivantes décrivent les détails de chacune de ces étapes.

Créer une collaboration

Pour créer une collaboration, vous concevez une spécification de collaboration qui définit l’ensemble des collaborateurs et leurs rôles de collaboration.

Si vous souhaitez mettre des ressources à disposition dans une collaboration dès sa création, le propriétaire de la collaboration enregistre et relie ces ressources avant de créer la collaboration, et inclut les IDs des ressources dans la spécification de collaboration.

Si le propriétaire prévoit d’utiliser des ressources provenant de collaborateurs, il peut également inviter ces utilisateurs à enregistrer leurs ressources et à donner au propriétaire les IDs de ressources à inclure dans la spécification de collaboration. Le propriétaire indique également dans la spécification de collaboration où aucune ressource n’est liée pour le moment, mais peut être liée à l’avenir.

Le propriétaire appelle alors INITIALIZE pour commencer à créer la collaboration. Par défaut, INITIALIZE joint également automatiquement le propriétaire à la collaboration. Il s’agit d’un processus asynchrone ; le propriétaire doit donc appeler GET_STATUS jusqu’à ce que le statut soit JOINED.

L’extrait suivant montre la création et la jonction d’une collaboration.

 1  CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.INITIALIZE(
 2    $$
 3    api_version: 2.0.0
 4    spec_type: collaboration
 5    name: my_first_collaboration
 6    owner: alice
 7    collaborator_identifier_aliases:
 8      alice: example_com.acct_abc
 9      bob: another_example.acct_xyz
10    analysis_runners:
11      bob:
12        data_providers:
13          alice:
14            data_offerings: [] -- alice has not provided data to bob, but can do so in the future.
15          bob:
16            data_offerings: [customers_v1]  -- bob has registered a data offering and made it available to himself.
17        templates: []   -- No templates available yet for bob.
18      alice:
19        data_providers:
20          alice:
21            data_offerings: []
22          bob:
23            data_offerings: []
24        templates: []
25    $$,
26    'APP_WH'            -- Use this warehouse for initialization.
27  );                    --  XSMALL or SMALL warehouses are recommended for initialization.
28  SET collaboration_name = 'my_first_collaboration';
29
30  -- INITIALIZE automatically joins the owner. Check status until JOINED.
31  CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.GET_STATUS($collaboration_name);
32
33  -- Collaboration is visible here when it's joined.
34  CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_COLLABORATIONS();

Notes sur le script :

  • La collaboration est composée de deux collaborateurs, avec les alias alice et``bob``. Vous pouvez utiliser un ID de partage de données complet partout où vous utilisez un alias, mais cela est beaucoup moins convivial.

  • alice est le propriétaire.

  • alice et bob sont des exécutants d’analyses.

  • alice et bob sont des fournisseurs de données les uns pour les autres.

  • Si vous êtes un fournisseur de données, vous devez inclure le champ data_offerings. Ce champ peut être rempli ou vide, indiquant qu’il n’existe pas d’offre de données pour le moment, mais qu’elles peuvent être ajoutées ultérieurement.

  • alice ne fournit pas de données à bob ou lui-même, mais peut le faire plus tard (lignes 14, 22).

  • bob a déjà enregistré une offre de données et se l’est fournie dans la collaboration initiale (ligne 16).

  • bob ne fournit pas de données à alice, mais peut le faire plus tard (ligne 24).

  • Ni alice ni bob ne dispose encore de modèles, mais ils peuvent être attribués ultérieurement (lignes 18, 25). Notez que le champ templates est facultatif pour un exécutant d’analyse. Si vous omettez ce champ lors de l’initialisation, les collaborateurs peuvent toujours affecter ultérieurement des modèles à cet exécutant d’analyse.

Examiner et rejoindre une collaboration

Vous devez rejoindre une collaboration pour partager des ressources et exécuter des analyses dans la collaboration.

  • Le créateur se joint automatiquement lors de l’appel de INITIALIZE si auto_join_warehouse est fourni. Si auto_join_warehouse n’est pas fourni, le créateur appelle JOIN une fois INITIALIZE terminé.

  • Les non-créateurs appellent REVIEW, puis JOIN.

    • REVIEW renvoie une vue d’ensemble de la collaboration et de ses ressources. Vous pouvez appeler REVIEW une seule fois.

    • JOIN installe la salle blanche de collaboration sur votre compte et rejoint la collaboration.

INITIALIZE et JOIN sont des procédures asynchrones qui prennent plusieurs minutes à s’exécuter. Vous devez appeler GET_STATUS pour voir quand chaque étape est terminée.

Important

Si la région d’hébergement Cloud de votre compte est différente de celle du propriétaire de la collaboration, REVIEW déclenche des étapes de configuration asynchrones supplémentaires. Appelez REVIEW à plusieurs reprises jusqu’à ce qu’il renvoie une réponse positive, indiquant que la configuration est terminée.

La jointure est un processus asynchrone ; appelez GET_STATUS pour voir quand votre statut est annoncé comme JOINED.

Effectuer une analyse

Si vous disposez du rôle d’exécutant d’analyses dans une collaboration, vous pouvez exécuter des analyses sur des sources de données partagées avec vous dans la collaboration.

Les collaborations prennent en charge deux types de requêtes :

  • Analyses de modèles. Ces requêtes exécutent un modèle (un modèle d’instruction JinjaSQL) lié à la collaboration. Les modèles peuvent être soit des modèles d’analyse, qui vous renvoient immédiatement les résultats, soit des modèles d’activation, qui enregistrent les résultats sur le compte Snowflake d’un participant désigné.

  • Requêtes SQL de forme libre. Si un fournisseur de données l’autorise, vous pouvez accéder à des offres de données spécifiées en utilisant SQL lorsque vous êtes connecté avec vos identifiants de connexion de collaborateur. Vous exécutez les requêtes SQL directement, sans appeler une procédure API de collaboration, en accédant au nom de la vue complet exposé par la collaboration.

Le gestionnaire d’analyses prend en charge le coût d’exécution d’une analyse.

La spécification de collaboration détermine si vous pouvez exécuter un modèle, activer des résultats ou exécuter des requêtes SQL de forme libre. Vos capacités, ainsi que les données et modèles à votre disposition, sont décrits dans la spécification de collaboration.

Note

Les colonnes des sources de données peuvent porter de nouveaux noms lorsqu’elles sont exposées au modèle ou à l’utilisateur. Voir Renommage de colonne source pour savoir comment et quand les colonnes sources sont renommées. Les modèles et les arguments fournis par l’utilisateur (tels qu’un nom de colonne de jointure) doivent utiliser le nom final et non le nom d’origine si la colonne est renommée.

Pour en savoir plus sur tous ces types d’analyse, consultez les sections suivantes.

Exécuter une analyse à partir d’un modèle

Pour exécuter une analyse à partir d’un modèle, affichez la liste des modèles que vous pouvez exécuter, affichez la liste des offres de données que vous pouvez utiliser, puis appelez RUN avec vos valeurs sous forme de paramètres individuels ou de spécification d’analyse au format YAML.

Les tables que vous transmettez dans le champ source_tables dans la configuration d’exécution renseignent le paramètre source_table dans le modèle. Le paramètre du modèle my_table n’est pas renseigné ou utilisé, sauf si vous utilisez Snowflake Standard Edition avec vos propres données.

Note

L’installation des ressources est asynchrone. Si un modèle vient d’être installé, un court délai peut s’écouler avant qu’il soit disponible pour être exécuté. Si le modèle comprend un bundle de codes, un délai supplémentaire peut être nécessaire avant que le modèle ne soit disponible. Voir comment déterminer quand un bundle de codes est disponible.

L’exemple suivant répertorie les offres de données et les modèles auxquels l’utilisateur peut accéder, puis exécute une analyse à l’aide du modèle sales_join_template (qui est supposé être répertorié par VIEW_TEMPLATES), en transmettant cinq arguments nommés au modèle.

-- See which data offerings are available.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_DATA_OFFERINGS($collaboration_name);

-- See which templates you can run.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_TEMPLATES($collaboration_name);

-- Pass in the arguments in analysis YAML format.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.RUN(
  $collaboration_name,
  $$
    api_version: 2.0.0
    spec_type: analysis
    name: My_analysis
    description: Sales results Q2 2025
    template: sales_join_template

    template_configuration:
      view_mappings:
        source_tables:
          -  user1_alias.data_offering_v1.table_1
          -  user2_alias.another_data_offering_v1.table_2
      arguments:                                            -- The template defines conv_purchase_id and the other four arguments.
         conv_purchase_id: PURCHASE_ID                      -- You must examine a template to see which arguments it supports.
         conv_purchase_amount: PURCHASE_AMOUNT
         publisher_impression_id: IMPRESSION_ID
         publisher_campaign_name: CAMPAIGN_NAME
         publisher_device_type: DEVICE_TYPE
  $$ );

Activer et exécuter des requêtes SQL de forme libre sur vos données

Un fournisseur de données peut accorder à la personne exécutant l’analyse l’autorisation d’exécuter des requêtes SQL arbitraires par rapport à leurs offres de données. Cela signifie que la personne qui exécute l’analyse peut exécuter une requête SQL arbitraire directement sur l’offre de données, plutôt que d’appeler un modèle.

Pour en savoir plus sur les requêtes SQL de forme libre, voir Requêtes SQL libres.

Exécuter une analyse avec vos propres données lorsque vous utilisez Standard Edition

Si vous utilisez Standard Edition, vous pouvez exécuter une analyse de la manière standard. En revanche, vous ne pouvez pas lier des données dans la collaboration pour les partager avec d’autres utilisateurs. La seule façon de transmettre vos propres ensembles de données dans un modèle est d’utiliser la technique décrite ici.

Pour utiliser vos propres données dans une collaboration sur Snowflake Standard Edition :

  1. Enregistrez votre offre de données en appelant REGISTER_DATA_OFFERING.

  2. Appelez LINK_LOCAL_DATA_OFFERING pour lier vos données dans la collaboration à utiliser. Aucun autre collaborateur ne peut voir ou accéder aux données liées localement.

  3. Utilisez l’ID de l’offre de données lorsque vous appelez RUN.

  • Si vous utilisez la version paramétrée de RUN, transmettez vos IDs d’offres de données au paramètre local_template_view_names

  • Si vous utilisez la version YAML deRUN, fournissez vos IDs d’offres de données dans la section de la requête local_view_mappings.my_tables

  • Si vous utilisez la version paramétrée de RUN, transmettez vos IDs d’offres de données au paramètre local_template_view_names.

Astuce

local_template_view_names et``local_view_mappings.my_tables`` remplissent le paramètre my_table dans le modèle.

L’exemple suivant montre comment exécuter un modèle à l’aide de la version au format YAML de la procédure d’exécution. Cet exemple comprend le champ my_tables, qui est renseigné en appelant LINK_LOCAL_DATA_OFFERING.

-- See what data offerings are available. Your own local data will be listed here as well.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_DATA_OFFERINGS($collaboration_name);

-- Pass in the arguments in analysis YAML format.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.RUN(
  $collaboration_name,
  $$
    api_version: 2.0.0
    spec_type: analysis
    name: my_analysis
    description: Cross-purchase results for Q4 2025
    template: mytemplate_v1

    template_configuration:
      view_mappings:
        source_tables:
          - ADVERTISER1.ADVERTISER_DATA_V1.CUSTOMERS
          - PUBLISHER.ADVERTISER_DATA_V1.CUSTOMERS
      local_view_mappings:
        my_tables:
          - PARTNER.MY_DATA_V1.MY_CUSTOMERS # Populate my_table array with my own table.
      arguments:  # Template arguments, as name: value pairs
         conv_purchase_id: PURCHASE_ID
         conv_purchase_amount: PURCHASE_AMOUNT
         publisher_impression_id: IMPRESSION_ID
         publisher_campaign_name: CAMPAIGN_NAME
         publisher_device_type: DEVICE_TYPE
  $$ );

Activer les résultats

Si le fournisseur de données et les spécifications de collaboration l’autorisent, vous pouvez enregistrer les résultats de l’analyse sur votre propre compte Snowflake, ou sur le compte Snowflake d’un collaborateur désigné. Un modèle active des résultats ou renvoie des résultats immédiatement, et non les deux.

Pour en savoir plus sur l’activation, voir Activation des résultats de la requête.

Quitter ou supprimer une collaboration

  • 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 car 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.

Les deux processus sont asynchrones. 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.

Exemples

Les exemples SQL suivants montrent comment créer et exécuter une collaboration de base :

Exemple de collaboration entre deux parties

L’exemple suivant illustre une collaboration entre deux parties, où une partie (nommée « alice ») est le créateur de la collaboration, un fournisseur de données pour elle-même et bob et un exécuteur d’analyses. « Bob » est u fournisseur de données pour lui-même et « alice » et est également un exécuteur d’analyses.

Cet exemple illustre les actions suivantes :

  • Création d’une collaboration.

  • Enregistrement des modèles et des offres de données.

  • Liaison d’un modèle et d’une offre de données au moment de la création de la collaboration.

  • Rejoindre une collaboration.

  • Liaison de ressources supplémentaires à une collaboration existante.

  • Exécuter une analyse.

Pour exécuter cet exemple, vous devez disposer de deux comptes distincts avec Snowflake Data Clean Rooms installé.

Vous pouvez soit télécharger les fichiers et les importer sur votre compte Snowflake, soit copier et coller le code d’exemple dans les feuilles de calcul de deux comptes distincts en utilisant Snowsight.

Téléchargez les fichiers SQL sources, puis importez-les dans deux comptes distincts qui disposent de Snowflake Data Clean Rooms :

Exemple de collaboration à partie unique

Cet exemple montre comment créer et utiliser une collaboration si vous n’avez qu’un seul compte pour les tests.

L’exemple illustre la création d’une collaboration avec une offre de données et un modèle, puis l’ajout d’une autre offre de données et d’un autre modèle après la création de la collaboration et l’exécution d’analyses.

Vous pouvez soit télécharger le fichier et l’importer sur votre compte Snowflake, soit copier et coller le code d’exemple dans une feuille de calcul en utilisant Snowsight.

Téléchargez le fichier SQL source, puis importez-le dans un compte Snowflake avec Snowflake Data Clean Rooms :

  • :download :Feuille de calcul de collaboration du compte unique </samples/clean-rooms/demo-collaboration-single-user.sql>