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 mostra como criar e compartilhar um modelo básico em uma sala limpa usando a Snowflake Data Clean Room API. Ele também mostra como executar uma análise usando a API em uma sala limpa compartilhada com você.
Este tutorial cria uma sala limpa com uma tabela fornecida pelo provedor, uma tabela fornecida pelo consumidor e um modelo definido pelo provedor que especifica uma consulta JOIN muito simples nas duas tabelas.
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 uma conta Snowflake, Enterprise Edition ou superior, com o app nativo Snowflake Data Clean Rooms e a API instalados. Se você não tiver o app de salas limpas instalado, instale-o você mesmo ou peça que um administrador do Snowflake o instale.
Você deve ter a SAMOOHA_APP_ROLE para usar a API de salas limpas.
Este tutorial usa a mesma conta para atuar como provedor e consumidor em uma sala limpa. Este cenário é voltado apenas para fins de teste e tem limitações de recursos aos quais oferece suporte, em comparação com o uso de contas separadas. No mundo real, provedores e consumidores usam contas diferentes e, para testes mais avançados, talvez seja necessário usar contas separadas.
Você pode:download:baixar este tutorial como um arquivo de pasta de trabalho </samples/clean-rooms/internal-testing-cleanroom.ipynb>
para ser executado em sua conta Snowflake.
Provedor: visão geral¶
Este é um resumo das etapas que você seguirá para criar uma sala limpa como provedor:
Crie dados de teste para compartilhar em sua clean room.
Crie sua clean room.
Leve os dados que você criou para a clean room.
Defina as permissões de junção em seus dados para especificar quais colunas podem ser unidas nas consultas do consumidor.
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.
Especifique a versão padrão da clean room.
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.
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¶
Faça login no Snowsight como usuário com a função SAMOOHA_APP_ROLE. Se não tiver essa função, peça que o administrador da sua conta a conceda para você.
Crie uma nova planilha SQL no Snowsight para armazenar o código da sala limpa. Nomeie a planilha como «Tutorial da API - Provedor».
Crie uma tabela com base em 1.000 linhas de dados de teste de amostra da tabela SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS. Você usará essa tabela como os dados do provedor na sala limpa.
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 a temporary table, in case you forget to delete it later.
CREATE TEMPORARY 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;
Provedor: criação da clean room¶
O trecho a seguir cria uma sala limpa acessível somente dentro da organização (portanto, marcada como INTERNAL). Para compartilhar uma sala limpa fora de uma organização, são necessárias etapas adicionais que não serão abordadas neste tutorial. Ao compartilhar uma sala limpa com você mesmo, certamente ela deve ser INTERNAL.
Você deve usar a SAMOOHA_APP_ROLE para a maioria dos procedimentos de sala limpa.
USE ROLE samooha_app_role;
SET cleanroom_name = 'Developer Tutorial';
CALL samooha_by_snowflake_local_db.provider.cleanroom_init($cleanroom_name, 'INTERNAL');
Provedor: como trazer os dados para a clean room¶
A seguir, transfira os dados de teste para a sala limpa. Há duas etapas para transferir os dados para uma sala limpa:
Registre os dados.
Importe (vincule) os dados para a sala limpa.
Registre os dados¶
A primeira etapa na importação dos dados é registrar o banco de dados, esquema ou objeto na conta da sala limpa. Você registra os dados no nível da conta, e não da sala limpa individual. Depois que um objeto de dados é registrado, ele se torna elegível para ser vinculado a uma sala limpa específica pela conta que registrou os dados. Você pode registrar um banco de dados inteiro, um esquema, uma tabela ou uma exibição.
O registro concede o privilégio SELECT para o aplicativo nativo de sala limpa para que ele possa ler os dados. Esta etapa deve ser executada usando uma função que tenha a capacidade de conceder a permissão SELECT a outra função. Este exemplo usa a função ACCOUNTADMIN, mas use qualquer função que conceda SELECT ao objeto em sua conta.
Você também pode registrar os dados usando a UI de salas limpas (e, de fato, é um pouco mais simples registrá-los na UI do que na API).
USE ROLE ACCOUNTADMIN;
CALL samooha_by_snowflake_local_db.provider.register_db('cleanroom_tut_db');
Nota
No mundo real, o administrador da sala limpa normalmente faz o pré-registro dos dados para todos os usuários da sala limpa nas contas deles e, nesse caso, você deve pular esta etapa.
Importação dos dados para a clean room¶
A importação de dados para uma sala limpa é chamada de vinculação. Tanto provedores quanto consumidores podem vincular os dados a uma sala limpa. O termo genérico para uma exibição ou tabela vinculada a uma sala limpa é conjunto de dados.
Ao vincular dados, a sala limpa cria uma exibição somente leitura vinculada aos seus dados de origem. Trata-se de uma exibição segura e criptografada dentro da sala limpa, acessível somente aos modelos da sala limpa. O modelo acessa essa exibição segura, não os dados de origem, embora o nome original seja usado sempre que você precisar fazer referência aos dados.
Ao contrário do registro, a vinculação é feita no nível da tabela ou da exibição salas limpas. Você pode vincular vários itens em uma chamada.
Vincule a tabela que você criou anteriormente à clean room:
-- Use 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);
Provedor: definição das políticas de junção dos dados¶
Tanto provedores quanto consumidores podem especificar políticas de junção em seus próprios dados. Uma política de junção de sala limpa especifica quais colunas em uma tabela podem ser unidas nas consultas feitas por seus colaboradores nessa sala limpa. Isso aumenta o nível de controle sobre como as outras pessoas podem usar seus dados na sala limpa. Suas próprias políticas não são aplicadas a suas próprias consultas, ou seja, as políticas de junção que você define nos próprios dados são ignoradas quando você executa uma consulta. Suas políticas são aplicadas somente a consultas executadas por outros usuários.
As políticas de junção de sala limpa são definidas na tabela e se aplicam a todas as salas limpas em que a tabela é usada. As colunas não listadas aqui não podem ser unidas usando as instruções INNER JOIN ou OUTER JOIN na sala limpa. Se você não especificar uma política de junção, todas as colunas poderão ser unidas.
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 do Snowflake definidas na tabela de origem são mantidas na tabela da sala limpa vinculada, mas não são relatadas aos colaboradores. Ou seja, as políticas de junção do Snowflake são aplicadas, mas não são relatadas por consumer.view_provider_join_policy
, que relata apenas as políticas de junção da sala limpa do provedor. Portanto, você deve informar seus colaboradores sobre as políticas do Snowflake que você tenha definido em seus dados.
Especifique colunas que possam ser unidas em uma tabela usando o formato database_name.schema_name.table_or_view_name:column_name
para cada coluna. O seguinte exemplo permite unir três colunas de dados do provedor:
-- 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);
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;
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}});
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
eprovider_join_col
As matrizes
my_table
esource_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 aliasc
. 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, ec
,c1
,c2
,c3
e assim por diante para aliases de tabela de consumidor. (p
ep0
são equivalentes)O Snowflake Data Clean Rooms oferece suporte à alguns filtros JinjaSQL personalizados que atuam sobre variáveis. Os filtros
column_policy
erow_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 paraconsumer_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);
Provedor: definição de políticas de coluna¶
Cada parte na sala limpa pode limitar as colunas que as outras partes podem projetar configurando uma column_policy. Uma política de coluna em uma sala limpa lista todas as colunas dos dados que podem ser projetadas. Nenhuma outra coluna pode ser projetada. Se você não especificar uma política de coluna para seus dados, todos os dados poderão ser projetados.
Uma política de coluna é vinculada a uma tabela e um modelo específicos em uma sala limpa. Você pode permitir que diferentes colunas sejam projetadas em diferentes modelos. A mesma coluna não pode estar em uma política de junção e também de coluna.
Observe que as políticas de coluna e de junção serão aplicadas somente se o modelo usar os filtros column_policy
e row_policy
no modelo.
Veja como permitir a projeção de três colunas de seus dados no modelo que você acabou 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:DAYS_ACTIVE']);
CALL samooha_by_snowflake_local_db.provider.view_column_policy($cleanroom_name);
Provedor: como adicionar uma diretiva de lançamento¶
Cada sala limpa tem um número de versão, que consiste nos valores principal, secundário e de patch. Você deve especificar qual versão da sala limpa é fornecida aos consumidores, o que é 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');
O Snowflake cria uma nova versão da sala limpa cada vez que você carrega o código na sala limpa. Se quiser que os usuários obtenham a versão mais recente, você precisará definir uma nova diretiva de lançamento padrão com o número da versão mais recente. Você não carregará o código, logo, não precisará chamá-lo novamente neste tutorial.
Provedor: designar consumidores¶
Agora você especificará quem tem acesso à sua sala limpa como consumidor. Para este tutorial, você se adicionará como consumidor. Isso marca a sala limpa como de teste interno, usada apenas para testes, o que limita algumas de suas funcionalidades, mas oferece suporte a todos os recursos necessários para este tutorial.
O procedimento precisa de dois argumentos para identificar cada consumidor:
O localizador da conta do consumidor. Obtenha o localizador da conta desta maneira:
SELECT CURRENT_ACCOUNT();
O ID da conta de compartilhamento de dados do consumidor, no formato
org_name.account_name
. Obtenha o ID da sua conta de compartilhamento de dados de consumidor no formato adequado desta maneira:SELECT CURRENT_ORGANIZATION_NAME() || '.' || CURRENT_ACCOUNT_NAME();
Agora compartilhe a sala limpa com você mesmo como consumidor, adicionando o localizador da sua conta e o ID da conta de compartilhamento de dados do consumidor nos locais indicados:
CALL samooha_by_snowflake_local_db.provider.add_consumers(
$cleanroom_name,
'<CONSUMER_LOCATOR>',
'<CONSUMER_DATA_SHARING_ACCOUNT_ID>');
CALL samooha_by_snowflake_local_db.provider.view_consumers($cleanroom_name);
Provedor: publicação da clean room¶
Por fim, publique a sala limpa. Isso a torna disponível para o consumidor adicionado 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);
Quando o procedimento terminar, você deverá ver a sala limpa listada na UI de salas limpas, na guia Created em sua conta de provedor e na guia Invited na conta do consumidor, com o rótulo «Powered by Dev Edition». A conta do consumidor receberá um e-mail de convite. (Não instale a sala limpa da guia Invited. Você a instalará no código em uma etapa posterior.)
Parabéns! Você publicou sua primeira clean room!
Agora remova o limite do provedor e insira o limite do consumidor.
Consumidor: instalação (ingresso) da clean room¶
Você usará a mesma conta para as funções de provedor e de consumidor neste tutorial, portanto, adicione uma nova planilha SQL chamada «Tutorial da API - Consumidor» no Snowsight na mesma conta.
Configure o ambiente da sessão, parecido com o que você fez para o provedor:
USE WAREHOUSE app_wh;
USE ROLE samooha_app_role;
Em seguida, instale a sala limpa que você publicou e compartilhou como provedor. Para instalar uma sala limpa, você deve especificar o nome da sala limpa e o localizador da conta do provedor que compartilhou a sala limpa com você. Especificar o nome da sala limpa e o localizador da conta ajuda a evitar ambiguidade de salas limpas com nomes idênticos. Execute SELECT CURRENT_ACCOUNT();
para obter seu localizador de provedor.
SET cleanroom_name = 'Developer Tutorial';
CALL samooha_by_snowflake_local_db.consumer.install_cleanroom(
$cleanroom_name,
<PROVIDER_LOCATOR>);
A instalação pode levar alguns minutos.
Consumidor: criação e vinculação de seus dados¶
Agora crie e adicione um conjunto de dados a essa sala limpa. Crie uma tabela semelhante ao conjunto de dados do provedor, mas use as 1.000 linhas inferiores dos dados de amostra.
USE ROLE ACCOUNTADMIN;
CREATE DATABASE IF NOT EXISTS cleanroom_tut_db;
CREATE SCHEMA IF NOT EXISTS cleanroom_tut_db.cleanroom_tut_sch;
CREATE TEMPORARY TABLE IF NOT EXISTS cleanroom_tut_db.cleanroom_tut_sch.demo_consumer_table AS
SELECT
TOP 1000 *
FROM SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS
ORDER BY HASHED_EMAIL DESC;
DESCRIBE TABLE cleanroom_tut_db.cleanroom_tut_sch.demo_consumer_table;
Depois de criar os dados de origem, você deverá registrá-los e vinculá-los à sala limpa, da mesma forma que fez como provedor:
-- You need to use a role that has ownership of the object to be registered, probably not samooha_app_role.
USE ROLE ACCOUNTADMIN;
CALL samooha_by_snowflake_local_db.library.register_objects(
['cleanroom_tut_db.cleanroom_tut_sch.demo_consumer_table']);
-- Drop back down to samooha_app_role for the other actions.
USE ROLE samooha_app_role;
CALL samooha_by_snowflake_local_db.consumer.link_datasets(
$cleanroom_name,
['cleanroom_tut_db.cleanroom_tut_sch.demo_consumer_table']);
CALL samooha_by_snowflake_local_db.consumer.view_consumer_datasets($cleanroom_name);
Consumidor: não é necessário definir políticas¶
Você pode definir políticas em seus dados, da mesma forma que o provedor fez, mas este modelo foi aprovado apenas para o consumidor executar, portanto, não há necessidade de restringir suas próprias consultas. De qualquer forma, suas próprias políticas de linha e de coluna são ignoradas quando você executa uma consulta.
No entanto, se você fosse aprovar uma solicitação do provedor para executar esse modelo, primeiro definiria políticas de junção e de coluna em seus dados para controlar o que o provedor poderia fazer com eles.
Consumidor: executar a análise¶
Para executar uma consulta, você precisa das seguintes informações:
O nome do modelo que deseja executar.
Os nomes das tabelas a serem usadas no modelo.
Os nomes das tabelas do provedor a serem usadas no modelo.
Qualquer outra variável de nome/valor a ser passada.
Examine o modelo¶
Você pode examinar o modelo para ver o que ele faz e os argumentos que ele aceita. O seguinte exemplo mostra como listar os modelos na sala limpa, ver o código de um modelo e quais argumentos ele aceita:
-- List templates in the clean room.
CALL samooha_by_snowflake_local_db.consumer.view_added_templates($cleanroom_name);
-- See the template code.
SET template_name = 'overlap_template';
CALL samooha_by_snowflake_local_db.consumer.view_template_definition(
$cleanroom_name,
$template_name);
-- See what arguments can be passed in to the template:
CALL samooha_by_snowflake_local_db.consumer.get_arguments_from_template(
$cleanroom_name,
$template_name
);
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);
Listagem das colunas do provedor que podem seu unidas e projetadas¶
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);
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 esses dados, você pode selecionar valores a serem passados.
Você deve qualificar totalmente todos os nomes de colunas na maioria dos casos. Você deve usar o alias da tabela como nome dela, em vez do nome real da tabela. Lembre-se de que os aliases de tabela nesse modelo são p
para tabela do provedor e c
para tabela do consumidor. Você deve usar p
e c
em letras minúsculas.
Em sua primeira consulta, use os seguintes valores:
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
: Useage_band
da tabela do consumidor. O nome totalmente qualificado da coluna éc.age_band
.provider_join_col
: você precisa fazer a junção em colunas semelhantes, portanto, o nome totalmente qualificado do provedor equivalente ép.age_band
.group_by_col
: Faça sua escolha de colunas de provedor ou de consumidor com base nas colunas projetáveis restantes. Tentep.device_type
, mas você pode usar qualquer uma das outras colunas de provedor ou de consumidor retornadas porconsumer.view_provider_column_policy
.
Esses valores são passados em consumer.run_analysis
conforme mostrado no seguinte exemplo:
CALL samooha_by_snowflake_local_db.consumer.run_analysis(
$cleanroom_name,
$template_name,
['cleanroom_tut_db.cleanroom_tut_sch.demo_consumer_table'], -- Consumer table list.
['cleanroom_tut_db.cleanroom_tut_sch.demo_provider_table'], -- Provider table list.
OBJECT_CONSTRUCT( -- Additional template arguments as name-value pairs.
'consumer_join_col','c.age_band',
'provider_join_col','p.age_band',
'group_by_col','p.status'
)
);
Parabéns! Você deve ver os resultados da consulta 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 este código no seu notebook 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;
Limpeza do consumidor¶
Execute este código no seu notebook 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;