Colaboração básica de várias partes

Introdução

Este tópico aborda as etapas para criar uma colaboração básica de várias partes. Ele demonstra como registrar modelos e ofertas de dados, como adicionar dados à versão inicial de uma colaboração e como os colaboradores podem adicionar recursos após a criação da colaboração. Ele também demonstra como executar consultas usando modelos e recursos de dados na colaboração.

Fluxo de trabalho básico de colaboração de sala limpa

Veja a seguir um cenário básico de colaboração de sala limpa de várias partes:

  1. O proprietário da colaboração registra modelos ou ofertas de dados que deseja que apareçam na configuração inicial da colaboração.

  2. O proprietário pode pedir que qualquer colaborador pretendido registre os modelos ou as ofertas de dados que deseja que apareçam na configuração inicial da colaboração. Sendo assim, os colaboradores fornecem para o proprietário os IDs dos recurso dos itens registrados.

  3. O proprietário cria uma colaboração. A colaboração é definida por uma especificação YAML que lista os colaboradores, suas funções e todos os recursos que devem estar presentes na versão inicial da colaboração.

    • Quando uma colaboração é criada, o conjunto de colaboradores e suas funções de colaboração é fixo.

    • Os colaboradores podem adicionar mais recursos após a criação da colaboração, se a função de colaboração deles permitir isso.

    • Se a sua colaboração compartilhar dados com usuários em outras regiões de hospedagem em nuvem, o compartilhador deverá habilitar o preenchimento automático entre nuvens na conta deles.

  4. Os colaboradores revisam e ingressam na colaboração.

  5. Depois disso, os colaboradores poderão vincular recursos adicionais à colaboração, como modelos e ofertas de dados, dependendo das funções de colaboração deles. É possível adicionar mais recursos a uma colaboração a qualquer momento.

  6. Os executores de análise podem executar os modelos atribuídos a eles na colaboração usando todos os dados disponíveis a elas na colaboração. O executor de análise arca com o custo da análise. É possível designar os modelos para retornar os resultados da consulta na resposta ou ativar os resultados para o autor da chamada ou outro colaborador.

As seções a seguir descrevem os detalhes de cada uma dessas etapas.

Criar uma colaboração

Para criar uma colaboração, elabore uma especificação de colaboração que defina todos os colaboradores e as funções deles.

Se você quiser disponibilizar recursos em uma colaboração assim que ela for criada, o proprietário da colaboração registra e vincula os recursos antes de criar a colaboração e inclui os IDs dos recursos na especificação.

Se o proprietário pretende usar recursos de colaboradores, ele também pode solicitar que esses usuários registrem seus recursos e forneçam ao proprietário os IDs dos recursos para incluir na especificação da colaboração. O proprietário também indica na especificação da colaboração o local onde não há nenhum recurso vinculado agora, mas que poderá haver no futuro.

Depois disso, o proprietário chama INITIALIZE para começar a criar a colaboração. Por padrão, INITIALIZE também adiciona automaticamente o proprietário à colaboração. Este é um processo assíncrono, portanto o proprietário deve chamar GET_STATUS até que o status seja JOINED.

O trecho a seguir demonstra como criar e ingressar em uma colaboração.

 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();

Observações sobre o script:

  • A colaboração consiste em dois colaboradores, com os aliases alice e bob. Você poderá usar um ID completo de compartilhamento de dados sempre que usar um alias, mas isso não é muito prático.

  • alice é a proprietária.

  • Ambos alice e bob são executores de análise.

  • Ambos alice e bob são provedores de dados um do outro.

  • Se você é provedor de dados, deve incluir o campo data_offerings. Esse campo pode estar preenchido ou vazio, indicando que não há ofertas de dados agora, mas que elas poderão ser adicionadas posteriormente.

  • alice não está fornecendo dados para bob nem para si mesma, mas poderá fazer isso mais tarde (linhas 14, 22).

  • bob já registrou uma oferta de dados e a forneceu a si mesmo na colaboração inicial (linha 16).

  • bob não está fornecendo dados para alice, mas poderá fazer isso mais tarde (linha 24).

  • Nem alice nem bob ainda tem modelos disponíveis, mas poderão ter mais tarde (linhas 18, 25). Observe que o campo templates é opcional para um executor de análise. Se você omitir esse campo durante a inicialização, os colaboradores ainda poderão atribuir modelos a esse executor de análise posteriormente.

Revisar e ingressar em uma colaboração

Você deve ingressar em uma colaboração para compartilhar recursos e executar análises nela.

  • O criador ingressa automaticamente ao chamar INITIALIZE se auto_join_warehouse foi fornecido. Se auto_join_warehouse não foi fornecido, o criador chama JOIN depois que INITIALIZE é concluído.

  • Os não criadores chamam REVIEW e, depois, JOIN.

    • REVIEW retorna uma visão geral da colaboração e seus recursos. Você pode chamar REVIEW apenas uma vez.

    • JOIN instala a sala limpa de colaboração em sua conta e ingressa na colaboração.

Ambos INITIALIZE e JOIN são procedimentos assíncronos que levam vários minutos para serem concluídos. Você deve chamar GET_STATUS para ver quando cada etapa é concluída.

Importante

Se a região de hospedagem em nuvem da sua conta for diferente da do proprietário da colaboração, REVIEW acionará etapas adicionais de configuração assíncrona. Chame REVIEW várias vezes até retornar uma resposta bem-sucedida, indicando que a configuração foi concluída.

A ingressão é um processo assíncrono. Chame GET_STATUS para ver quando o status aparece como JOINED.

Execute uma análise

Se você tiver a função de executor de análise em uma colaboração, poderá executar análises em fontes de dados compartilhadas com você na colaboração.

As colaborações oferecem suporte a dois tipos de consultas:

  • Análises de modelo. Essas consultas executam um modelo (uma instrução JinjaSQL modelada) vinculado à colaboração. Os modelos podem ser de análise, que retornam resultados imediatamente para você, ou de ativação, que salvam os resultados na conta Snowflake de um participante designado.

  • Consultas SQL de forma livre. Se permitido por um provedor de dados, você poderá acessar ofertas de dados especificadas usando SQL quando fizer login com suas credenciais de colaborador. Você executa as consultas SQL diretamente, sem chamar um procedimento da Collaboration API, acessando o nome da exibição totalmente qualificado exposto pela de colaboração.

O executor de análise arca com o custo da execução de uma análise.

A especificação da colaboração determina se você pode executar um modelo, ativar resultados ou fazer consultas SQL de forma livre. Suas capacidades, assim como os dados e os modelos disponíveis para você usar, estão descritos na especificação da colaboração.

Nota

As colunas das fontes de dados podem ter novos nomes quando expostas ao modelo ou usuário. Consulte Renomeação da coluna de origem para saber como e quando as colunas de origem são renomeadas. Modelos e argumentos fornecidos pelo usuário (como um nome de coluna de junção) deverão usar o nome final, não o nome original, se a coluna for renomeada.

Saiba mais sobre todos esses tipos de análise nas seções a seguir.

Executar uma análise com base em um modelo

Para executar uma análise com base em um modelo, visualize a lista de modelos que você pode executar, visualize a lista de ofertas de dados que você pode usar e chame RUN com seus valores, seja como parâmetros individuais ou como uma especificação da análise no formato YAML.

As tabelas que você passa para o campo source_tables na configuração de execução preenchem o parâmetro source_table no modelo. O parâmetro my_table do modelo não é preenchido ou usado, a menos que você use o Snowflake Standard Edition com seus próprios dados.

Nota

A instalação de recursos é assíncrona. Se um modelo acabou de ser instalado, pode levar algum tempo para ficar disponível para execução. Se o modelo incluir um pacote de código, poderá levar mais tempo para que o modelo fique disponível. Veja como determinar quando um pacote de código está disponível.

O exemplo a seguir lista as ofertas de dados e os modelos que o usuário pode acessar e, em seguida, executa uma análise usando o modelo sales_join_template (que já se presume ser listado por VIEW_TEMPLATES), passando cinco argumentos nomeados para o modelo.

-- 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
  $$ );

Habilitar e executar consultas SQL de forma livre nos dados

Um provedor de dados pode conceder permissão ao executor de análise para executar consultas SQL arbitrárias em suas ofertas de dados. Isso significa que o executor da análise pode executar uma consulta SQL arbitrária diretamente na oferta de dados, em vez de chamar um modelo.

Para saber mais sobre consultas SQL de forma livre, consulte Consultas SQL de forma livre.

Executar uma análise com seus próprios dados ao usar a Standard Edition

Se você usa a Standard Edition, pode executar uma análise da maneira padrão. Entretanto, não é possível vincular dados à colaboração para compartilhar com outros usuários. A única maneira de passar seus próprios conjuntos de dados para um modelo é usando a técnica descrita aqui.

Para usar seus próprios dados em uma colaboração no Snowflake Standard Edition:

  1. Registre sua oferta de dados chamando REGISTER_DATA_OFFERING.

  2. Chame LINK_LOCAL_DATA_OFFERING para vincular seus dados à colaboração para você usar. Nenhum outro colaborador pode ver ou acessar dados vinculados localmente.

  3. Use o ID da oferta de dados quando você chamar RUN.

  • Se você usa a versão parametrizada de RUN, passe os IDs das ofertas de dados para o parâmetro local_template_view_names.

  • Se você usa a versão YAML de RUN, forneça os IDs das ofertas de dados na estrofe local_view_mappings.my_tables da solicitação.

  • Se você usa a versão parametrizada de RUN, passe as IDs das ofertas de dados para o parâmetro local_template_view_names.

Dica

local_template_view_names e``local_view_mappings.my_tables`` preenchem o parâmetro my_table no modelo.

O exemplo a seguir mostra como executar um modelo usando a versão de formato YAML do procedimento de execução. Este exemplo inclui o campo my_tables, que é preenchido com a chamada de 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
  $$ );

Ativar os resultados

Se o provedor de dados e a especificação da colaboração permitirem, você poderá salvar os resultados da análise em sua própria conta Snowflake ou na conta Snowflake de um colaborador designado. Um modelo ativa os resultados ou retorna os resultados imediatamente, não ambos.

Para saber mais sobre ativação, consulte Ativação de resultados de consulta.

Sair ou excluir uma colaboração

  • Para sair de uma colaboração, os não proprietários chamam LEAVE. Todas as ofertas de dados fornecidas por eles serão removidas da colaboração. Não é possível reingressar em uma colaboração depois que você sai dela.

  • Os proprietários da colaboração não podem sair de uma colaboração porque a propriedade não pode ser transferida. Um proprietário de colaboração pode descartar uma colaboração para todos os colaboradores chamando TEARDOWN.

Ambos os processos são assíncronos. Você deve chamar GET_STATUS para monitorar o status e chamar LEAVE ou TEARDOWN novamente quando GET_STATUS mostra o status como LOCAL_DROP_PENDING.

Exemplos

Os seguintes exemplos SQL demonstram como criar e executar uma colaboração básica:

Exemplo de colaboração de duas partes

O exemplo a seguir demonstra uma colaboração de duas partes, em que uma parte (chamada «alice») é criadora da colaboração, provedora de dados para si mesma e para «bob» e executora de análise. «Bob» é provedor de dados para si mesmo e para «alice», e também é executor de análise.

O exemplo demonstra as seguintes ações:

  • Criar uma colaboração

  • Registrar modelos e ofertas de dados

  • Vincular um modelo e uma oferta de dados no momento da criação da colaboração

  • Ingressar em uma colaboração

  • Vincular recursos adicionais a uma colaboração existente.

  • Executar uma análise

Para executar este exemplo, você deve ter duas contas separadas com o Snowflake Data Clean Rooms instalado.

Você pode baixar os arquivos e carregá-los em sua conta Snowflake ou copiar e colar o código de exemplo em planilhas em duas contas separadas usando o Snowsight.

Baixe os arquivos SQL de origem e carregue-os em duas contas separadas que tenham o Snowflake Data Clean Rooms instalado:

Exemplo de colaboração de uma parte

Este exemplo demonstra como criar e usar uma colaboração se você tem apenas uma conta para teste.

O exemplo demonstra a criação de uma colaboração com uma oferta de dados e um modelo, depois a adição de outra oferta de dados e modelo após a criação da colaboração e a execução de análises.

Você pode baixar o arquivo e carregá-lo em sua conta Snowflake ou copiar e colar o código de exemplo em uma planilha usando o Snowsight.

Baixe o arquivo SQL de origem e carregue-o em uma conta Snowflake que tenha o Snowflake Data Clean Rooms instalado: