Visão geral do Snowflake Data Clean Rooms

Este tópico apresenta um guia de alto nível para os componentes que compõem uma colaboração e descreve as etapas básicas de criação ou uso de uma colaboração do Snowflake Data Clean Room.

Requisitos

  • Você deve ter atualizado para a versão mais recente do Snowflake Data Clean Rooms.

  • Você precisa de acesso à Data Clean Rooms Collaboration API para ver ou gerenciar colaborações. Para obter mais informações, consulte Gerenciando o acesso a colaborações, recursos e dados.

  • Provedores de dados devem usar o Snowflake Enterprise Edition. Proprietários e executores de análise podem usar a Standard Edition.

  • Se você usar o Snowflake Standard Edition, não será possível compartilhar dados por meio de uma sala limpa de dados com aplicação de políticas. No entanto, você pode acessar ofertas de dados de outros colaboradores ou usar os próprios dados sem políticas ou compartilhá-los.

  • Para ativar os resultados em outra conta Snowflake, você deve usar o Snowflake Enterprise Edition.

  • Contas de avaliação não são compatíveis com Snowflake Data Clean Rooms.

Funções e recursos em uma colaboração

Para saber como usar uma colaboração, você deve primeiro entender as funções e os recursos de colaboração.

Funções de colaboração

As seguintes funções estão disponíveis em uma colaboração. Estas funções definem as capacidades de alto nível do colaborador.

  • Proprietário: o proprietário define, cria e detém a propriedade da colaboração, além de definir quais colaboradores são convidados e as funções de colaboração. Um proprietário não é automaticamente um executor de análise ou provedor de dados e não tem nenhum privilégio de execução elevado. As principais habilidades do proprietário são criar a sala limpa, atribuir funções de colaboração, determinar quem pode compartilhar dados com quem e desinstalar a sala limpa. Uma colaboração pode ter apenas um proprietário.

  • Provedor de dados: apresenta ofertas de dados, como tabelas e exibições, para uma colaboração e especifica quais executores de análise podem usá-las. Isto é, a conta A é provedora de dados das contas B e C, conforme indicado na especificação da colaboração.

  • Executor de análise: executa modelos permitidos em ofertas de dados permitidas, conforme determinado pela especificação da colaboração.

Essas funções são designadas na especificação da colaboração usada para criar a colaboração.

Um colaborador podem receber várias funções de colaboração, e (exceto a função de proprietário) uma função de colaboração pode ser atribuída a vários colaboradores.

Recursos de colaboração

Uma colaboração contém recursos, incluindo ofertas de dados, modelos e pacotes de código. Todos os recursos, e a própria colaboração, são definidos por especificações YAML.

As colaborações são compatíveis com os seguintes tipos de recursos:

  • Modelo: uma consulta JinjaSQL que os executores de análise podem executar na colaboração. Dependendo do tipo de modelo, os resultados podem ser entregues diretamente ou ativados (salvos) na conta Snowflake de um colaborador designado. Os executores de análise podem passar valores para um modelo em tempo de execução para substituir as variáveis de modelo usadas para nomes de colunas, cláusulas WHERE e outros elementos de consulta.

  • Oferta de dados: um pacote de uma ou mais tabelas compartilhadas por um provedor de dados com executores de análise específicos. Oferta de dados é uma exibição ativa dos dados de origem, não um instantâneo, e sua especificação controla quais colunas são expostas e quais políticas são aplicadas.

  • Pacote de código: um conjunto de funções ou procedimentos Python personalizados que podem ser chamados por um modelo. Os pacotes de código permitem estender os recursos dos modelos com lógica definida pelo usuário, como modelos de machine learning ou transformações personalizadas.

Exemplo de especificação de sala limpa

Esta é a especificação YAML para uma sala limpa básica que envolve dois participantes, alice (um alias para a conta corp1.acct123) e bob (um alias para a conta corp2.acctxyz). A especificação atribui funções a cada usuário e vincula duas ofertas de dados à colaboração.

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

Esta colaboração simples inclui os seguintes recursos e funções de colaboração:

  • alice é proprietária da colaboração, executora de análise e provedora de dados para si mesma e para bob.

  • bob é executor de análise e provedor de dados para alice, mas não para si mesmo.

  • alice pode executar template1, bob pode executar template2.

Outras observações sobre esta colaboração:

  • Nenhum colaborador novo pode ser adicionado depois que a colaboração foi criada com base nesta especificação.

  • Ambos alice e bob podem adicionar novos modelos e compartilhá-los com outros colaboradores.

  • As funções não podem ser alteradas, portanto, bob não pode se tornar um provedor de dados para si mesmo no futuro.

  • Qualquer provedor de dados pode adicionar ou remover ofertas de dados da lista de ofertas de dados dele, mesmo depois que a colaboração foi criada.

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

Veja a seguir um cenário simples de colaboração de sala limpa:

  1. Opcionalmente, 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 os IDs dos recurso dos itens que eles registraram.

  3. Na sequência, o proprietário cria uma colaboração. A especificação da colaboração define os colaboradores, suas funções e os recursos que devem estar disponíveis no estado inicial da colaboração.

    • Neste ponto, o conjunto de colaboradores e suas funções de colaboração é fixo.

    • Se a colaboração incluir colaboradores em outras regiões de hospedagem na nuvem, eles deverão habilitar o preenchimento automático entre nuvens nas contas deles para que possam revisar e ingressar na colaboração.

    • Quando a colaboração é criada, ela fica visível e todos os colaboradores na especificação da colaboração podem ingressar nela.

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

  5. Em seguida, os colaboradores podem vincular recursos à colaboração, conforme apropriado às suas funções. Os provedores de dados podem vincular ofertas de dados a seus executores de análise. Qualquer função pode solicitar para adicionar um modelo e compartilhá-lo com qualquer outro colaborador.

  6. Depois disso, os executores de análise podem executar qualquer modelo compartilhado com eles na colaboração, usando uma oferta de dados compartilhada com eles na colaboração. O executor de análise arca com o custo da análise. Os modelos podem retornar resultados de consulta na resposta ou ativar resultados para o autor da chamada ou outro colaborador.

Saiba mais

Criando uma colaboração

Todos os usuário do Snowflake Data Clean Rooms com privilégios apropriados podem criar uma sala limpa. Uma sala limpa é definida usando uma especificação YAML que determina todos os colaboradores e suas funções relativas na colaboração, além de todos os recursos que possam estar presentes na configuração inicial da colaboração. (Os proprietários dos recursos devem ingressar para que os recursos possam ser usados.) Os recursos podem ser adicionados ou removidos após a criação da colaboração, mas a lista de colaboradores e suas funções relativas é fixa após a criação da colaboração.

As colaborações não têm controle de versão: uma colaboração pode ser alterada com a adição ou remoção de recursos, mas as alterações não são rastreadas.

Adicionando recursos a uma colaboração

Uma colaboração pode acessar recursos, incluindo modelos, ofertas de dados e pacotes de código. Para usar um recurso em uma colaboração, você deve primeiro registrá-lo no ambiente de salas limpas de colaboração e, em seguida, vinculá-lo a uma colaboração específica:

  • Registro é uma ação no nível da conta; ele empacota e copia o recurso para o ambiente de salas limpas e retorna um ID que é usado para fazer referência a esse recurso. Um recurso é gravado em um registro, seja o registro padrão da sua conta ou um registro personalizado criado por alguém em sua conta. O registro padrão está disponível para qualquer colaborador na conta com os privilégios READ REGISTRY. Um registro personalizado pode ter acesso controlado pelo criador do registro.

  • A vinculação compartilha um recurso registrado com uma colaboração específica. Mais especificamente, ela compartilha um recurso registrado com um conjunto específico de colaboradores em uma determinada colaboração. Você pode vincular um recurso adicionando-o à especificação da colaboração usada para criar a colaboração ou pode chamar o procedimento apropriado da Collaboration API para vincular o recurso a uma colaboração.

Os recursos podem ser adicionados a uma colaboração no momento da criação ou depois que ela é criada.

Ao contrário das colaborações, os recursos têm controle de versão. As versões mais recentes de um recurso não substituem as versões mais antigas. Se você quiser substituir um recurso por uma versão mais recente, também deve atualizar a colaboração para remover a versão antiga (opcional) e adicionar a nova versão.

A conta que registra um recurso deve ser de colaborador e ingressar na colaboração para que os recursos que ela registrar fiquem disponível na colaboração.

Ingressando em uma colaboração

Uma colaboração fica visível para todos os colaboradores listados na especificação dela. Todos os colaboradores, incluindo o criador, devem ingressar na colaboração. Todos os colaboradores, exceto o proprietário, devem revisar a colaboração antes de ingressar. A revisão de uma colaboração expõe sua especificação à parte convidada. Após a revisão da colaboração, o convidado poderá ingressar nela. Você deve ingressar em uma colaboração para que os recursos que fornece nela se tornem utilizáveis.

Você pode ver seu status de ingresso (convidado, ingressando, ingressado) chamando GET_STATUS na colaboração. A maioria das ações de mutação de colaboração, como vincular um recurso, ingressar em uma colaboração ou ativar os resultados, é assíncrona ou pode levar algum tempo para se propagar para outros colaboradores, portanto você deve chamar o procedimento apropriado para ver o estado da alteração.

Executando uma análise

Os colaboradores listados como executores de análise em uma colaboração podem executar consultas nas ofertas de dados disponíveis para eles na colaboração.

As colaborações são compatíveis com os seguintes tipos de análises:

  • Consultas de análises modeladas: um executor de análise pode executar qualquer modelo atribuído a ele na colaboração e ver os resultados de forma síncrona.

  • Análises de ativação: se a oferta de dados, a colaboração e o modelo permitirem, o executor da análise poderá ativar (salvar) os resultados na conta Snowflake de um colaborador designado.

  • Análises SQL de forma livre: se a colaboração e a oferta de dados permitirem, os executores de análise poderão executar consultas SQL diretamente nos dados de uma oferta de dados. Consulte Consultas SQL de forma livre.

Sair ou excluir uma colaboração

Você pode sair de uma colaboração a qualquer momento, embora o proprietário da colaboração não possa sair de uma colaboração e, em vez disso, excluir a colaboração de todos.

  • 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 de colaboração não podem sair de uma colaboração: a propriedade não pode ser transferida. Um proprietário de colaboração pode descartar uma colaboração para todos os colaboradores chamando TEARDOWN.

Sair ou excluir uma colaboração é uma tarefa assíncrona. 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.

Excluir uma colaboração não afeta o status de registro de nenhum recurso vinculado a ela. Esses recursos podem continuar sendo usados ou vinculados a novas colaborações.