Guia do desenvolvedor do Snowflake Data Clean Rooms¶
Esta página fornece algumas diretrizes para usuários que desejam criar ou gerenciar clean rooms ou modelos no Snowflake de forma programática.
O Snowflake expõe procedimentos armazenados que permitem que você desenvolva aplicativos para criar ou controlar clean rooms. Esses procedimentos armazenados podem ser executados em qualquer interface que possa acessar a conta Snowflake associada ao seu ambiente de clean room, incluindo notebooks ou planilhas do Snowsight, bem como o Snowflake CLI. Esses procedimentos podem ser chamados em SQL ou em qualquer linguagem compatível com as interfaces do Snowflake.
Configurando seu ambiente¶
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.
As UI de clean rooms: use as UI de clean rooms para configurar, gerenciar ou criar clean rooms. A maioria dos analistas de clean rooms usa a UI em vez do código; portanto, pode ser útil ver e testar a experiência de suas clean rooms na UI. Além disso, há alguns recursos que estão disponíveis apenas nas UI de clean rooms.
O Snowsight é útil para explorar bancos de dados e outros objetos e pesquisar objetos.
Configuração de codificação¶
Função e warehouse necessários¶
A API de clean rooms exige a função SAMOOHA_APP_ROLE para acesso total à API. Solicite ao administrador da clean room que conceda a você acesso total à API.
As clean rooms também oferecem suporte criando 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.
-- 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õem um conjunto de procedimentos armazenados permitindo que um provedor crie, configure e compartilhe uma clean room. Esses procedimentos podem ser acessados por qualquer ambiente de linha de comando compatível com os procedimentos Snowflake, incluindo notebooks, pastas de trabalho e Snowflake CLI. Você pode usar a API de clean rooms em qualquer linguagem que ofereça suporte a procedimentos armazenados. A documentação aqui mostra o uso de SQL, mas você também pode usar Python ou qualquer outra linguagem compatível.
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). (Essas informações estão documentadas nas páginas de referência do provedor e consumidor)
Alguns procedimentos têm versões para provedores e consumidores. Os resultados são adequados ao esquema: por exemplo, provider.view_cleanrooms
lista todas as clean rooms na conta atual da qual você é provedor e consumer.view_cleanrooms
lista todas as clean rooms na conta atual da qual você é consumidor.
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
.
Configuração de contas, usuários e funções¶
Você não é obrigado a usar a UI de salas limpas para desenvolver salas limpas: a maioria das funcionalidades delas está disponível por meio dos procedimentos armazenados. 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 exclusivamente a UI, é importante ver como sua sala limpa se comporta na UI, em especial se você criar um formulário da Web de configuração de usuário para a sala limpa criada. 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 seu uso típico: por exemplo, “Conta de consumidor”, “Conta de provedor” e “Conta entre nuvens” Isso pode ajudar quando você tem várias contas de teste e precisa saber em qual delas deve fazer login.
Salas limpas de teste interno¶
É possível testar o desenvolvimento de uma sala limpa agindo como provedor e consumidor usando a mesma conta Snowflake. Esse procedimento é chamado de sala limpa de teste interno. Para criar uma sala limpa de teste interno, basta passar a conta de provedor para provider.add_consumers
como único consumidor. Usar uma única conta para provedor e consumidor é útil para testes rápidos de recursos, mas esteja ciente das seguintes restrições das salas limpas de teste interno:
Quando uma sala limpa é compartilhada com a conta do provedor, ela não pode ser compartilhada com outras contas e sempre será uma sala limpa de teste interno.
Não há suporte para os seguintes recursos nas salas limpas de teste interno:
consumer.view_cleanrooms
não mostra nenhuma sala limpa 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_consumers
ouprovider.view_request_logs
)Modelos definidos pelo consumidor
Análises multiprovedor
Modelos personalizados (provedor ou consumidor)
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: download:pasta de trabalho de amostra </samples/clean-rooms/internal-testing-cleanroom.ipynb>
que demonstra o uso de uma sala limpa em uma única conta para provedor e consumidor.
Diretrizes e recomendações¶
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 clean rooms para a mesma conta, ou o contrário, portanto, você deve se certificar de que a UI de clean rooms e o Snowsight estejam abertos na mesma conta.
Nome de clean room vs. ID de clean room¶
Ao usar a API, para procedimentos que precisam de um argumento cleanroom_name
, determine se você deve usar o nome de clean room ou o ID de clean room da seguinte forma:
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_cleanrooms
ouprovider.describe_cleanroom
.
Atualize sua clean room sempre que fizer alterações¶
Para alterar qualquer configuração de clean room, inclusive modelos, permissões ou políticas, chame provider.create_or_update_cleanroom_listing
para ativar as alterações. Em alguns casos, as alterações podem ser visíveis antes de chamar esse procedimento, mas só serão aplicadas corretamente depois que você chamar provider.create_or_update_cleanroom_listing
.
Interoperabilidade entre clean rooms criadas em código ou na UI¶
Quando você cria uma clean room na API, alguns recursos não podem ser modificados na UI de clean rooms. Por exemplo, você não pode adicionar modelos adicionais, nem mesmo modelos Snowflake de estoque, no código de uma clean room criada por UI. Você também não pode alterar as configurações de privacidade diferencial.
Descrição dos objetos da clean room¶
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.
- SAMOOHA_BY_SNOWFLAKE.TEMPLATES.TEMPLATES:
Mantém a lista e a definição de todos os modelos Snowflake de estoque disponíveis para clean rooms nessa conta.
Solução de problemas¶
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
consumer
ouprovider
adequada 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 no Snowsight.
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 ajudá-lo a entender como usar vários recursos das APIs de desenvolvedor, consulte os exemplos na seção Use cases da documentação de clean rooms.