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.
...
Copy

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;`
Copy

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.providerProcedimentos específicos do provedor. Esses procedimentos podem ser chamados apenas em clean rooms criadas na conta atual.

  • samooha_by_snowflake_local_db.consumerProcedimentos 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;
    
    Copy
  • 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_consumers ou provider.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_cleanrooms ou provider.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>');
Copy

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 de provider.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 ou provider 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');
Copy

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';
Copy

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, ' ', '_')));
Copy

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:

  1. Faça login na Snowsight.

  2. No menu de navegação, selecione Monitoring » Query History.

  3. 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.