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 clean rooms em um warehouse que o SAMOOHA_APP_ROLE possa usar. As clean rooms oferecem ao warehouse APP_WH acesso à API de clean rooms.

-- 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õ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.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). (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 clean room se uma clean room tiver sido criada usando a API.

  • Use o ID de clean room se a clean room foi criada usando a UI de clean rooms.

Você pode ver o nome e o ID da clean room chamando describe_cleanroom.

Configuração de contas, usuários e funções

Tecnicamente, você não precisa usar a UI de clean rooms para desenvolver clean rooms: a maior parte da funcionalidade da clean room está disponível usando procedimentos armazenados. No entanto, alguns recursos estão disponíveis somente na UI, e alguns são mais rápidos de executar na UI. E como muitos usuários usam exclusivamente a UI, é importante ver como sua clean room se comporta na UI, especialmente se você criar um formulário Web de configuração do usuário para uma clean room que tenha criado. Portanto, você deve solicitar a um administrador de clean room que o adicione como gerente de clean room ou superior nas contas de clean room apropriadas.

Recomendamos, no mínimo, que você tenha contas Snowflake separadas de provedor e consumidor para testar os dois lados de uma clean room. Dependendo do seu caso de uso, você também pode querer 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.

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 clean room tiver sido criada no aplicativo da Web, use o ID de clean room. Você pode ver o nome e o ID da clean room chamando provider.view_cleanrooms ou provider.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 vários bancos de dados locais durante a instalação. Aqui estão alguns dos objetos mais úteis:

SAMOOHA_CLEANROOM_cleanroom_id

Contém informações específicas de cada clean room criada nessa conta. Inclui os seguintes itens:

  • Admin: chaves criptográficas, orçamento de privacidade, logs de solicitações, solicitações de análises de provedores e muito mais.

  • Shared_schema: política de junção, status de LAF, tabelas vinculadas e versões.

  • Templates: lista de modelos de ativação, modelos personalizados e cadeias de modelos nessa clean room.

SAMOOHA_CLEANROOM_REQUESTS_cleanroom_id

Contém o histórico de solicitações, como solicitações de vários provedores, solicitações de modelos e solicitações de consultas.

SAMOOHA_BY_SNOWFLAKE_LOCAL_DB:
  • Provider.procedures: definições de todos os procedimentos da API de provedor

  • Consumer.procedures: definições de todos os procedimentos da API de consumidor.

  • Library.procedures: definições de todos os procedimentos da API para provedores e consumidores.

  • Public.consumer_activation_summary: resultados da ativação do consumidor.

  • Public.provider_activation_summary: resultados da ativação do provedor.

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.


(Consumidor) Não é possível definir políticas de associação ou executar outras ações básicas em uma clean room associada

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

Resultados gerais inesperados

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.

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 como este: … code-block:: sqlexample

Função desconhecida definida pelo usuário SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.CONSUMER. <nome do procedimento>

Você não tem SAMOOHA_APP_ROLE ou digitou incorretamente o nome da função.

Isso também pode significar que o usuário recebeu uma função de execução de acesso limitado e que a função que está chamando não é permitida pela sua função. Você pode testar isso tentando executar um dos procedimentos permitidos para consumer.grant_run_on_cleanrooms_to_role. Se o procedimento for bem-sucedido, você pode estar usando uma função limitada. Se falhar, é provável que você não tenha permissão para executar a API de clean rooms nessa conta.

Para verificar se você tem a função SAMOOHA_APP_ROLE, execute o seguinte comando:

SELECT IS_ROLE_IN_SESSION( 'SAMOOHA_APP_ROLE' );
Copy

Se você receber o seguinte erro:

Database <cleanroom name> does not exist or not authorized. in RUN_ANALYSIS_STRING
Copy

Você recebeu uma função de execução temporária que foi revogada. Solicite a um administrador de clean rooms uma nova função de execução ou acesso total à função SAMOOHA_APP_ROLE.

Verifique seu histórico de consultas

Você pode verificar seu histórico de consultas para consultas executadas na UI ou no código. Esses históricos são armazenados e verificados separadamente.

Histórico de consultas da UI

A UI de clean rooms mostra uma lista de todas as consultas e resultados anteriores para essa conta na página Analyses & Queries. Esses resultados são apenas para consultas executadas na UI.

Histórico de consultas da API

Para ver o histórico de contas de consultas executadas usando a API, faça o seguinte:

  1. Entre no Snowsight.

  2. Selecione Monitoring » Query History.

  3. Use os filtros para encontrar a consulta associada à análise e, em seguida, copie o ID da consulta.

  4. Abra uma planilha e execute uma consulta que recupere os resultados com base no ID de consulta da consulta. Por exemplo, se o ID de consulta for ABC123, então execute o seguinte:

    SELECT * FROM TABLE(result_scan(ABC123));
    
    Copy

    Se o warehouse for suspenso entre a execução da análise da API e o uso desta consulta para recuperar resultados, talvez você não consiga obter os resultados.

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.