Tutorial: como começar a usar o Snowflake Data Clean Rooms no código

Introdução

Este tutorial é destinado a desenvolvedores que criarão ou usarão o Snowflake Data Clean Rooms no código. Este tutorial usa código SQL, mas você pode adaptar as informações mostradas aqui para criar e usar clean rooms em qualquer linguagem de codificação compatível com o Snowflake.

O que você aprenderá

Este tutorial mostrará a você como criar e compartilhar um modelo básico em uma clean room usando a Snowflake Data Clean Room API. Ele também mostrará como executar uma análise usando a API em uma clean room compartilhada com você.

Este tutorial criará uma clean room com uma tabela fornecida pelo provedor, uma tabela fornecida pelo consumidor e um modelo definido pelo provedor que define uma consulta JOIN muito simples nas duas tabelas. O consumidor executa o modelo.

Requisitos

  • Você deve ter um conhecimento básico do Snowflake e também deve ler Sobre o Snowflake Data Clean Rooms antes de iniciar este tutorial.

  • Você deve ter acesso a duas contas Snowflake. Uma será usada como uma conta de provedor (a conta que cria a clean room) e a outra será usada como uma conta de consumidor (aquela com a qual é compartilhada e que executa a consulta).

  • Ambas as contas devem ter o ambiente do Snowflake Data Clean Room instalado. Se não tiver o ambiente instalado em cada conta, você pode instalá-lo por conta própria ou pedir a um administrador Snowflake que o instale para você.

  • Ambas as contas devem ser contas de capacidade, e não contas sob demanda.

  • Ambas as contas devem estar na mesma organização no Snowflake.

  • A conta de provedor deve ser Enterprise Edition ou superior. A conta de consumidor pode ser Standard Edition ou superior.

  • A conta de consumidor deve ser adicionada à página Collaborators no aplicativo da Web na conta de provedor.

  • Ambas as contas devem receber SAMOOHA_APP_ROLE.

  • Para este tutorial, ambas as contas devem estar na mesma região de nuvem. Você pode determinar sua região de nuvem executando SELECT CURRENT_REGION();

  • Para este tutorial, ambas as contas devem estar na mesma organização.

Configure seu ambiente

Peça ao administrador da clean room para adicionar você como usuário em duas contas diferentes. Escolha uma para ser o provedor e outra para ser o consumidor.

  1. Faça login no Snowsight em duas guias separadas do navegador, uma para cada conta. Decida qual conta você usará como provedor e qual como consumidor.

  2. Abra um novo notebook em cada conta. Nomeie o notebook do provedor como “Provedor de teste” e o notebook do consumidor como “Consumidor de teste”.

O restante deste tutorial indicará se as ações desejadas devem ser executadas na conta de provedor ou consumidor.

Provedor: visão geral

Aqui está um resumo das etapas que você deve seguir para criar uma clean room:

  1. Crie dados de teste para compartilhar em sua clean room.

  2. Crie sua clean room.

  3. Leve os dados que você criou para a clean room.

  4. Defina permissões de junção em seus dados para especificar quais colunas podem ser unidas quando consultadas pelos consumidores.

  5. Crie um modelo para sua clean room. Um modelo de clean room é gravado em JinjaSQL e é avaliado como uma consulta SQL em tempo de execução. A maioria dos modelos inclui variáveis que permitem que os colaboradores especifiquem nomes de tabela e coluna, condições da cláusula WHERE e muito mais, em tempo de execução. Um colaborador de clean room escolhe e executa um modelo em uma clean room.

  6. Especifique a versão padrão da clean room.

  7. Adicione os consumidores que podem acessar sua clean room. Neste tutorial, os consumidores devem ser usuários Snowflake com contas aprovadas pelo administrador da clean room.

  8. Publique a clean room para disponibilizá-la aos seus consumidores convidados.

Nota

O termo colaborador é usado acima para modelos porque, dependendo de como a clean room está configurada, tanto os provedores quanto os consumidores podem criar ou executar modelos. Este tutorial mostra apenas como habilitar os modelos executados pelo consumidor.

Provedor: crie dados de teste

Comece a trabalhar em seu notebook de conta de provedor.

Primeiro, você criará uma tabela com base em mil linhas de dados de teste de amostra da tabela SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS. Você usará essa tabela como os dados do provedor na clean room.

Use uma função que permita que você crie um banco de dados. O exemplo aqui usa ACCOUNTADMIN, mas você pode usar qualquer função que permita a criação de uma tabela.

USE WAREHOUSE app_wh;
USE ROLE ACCOUNTADMIN;
-- Using ACCOUNTADMIN role because you need a role that allows you to create a database.
-- Feel free to use any other role that can create a database.

-- Generate a provider dataset based on the first 1,000 rows of sample data.
CREATE DATABASE IF NOT EXISTS cleanroom_tut_db;
CREATE SCHEMA IF NOT EXISTS cleanroom_tut_db.cleanroom_tut_sch;

CREATE TABLE IF NOT EXISTS cleanroom_tut_db.cleanroom_tut_sch.demo_provider_table AS
  SELECT TOP 1000 * FROM SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS ORDER BY HASHED_EMAIL ASC;

DESCRIBE TABLE cleanroom_tut_db.cleanroom_tut_sch.demo_provider_table;
Copy

Provedor: criação da clean room

Uma clean room começa sem dados, sem usuários e apenas com as propriedades padrão.

O trecho de código a seguir cria uma clean room que pode ser acessada somente dentro da organização (portanto, está marcada como INTERNAL). Para compartilhar uma clean room fora de uma organização, são necessárias etapas adicionais que não serão abordadas neste tutorial.

Você deve usar SAMOOHA_APP_ROLE para quase todas as ações de clean room.

USE ROLE samooha_app_role;
SET cleanroom_name = 'Developer Tutorial';
CALL samooha_by_snowflake_local_db.provider.cleanroom_init($cleanroom_name, 'INTERNAL');
Copy

Provedor: como trazer os dados para a clean room

Vamos levar seus dados de teste para a clean room.

Há duas etapas para levar os dados para a clean room:

  1. Registro dos dados

  2. Importação dos dados para a clean room

Registre os dados

A primeira etapa da importação de dados é o registro do banco de dados, do esquema ou do objeto. Isso concede o privilégio SELECT ao aplicativo nativo da clean room para que ele possa ler seus dados. Essa etapa deve ser realizada com uma função que tenha a capacidade de conceder a permissão SELECT a outra função. Você pode registrar um banco de dados inteiro ou registrar esquemas, tabelas ou exibições específicas dentro do banco de dados, dependendo do nível de controle que deseja.

Este exemplo usa a função ACCOUNTADMIN, mas você pode usar qualquer função que possa conceder essa capacidade em seu próprio ambiente.

Observe que você também pode registrar dados usando o aplicativo Web.

No mundo real, o administrador da clean room normalmente pré-registra os dados de todos os criadores de clean rooms, e você pode pular essa etapa.

USE ROLE ACCOUNTADMIN;
CALL samooha_by_snowflake_local_db.provider.register_db('cleanroom_tut_db');
Copy

Importação dos dados para a clean room

A importação de dados para uma clean room é chamada de vinculação. Tanto os provedores quanto os consumidores podem vincular seus dados a uma clean room (e definir regras sobre como eles podem ser usados, o que será abordado mais adiante). O termo genérico para uma exibição ou tabela vinculada a uma clean room é conjunto de dados.

Quando você vincula dados, a clean room cria uma exibição somente leitura vinculada aos dados de origem. Essa exibição da clean room é uma exibição segura e criptografada dentro da clean room, acessível apenas a modelos dentro da clean room. A exibição retira as políticas do Snowflake, como as políticas de agregação e junção dos dados de origem; a clean room oferecem suporte às suas próprias configurações de proteção e privacidade. Seu modelo acessa essa exibição segura, não os dados de origem, embora o nome da origem seja usado na consulta SQL.

Ao contrário do registro, a vinculação é feita no nível da tabela individual ou da exibição, e você pode vincular vários itens em uma única chamada.

Vincule a tabela que você criou anteriormente à clean room:

-- Back to samooha_app_role until you need to clean things up at the end.
USE ROLE samooha_app_role;
CALL samooha_by_snowflake_local_db.provider.link_datasets($cleanroom_name,
  ['cleanroom_tut_db.cleanroom_tut_sch.demo_provider_table']);

CALL samooha_by_snowflake_local_db.provider.view_provider_datasets($cleanroom_name);
Copy

Provedor: definição das políticas de junção dos dados

Tanto os provedores quanto consumidores podem especificar políticas de junção em seus próprios dados. Uma política de junção de clean room especifica quais colunas em uma tabela podem ser unidas por consultas nessa clean room. Isso proporciona um nível extra de controle sobre como outras pessoas podem usar seus dados na clean room.

Observe que as políticas de junção de clean room não são iguais às políticas de junção Snowflake; as políticas de clean room especificam quais colunas podem ser unidas; as políticas de junção Snowflake especificam quais colunas não podem ser unidas.

Dica

As políticas Snowflake definidas na tabela de origem são mantidas na tabela vinculada, mas não são expostas como políticas a nenhum colaborador. Ou seja, as políticas de junção Snowflake são aplicadas, mas não são expostas por consumer.view_provider_join_policy. Portanto, você deve definir políticas de clean room que espelhem as políticas Snowflake sempre que possível e remover quaisquer outras políticas Snowflake ou comunicá-las aos seus colaboradores conforme apropriado para evitar comportamentos inesperados.

Forneça uma lista de colunas juntáveis à clean room. As colunas não listadas aqui não podem ser unidas usando as instruções INNER JOIN ou OUTER JOIN na clean room. Especifique colunas associáveis para uma tabela usando o formato database_name.schema_name.table_or_view_name:column_name para cada coluna.

-- Limit joinable columns in this table to age_band, region_code, and device_type
CALL samooha_by_snowflake_local_db.provider.set_join_policy($cleanroom_name,
  ['cleanroom_tut_db.cleanroom_tut_sch.demo_provider_table:age_band',
   'cleanroom_tut_db.cleanroom_tut_sch.demo_provider_table:region_code',
   'cleanroom_tut_db.cleanroom_tut_sch.demo_provider_table:device_type']);

CALL samooha_by_snowflake_local_db.provider.view_join_policy($cleanroom_name);
Copy

Provedor: como adicionar seu modelo

Um modelo de clean room é um modelo JinjaSQL avaliado em uma consulta SELECT. Essa consulta tem acesso a todos os conjuntos de dados vinculados à clean room, sujeitos às políticas de junção e coluna.

Este tutorial não abordará os detalhes do design de um modelo JinjaSQL, mas aqui está a consulta SQL que você está tentando implementar:

SELECT COUNT(*), group_by_col FROM Consumer_Table AS C
  INNER JOIN Provider_Table AS P
  ON C.join_col = P.join_col
  GROUP BY group_col;
Copy

A consulta simplesmente une uma tabela de provedor e uma de consumidor em uma coluna de junção especificada, agrupa por uma coluna de agrupamento especificada e projeta o valor do grupo e a contagem de cada grupo. Essa é a consulta que será executada na clean room quando o usuário executar o modelo.

Aqui está o modelo JinjaSQL para a mesma consulta, com variáveis adicionadas onde o consumidor pode especificar tabelas ou colunas. Depois que o consumidor especificar as variáveis, ele avaliará uma consulta SQL semelhante à anterior, mas com os nomes de tabela e coluna fornecidos pelo consumidor.

SELECT COUNT(*), IDENTIFIER({{group_by_col | column_policy}}) FROM IDENTIFIER({{my_table[0]}}) AS C
  INNER JOIN IDENTIFIER({{source_table[0]}}) AS P
  ON IDENTIFIER({{consumer_join_col | join_policy}}) = IDENTIFIER({{provider_join_col | join_policy}})
  GROUP BY IDENTIFIER({{group_by_col | column_policy}});
Copy

Algumas observações sobre o modelo:

  • O conteúdo entre {{brackets}} são variáveis nomeadas passadas pelo consumidor quando ele executa o modelo. As seguintes variáveis são passadas pelo consumidor: group_by_col, consumer_join_col e provider_join_col

  • As matrizes my_table e source_table são variáveis globais criadas pelo sistema, preenchidas com nomes de tabela de consumidor e provedor passados pelo chamador. Essas tabelas devem ser conectadas à clean room pelo consumidor e provedor.

  • Todas as tabelas do provedor devem ter o alias p na consulta. Todas as tabelas de consumidor devem ter o alias c. Se você usar várias tabelas, crie um alias com um sufixo baseado em 1, assim: p, p1, p2, p3 e assim por diante para tabelas de provedor, e c, c1, c2, c3 e assim por diante para aliases de tabela de consumidor. (p e p0 são equivalentes)

  • O Snowflake Data Clean Rooms oferece suporte à alguns filtros JinjaSQL personalizados que atuam sobre variáveis. Os filtros column_policy e row_policy verificam se as colunas às quais são aplicados estão em conformidade com as políticas de coluna e linha dessa clean room, caso contrário, a solicitação para executar o modelo falhará. Portanto, {{ consumer_join_col | join_policy }} verifica se o valor passado para consumer_join_col está em conformidade com as políticas de associação definidas pelo provedor e consumidor nessa clean room.

  • As variáveis usadas como identificadores devem ser processadas pela função IDENTIFIER antes de poderem ser usadas em SQL.

Adicione o modelo à clean room:

-- Add the template
SET template_name = 'overlap_template';
CALL samooha_by_snowflake_local_db.provider.add_custom_sql_template(
    $cleanroom_name,
    $template_name,
    $$
    SELECT COUNT(*), IDENTIFIER({{group_by_col | column_policy}}) FROM IDENTIFIER({{my_table[0]}}) AS C
      INNER JOIN IDENTIFIER({{source_table[0]}}) AS P
      ON IDENTIFIER({{consumer_join_col | join_policy}}) = IDENTIFIER({{provider_join_col | join_policy}})
      GROUP BY IDENTIFIER({{group_by_col | column_policy}});
    $$);

CALL samooha_by_snowflake_local_db.provider.view_added_templates($cleanroom_name);
Copy

Provedor: definição de políticas de coluna

Cada parte da clean room pode limitar as colunas que as outras partes podem exibir nos resultados, definindo uma column_policy. Uma política de colunas em uma clean room lista todas as colunas que podem ser projetadas; nenhuma outra coluna pode ser projetada. O provedor define as políticas de coluna para suas tabelas; o consumidor define as políticas de coluna para suas tabelas.

Uma política de coluna está vinculada a uma tabela e a um modelo específicos em uma clean room. Você pode permitir que colunas diferentes sejam exibidas em modelos diferentes. A mesma coluna não pode estar em uma junção e em uma política de coluna.

Observe que as políticas de coluna e junção são aplicadas somente se o modelo usar os filtros column_policy e row_policy no modelo. Além disso, se você não especificar uma política de coluna, isso significa que todas as suas colunas podem ser projetadas; da mesma forma, não especificar uma política de junção significa que todas as suas colunas podem ser unidas.

Veja como permitir a projeção de três colunas de seus dados no modelo que acabamos de criar. A sintaxe da coluna é template_name:table_name:column_name

-- Set column policies. Column policies are tied to a specific template and table, so we
-- needed to add the template first.
CALL samooha_by_snowflake_local_db.provider.set_column_policy($cleanroom_name,
  [$template_name || ':cleanroom_tut_db.cleanroom_tut_sch.demo_provider_table:STATUS',
   $template_name || ':cleanroom_tut_db.cleanroom_tut_sch.demo_provider_table:AGE_BAND',
   $template_name || ':cleanroom_tut_db.cleanroom_tut_sch.demo_provider_table:DAYS_ACTIVE']);

CALL samooha_by_snowflake_local_db.provider.view_column_policy($cleanroom_name);
Copy

Provedor: como adicionar uma diretiva de lançamento

Cada clean room tem um número de versão, que consiste em valores principais, secundários e de correção. Você precisa especificar qual versão da clean room é fornecida a um consumidor: isso é chamado de diretiva de lançamento padrão.

Esta é a primeira versão, portanto, o número da versão é 1.0.0.

CALL samooha_by_snowflake_local_db.provider.set_default_release_directive($cleanroom_name, 'V1_0', '0');
Copy

O Snowflake cria uma nova versão da clean room toda vez que o usuário faz upload de código para a clean room e, se quiser que os usuários obtenham a versão mais recente, precisará chamar esse procedimento novamente com a nova versão, se quiser que os usuários obtenham a versão mais recente. Você não fará upload de código, portanto, não precisará chamar isso novamente.

Provedor: como adicionar consumidores

Agora, especifique quais contas podem usar sua clean room como consumidores. Alguns requisitos para compartilhar uma clean room:

  • Os usuários devem estar em uma conta Snowflake com o ambiente de clean room instalado. É possível compartilhar uma clean room com uma conta que não seja do Snowflake, mas isso não será abordado aqui.

  • A conta de consumidor deve estar na mesma região de nuvem que a conta de provedor. Você pode compartilhar entre regiões, mas isso requer uma configuração extra que não será abordada aqui.

  • A conta de consumidor deve ser adicionada à página Collaborators na conta de provedor. Somente as contas adicionadas à lista de colaboradores de uma conta podem receber um convite para participar de uma clean room criada nessa conta.

  • O localizador de contas pode ser obtido executando o seguinte procedimento em sua conta de consumidor: SELECT CURRENT_ACCOUNT();

  • O nome da conta está no formato org_name.account_name. Você pode obter esses valores executando os seguintes procedimentos em sua conta de consumidor:

    • SELECT CURRENT_ORGANIZATION_NAME();

    • SELECT CURRENT_ACCOUNT_NAME();

CALL samooha_by_snowflake_local_db.provider.add_consumers(
  $cleanroom_name,
  <CONSUMER_LOCATOR>,
  <ORG_NAME>.<ACCOUNT_NAME>);

CALL samooha_by_snowflake_local_db.provider.view_consumers($cleanroom_name);
Copy

Provedor: publicação da clean room

Por fim, você pode publicar a clean room. Isso torna a clean room disponível aos consumidores que você adicionou acima. O procedimento leva um minuto ou mais para ser concluído.

-- Publish the clean room.
CALL samooha_by_snowflake_local_db.provider.create_or_update_cleanroom_listing($cleanroom_name);
Copy

Quando o procedimento for concluído, você deverá ver a clean room listada no aplicativo da Web de clean rooms da sua conta de provedor na guia Created e na guia Invited do aplicativo da Web da sua conta de consumidor, com o rótulo “Powered by Dev Edition”. A conta de consumidor receberá um e-mail de convite e a clean room deverá aparecer na guia Invited no aplicativo da Web da conta de consumidor.

Parabéns! Você publicou sua primeira clean room!

Agora, vá para a conta de consumidor para usar a clean room.

Consumidor: instalação (ingresso) da clean room

Passe para a conta de consumidor no Snowsight. Você pode abrir uma segunda guia em seu navegador ou usar o alternador de contas.

Após fazer login com sua conta de consumidor, configure seu ambiente no notebook de consumidor:

USE WAREHOUSE app_wh;
USE ROLE samooha_app_role;
Copy

Instale a clean room que você acabou de publicar e compartilhar.

Nota

Se você abrir o aplicativo da Web para essa conta, verá essa clean room na guia Invited com o rótulo Powered by Dev Edition para indicar que ela foi criada com código. Você poderia instalar a clean room a partir daí, mas mostraremos como fazer isso com código aqui.

Para instalar uma clean room, você deve especificar o nome da clean room e o localizador de conta de provedor que compartilhou a clean room com você. A especificação do nome da clean room e do localizador da conta ajuda a eliminar a ambiguidade de vários convites para clean rooms. Você pode executar SELECT CURRENT_ACCOUNT(); na conta de provedor para obter o localizador de provedor.

A instalação pode levar alguns minutos.

SET cleanroom_name = 'Developer Tutorial';
CALL samooha_by_snowflake_local_db.consumer.install_cleanroom($cleanroom_name, <PROVIDER_LOCATOR>);
Copy

Consumidor: definição das políticas de adesão para seus dados

Agora, você pode definir políticas de associação para seus dados, assim como fez na conta de provedor. A configuração de políticas de associação de consumidores é redundante neste exemplo porque somente os consumidores podem executar um modelo nessa clean room. E como você mesmo está executando o modelo, sabe quais das suas colunas devem ser uníveis. No entanto, no uso real, faz sentido definir políticas de junção em seus dados, caso a clean room permita que o provedor execute um modelo.

-- Allow same three columns in your data to be joined.
CALL samooha_by_snowflake_local_db.consumer.set_join_policy($cleanroom_name,
  ['cleanroom_tut_db.cleanroom_tut_sch.demo_consumer_table:age_band',
  'cleanroom_tut_db.cleanroom_tut_sch.demo_consumer_table:region_code',
  'cleanroom_tut_db.cleanroom_tut_sch.demo_consumer_table:device_type']);
Copy

Consumidor: como preparar sua consulta

Para executar uma consulta, você precisa das seguintes informações:

  • O nome do modelo que deseja executar.

  • Os nomes de suas tabelas a serem disponibilizadas ao modelo.

  • Os nomes das tabelas do provedor a serem disponibilizadas ao modelo.

  • Quaisquer outras variáveis de nome/valor a serem passadas. Em nosso modelo, precisamos passar os nomes das colunas de junção das tabelas de provedor e consumidor.

Examine o modelo

Você pode examinar o modelo para ver a sintaxe exata e o que precisa passar.

-- List templates in the clean room, then examine the template details
CALL samooha_by_snowflake_local_db.consumer.view_added_templates($cleanroom_name);

SET template_name = 'overlap_template';
CALL samooha_by_snowflake_local_db.consumer.view_template_definition($cleanroom_name, $template_name);
Copy

Você pode ver que precisa passar uma tabela de provedor e um nome de coluna, uma tabela de consumidor e um nome de coluna, além de uma coluna de agrupamento.

Liste as tabelas de provedores disponíveis

Veja quais tabelas o provedor adicionou à clean room.

-- Table name to use is in the LINKED_TABLE column in the results.
CALL samooha_by_snowflake_local_db.consumer.view_provider_datasets($cleanroom_name);
Copy

Examine as colunas acopláveis e projetáveis

Veja quais colunas podem ser unidas ou projetadas a partir dos dados de provedor.

-- See which provider columns can be joined on
CALL samooha_by_snowflake_local_db.consumer.view_provider_join_policy($cleanroom_name);

-- See which provider columns can be projected
CALL samooha_by_snowflake_local_db.consumer.view_provider_column_policy($cleanroom_name);
Copy

Execute a análise

Agora que sabemos do que a consulta precisa, quais dados do provedor estão disponíveis e o que pode ser feito com eles, você pode escolher os valores a serem passados.

Quando os nomes das colunas forem ambíguos no modelo, você deve qualificar totalmente as colunas com o nome da tabela. Você deve usar o alias da tabela como o nome dela em vez do nome real da tabela. Lembre-se de que os aliases nesse modelo são p para a tabela de provedor e c para a tabela de consumidor. Por motivos internos, você deve usar letras minúsculas em p e c como nome de alias.

  • Tabela de provedor: a única opção é cleanroom_tut_db.cleanroom_tut_sch.demo_provider_table.

  • Tabela de consumidor: a única opção é cleanroom_tut_db.cleanroom_tut_sch.demo_consumer_table.

  • consumer_join_col: vamos escolher age_band. O nome de coluna totalmente qualificado na tabela de consumidores é c.age_band.

  • provider_join_col: precisamos realizar a junção com base em colunas semelhantes, portanto, o nome totalmente qualificado é p.age_band.

  • group_by_col: escolha as colunas de provedor ou consumidor entre as colunas projetáveis restantes. Usaremos p.device_type, mas você pode escolher qualquer uma das outras colunas de provedor ou consumidor retornadas por consumer.view_provider_column_policy.

Esses valores são passados para consumer.run_analysis conforme mostrado aqui:

CALL samooha_by_snowflake_local_db.consumer.run_analysis(
  $cleanroom_name,
  $template_name,
  ['cleanroom_tut_db.cleanroom_tut_sch.demo_consumer_table'],
  ['cleanroom_tut_db.cleanroom_tut_sch.demo_provider_table'],
  OBJECT_CONSTRUCT(
    'consumer_join_col','c.age_band',
    'provider_join_col','p.age_band',
    'group_by_col','p.status'
  ),
  FALSE
);
Copy

Dica

O último parâmetro indica que os resultados não devem ser armazenados em cache. Recomendamos não armazenar em cache os resultados durante o teste, o que força a API a executar novamente a consulta, mesmo que você passe a mesma consulta. Isso é útil ao alterar o modelo subjacente sem alterar a consulta.

Parabéns! Você deve ver os resultados do modelo no Snowsight.

Recursos adicionais não abordados aqui permitem que você exporte esses resultados diretamente para sua própria conta Snowflake ou para um serviço de terceiros aprovado em um processo chamado Ativação.

Veja mais casos de uso e saiba mais sobre os recursos de clean rooms no guia do desenvolvedor de Snowflake Clean Rooms.

Ambas as contas: limpeza

Agora vamos limpar todos os recursos que você criou.

Observe que, para excluir as tabelas de origem, você precisará usar a mesma função que usou para criá-las.

Limpeza do provedor

Execute esse código em sua conta de provedor:

USE ROLE samooha_app_role;
CALL samooha_by_snowflake_local_db.provider.drop_cleanroom($cleanroom_name);

USE role ACCOUNTADMIN;
DROP TABLE cleanroom_tut_db.cleanroom_tut_sch.demo_provider_table;
DROP DATABASE cleanroom_tut_db;
Copy

Limpeza do consumidor

Execute esse código em sua conta de consumidor:

USE ROLE samooha_app_role;
CALL samooha_by_snowflake_local_db.consumer.uninstall_cleanroom($cleanroom_name);

USE ROLE ACCOUNTADMIN;
DROP VIEW cleanroom_tut_db.cleanroom_tut_sch.demo_consumer_table;
DROP DATABASE cleanroom_tut_db;
Copy