Guia do desenvolvedor do Snowflake Data Clean Rooms¶
Este tópico apresenta diretrizes para usuários que desejam criar ou gerenciar o Snowflake Data Clean Rooms de modo programático.
O Snowflake expõe uma API dos procedimentos armazenados para criar e controlar salas limpas. Esses procedimentos armazenados podem ser executados em qualquer interface com acesso à conta Snowflake associada ao seu ambiente de sala limpa, incluindo notebooks e planilhas Snowsight, além do Snowflake CLI. Esses procedimentos podem ser chamados em SQL ou qualquer linguagem compatível com seu ambiente Snowflake.
Configurando seu ambiente¶
Estas são algumas dicas para configurar seu ambiente de codificação para usar a API de salas limpas de modo eficaz.
Ferramentas de desenvolvimento¶
Aqui estão as principais ferramentas de desenvolvimento para clean rooms:
Ambiente de codificação: qualquer ambiente de codificação que possa executar procedimentos armazenados em sua conta Snowflake funcionará. A maioria dos desenvolvedores usa planilhas no Snowsight (a ferramenta baseada em navegador) ou no Snowflake CLI.
UI de salas limpas: use a UI de salas limpas para configurar, gerenciar ou criar salas limpas. A maioria dos analistas de sala limpa usa a UI em vez do código, portanto é importante ver e testar a experiência das salas limpas na UI. Além disso, há alguns recursos disponíveis apenas na UI de salas limpas.
O Snowsight é útil para explorar bancos de dados e outros objetos e pesquisar objetos.
API de salas limpas: a documentação da API está dividida nas páginas dos tópicos de provedor e de consumidor.
Configuração de codificação¶
Veja como configurar seu ambiente de codificação para salas limpas:
Função e warehouse necessários¶
A API de salas limpas requer a função SAMOOHA_APP_ROLE para acesso completo à API. Peça que seu administrador de salas limpas conceda a você acesso completo à API. As salas limpas também oferecem suporte à criação de funções com acesso a um subconjunto de procedimentos de API.
Você deve usar a API de salas limpas em um warehouse que SAMOOHA_APP_ROLE pode usar. O app_wh é um dos vários warehouses com acesso à API. Escolha o warehouse apropriado às suas necessidades.
Recomendamos que você use um warehouse XS para comandos gerais de edição, criação ou exclusão de salas limpas. Considere usar warehouses maiores, ou warehouses otimizados para Snowpark, ao executar grandes análises, como cargas de trabalho de machine learning.
-- Set up environment.
USE ROLE SAMOOHA_APP_ROLE;
USE WAREHOUSE app_wh;
-- Call your clean rooms API functions.
...
Se você usar qualquer outro warehouse, certifique-se de conceder o uso do SAMOOHA_APP_ROLE nesse warehouse:
GRANT USAGE ON WAREHOUSE <your_warehouse> TO SAMOOHA_APP_ROLE;`
Sobre a API de clean rooms¶
Snowflake Data Clean Rooms expõe um conjunto de procedimentos armazenados que permitem que um provedor crie, configure e compartilhe uma sala limpa. Esses procedimentos podem ser chamados em qualquer ambiente de linha de comando compatível com os procedimentos do Snowflake, incluindo notebooks, planilhas e a Snowflake CLI. Esta documentação mostra o uso do SQL, mas você também pode usar Python ou qualquer outra linguagem compatível com o Snowflake.
Os procedimentos existem nos seguintes esquemas:
samooha_by_snowflake_local_db.provider– Procedimentos específicos do provedor. Esses procedimentos podem ser chamados apenas em clean rooms criadas na conta atual.samooha_by_snowflake_local_db.consumer– Procedimentos específicos do consumidor. Estes procedimentos podem ser acionados somente em salas limpas para as quais a conta corrente foi convidada como consumidor.samooha_by_snowflake_local_db.library– Procedimentos gerais chamados pelo criador da sala limpa (provedor) ou por um colaborador da sala limpa (consumidor). Esses procedimentos estão documentados nas páginas de referência do provedor e do consumidor.
Alguns procedimentos têm ambas as versões do provedor e do consumidor. Os resultados são apropriados para o esquema: por exemplo, provider.view_cleanrooms lista todas as salas limpas na conta atual das quais você é provedor, e consumer.view_cleanrooms lista todas as salas limpas na conta atual das quais você é consumidor. Certifique-se de chamar o procedimento no namespace necessário.
Sobre nomes de clean rooms em procedimentos de API¶
Muitos procedimentos de API de clean room têm um argumento cleanroom_name.
Use o nome da sala limpa se ela foi criada usando a API. Se usado como parte do nome de um pacote, substitua os espaços por sublinhados:
-- Spaces work here: CALL samooha_by_snowflake_local_db.provider.describe_cleanroom('my code created clean room'); -- Underscores required here: SHOW VERSIONS IN APPLICATION PACKAGE SAMOOHA_CLEANROOM_my_code_created_clean_room;
Use o ID da sala limpa se ela foi criada usando a UI de salas limpas.
Você pode ver o nome e o ID da sala limpa chamando describe_cleanroom ou view_cleanrooms.
As salas limpas criadas usando a API são identificadas na UI de salas limpas como Supported with Developer APIs.
Configuração de contas, usuários e funções¶
Você não precisa usar a UI de salas limpas para desenvolver salas limpas: a maioria das funcionalidades delas está disponível por meio da chamada à API. No entanto, alguns recursos estão disponíveis apenas na UI, e alguns são executados com mais rapidez na UI. E como muitos usuários usam a UI exclusivamente, é importante ver como sua sala limpa se comporta na UI. Portanto, peça que um administrador de sala limpa adicione você como gerente de sala limpa ou superior nas contas de sala limpa apropriadas.
Dependendo do seu caso de uso, você também pode configurar uma conta Snowflake adicional em diferentes regiões de hospedagem na Web para testar o comportamento entre nuvens.
Nomeie suas contas Snowflake de teste de forma significativa para indicar o uso comum: por exemplo, «Conta de consumidor», «Conta de provedor» e «Conta entre nuvens». Isso ajuda quando você tem várias contas de teste e precisa escolher uma na página de login de salas limpas.
Salas limpas de teste interno¶
Você pode compartilhar a sala limpa consigo mesmo para testá-la durante o desenvolvimento. Essa sala limpa é chamada de sala limpa de teste interno. Usar uma única conta para ambos provedor e consumidor é conveniente para testes rápidos de recursos.
Para criar uma sala limpa de teste interno, basta passar as informações da conta de provedor para provider.add_consumers como único consumidor.
As salas limpas de teste interno têm as seguintes restrições:
Uma sala limpa de teste interna não pode ser compartilhada posteriormente com outras contas. Uma sala limpa de teste interno sempre será uma sala limpa de teste interno.
Não há suporte para os seguintes recursos nas salas limpas de teste interno:
Ativação do provedor
Análises executadas pelo provedor
Montagem ou visualização de logs de solicitação (
provider.mount_request_logs_for_all_consumersouprovider.view_request_logs)Modelos definidos pelo consumidor
Análises multiprovedor
Privacidade diferencial
Se você quiser testar recursos para os quais não há suporte em uma sala de teste interno, deverá configurar contas Snowflake de provedor e de consumidor separadas para testar os dois lados de uma sala limpa.
Baixe uma planilha de amostra que demonstra o uso de uma sala limpa em uma única conta para ambos provedor e consumidor.
Veja o que está instalado com o ambiente de salas limpas¶
O Snowflake Data Clean Rooms cria muitos bancos de dados locais após a instalação. Você encontra os detalhes sobre as tarefas e os objetos executados ou instalados com um pacote de sala limpa em Snowflake Data Clean Rooms: objetos instalados.
Amostra de dados¶
O ambiente de salas limpas instala alguns conjuntos de dados de amostra que você pode usar.
Você também pode gerar dados de teste sintéticos usando o Snowflake.
Diretrizes e recomendações¶
Aqui estão algumas diretrizes para evitar problemas ao trabalhar com salas limpas:
Confirme se você está usando a mesma conta na UI de clean rooms e no código¶
Muitas vezes, você precisa abrir um ambiente de codificação e a UI de clean rooms para a mesma conta Snowflake, por exemplo, ao criar uma clean room no código e depois verificar sua aparência na UI de clean rooms. É importante confirmar que você está usando a mesma conta Snowflake em cada uma delas.
O Snowsight não tem um atalho para abrir a UI de salas limpas para a mesma conta, nem o contrário; portanto, você deve fazer login na mesma conta em cada ambiente.
Nome de clean room vs. ID de clean room¶
Para os procedimentos que usam um argumento de nome de sala limpa, determine se é para usar o nome ou o ID da sala limpa ao usar a API, da seguinte maneira:
Se a clean room tiver sido criada usando a API, use o nome de clean room.
Se a sala limpa foi criada na UI de salas limpas, use o ID dela. Você pode ver o nome e o ID da sala limpa chamando
provider.view_cleanroomsouprovider.describe_cleanroom.
Atualizar a sala limpa sempre que você fizer alterações na UI¶
Quando você alterar propriedade da sala limpa que afetam a UI, chame provider.create_or_update_cleanroom_listing para propagar as alterações.
Interoperabilidade entre clean rooms criadas em código ou na UI¶
Quando você criar uma sala limpa usando a API, alguns recursos não poderão ser modificados na UI de salas limpas. Por exemplo, não é possível adicionar outros modelos ao código, nem mesmo os modelos de estoque do Snowflake, para uma sala limpa criada pela UI. Também não é possível alterar as configurações de privacidade diferencial.
Solução de problemas¶
Veja abaixo algumas dicas de solução de problemas comuns:
O consumidor não pode definir políticas de junção ou executar outras ações básicas em uma sala limpa unida¶
Confirme se você instalou sua clean room com a função adequada (SAMOOHA_APP_ROLE). Se você não tiver usado SAMOOHA_APP_ROLE ao instalar a clean room, encontrará muitos problemas, geralmente erros de permissão. Se esse for o caso, até mesmo consumer.uninstall_cleanroom falhará e você deverá tomar medidas adicionais para desinstalar e reinstalar a clean room com a função correta.
-- Who owns the clean room?
SHOW SHARES LIKE 'SAMOOHA_CLEANROOM_REQUESTS_<cleanroom_name>';
-- If the owner role is not SAMOOHA_APP_ROLE, you must drop the share, then
-- uninstall the clean room.
DROP SHARE SAMOOHA_CLEANROOM_REQUESTS_<cleanroom_name>;
CALL samooha_by_snowflake_local_db.consumer.uninstall_cleanroom($cleanroom_name);
USE ROLE SAMOOHA_APP_ROLE;
CALL samooha_by_snowflake_local_db.consumer.install_cleanroom($cleanroom_name, '<provider_locator>');
Não é possível encontrar uma clean room que você tenha criado¶
Se você criou uma clean room em uma conta, mas não consegue vê-la na conta de colaborador, aqui estão alguns motivos possíveis:
A clean room foi criada em uma região de hospedagem em nuvem diferente e você não habilitou o preenchimento automático entre nuvens.
Você não publicou sua clean room chamando
provider.create_or_update_cleanroom_listing.Você está chamando
consumer.view_cleanrooms()em vez deprovider.view_cleanrooms()(ou o contrário).Você não compartilhou a clean room, compartilhou a clean room com a conta errada ou abriu a conta de colaborador errada no Snowsight ou na UI/CLI de Clean rooms. Confirme se a conta com a qual espera ver sua clean room é aquela com a qual compartilhou a clean room e se você está conectado a essa conta compartilhada.
Há um pequeno atraso entre a publicação de uma clean room e o momento em que ela se torna visível ao colaborador.
Função desconhecida¶
Se você chamar um procedimento e receber um erro parecido com este trecho de código:
Unknown user-defined function SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.CONSUMER.<procedure name>
Estas são algumas causas possíveis:
- Você digitou o namespace errado.
Certifique-se de chamar a versão de
consumerouprovideradequada de seu procedimento. Muitos procedimentos têm versões para provedores e consumidores.- Você cometeu um erro no nome da função.
Consulte o guia de referência para ver a nomenclatura adequada.
- Você recebeu uma função de execução com acesso limitado, e a função que chamou não é permitida por sua função.
Para testar isso, execute o seguinte código SQL:
USE DATABASE samooha_by_snowflake_local_db; CALL IS_DATABASE_ROLE_IN_SESSION('samooha_run_role');
Se o trecho do código retornar TRUE, você tem permissões de função de execução com acesso limitado na API de sala limpa. Se você precisar de acesso mais amplo, peça acesso total ao administrador da sala limpa. Consulte a lista de procedimentos da função de execução permitidos na documentação consumer.grant_run_on_cleanrooms_to_role.
- Você não tem a SAMOOHA_APP_ROLE
Para ver se você pode usar a SAMOOHA_APP_ROLE, execute o seguinte comando:
-- Get current user name. SELECT current_user(); -- Add current user name in place as indicated. SHOW GRANTS TO USER <current_user_name> ->> select * from $1 where "role" = 'SAMOOHA_APP_ROLE';
Se não aparecer nenhum resultado, peça que o administrador lhe conceda acesso de API à sala limpa.
Verificar se um usuário instalou a sala limpa¶
Você pode verificar se um determinado usuário instalou a sala limpa especificada executando o código SQL a seguir. Substitua $consumer_locator e $cleanroom_name pelo localizador do consumidor e pelo nome da sala limpa.
SELECT * FROM snowflake.data_sharing_usage.application_state
WHERE consumer_account_locator = $consumer_locator
AND CONTAINS(package_name, UPPER(REPLACE($cleanroom_name, ' ', '_')));
Verificar seu histórico de consultas ou análises¶
Você pode ver seu histórico de consultas para análises executadas na UI ou no código. Esses históricos são armazenados e verificados separadamente.
Histórico de análises da UI¶
A UI de salas limpas mostra uma lista de todas as análises anteriores desta conta na página Analyses & Queries. Estes resultados são apenas para consultas executadas na UI.
Se você modificar ou excluir uma sala limpa, os relatórios de análise na UI dela serão excluídos, a menos que o relatório use um dos seguintes modelos:
Audience Overlap & Segmentation
SQL Query
Um modelo personalizado.
O histórico de consultas dos modelos listados acima será mantido mesmo que uma sala limpa seja modificada ou excluída.
Histórico de consultas da API¶
Para ver o histórico da conta de todas as chamadas executadas usando a API, incluindo as análises de modelo, faça o seguinte:
Faça login na Snowsight.
No menu de navegação, selecione Monitoring » Query History.
Use os filtros para encontrar a consulta associada à análise e selecione a consulta ou a análise.
Exemplos estendidos¶
Para ajudar você a entender como usar vários recursos das APIs de desenvolvedor, consulte os exemplos nas seções Use cases e Features da documentação de salas limpas.