Snowflake Data Clean Rooms: tabelas externas e iceberg

Quando tabelas externas e tabelas Iceberg são vinculadas em uma sala limpa, há chamadas externas que podem permitir que um colaborador extraia informações confidenciais da sala limpa. Devido a isso, tanto o provedor quanto o consumidor precisam consentir antes que a outra parte possa usar esses objetos na sala limpa.

Para limitações ao incluir tabelas externas e tabelas Iceberg em uma sala limpa, consulte Limitações.

Salas limpas de aplicativo da web

Para controlar a inclusão de tabelas externas e tabelas Iceberg em salas limpas criadas e instaladas no aplicativo da web, os administradores de provedor e consumidor configuram seu ambiente de sala limpa para permitir explicitamente esses objetos.

  • Para salas limpas compartilhadas com um consumidor por um provedor, o consumidor não pode incluir tabelas externas e tabelas Iceberg, a menos que o provedor as permita explicitamente para o ambiente de sala limpa do provedor.

  • Para os consumidores, os usuários de salas limpas não podem instalar uma sala limpa que tenha tabelas externas ou tabelas Iceberg, a menos que o ambiente da sala limpa permita. Mesmo que o ambiente da sala limpa do consumidor permita esses objetos, os usuários da sala limpa são avisados quando esses tipos de tabelas são vinculados para que possam decidir não instalar a sala limpa.

Para configurar um ambiente de sala limpa para permitir tabelas externas e tabelas Iceberg:

  1. Faça login no aplicativo da Web.

  2. Faça uma das seguintes opções:

    • Se você estiver usando uma conta gerenciada, selecione Admin » My Account.

    • Se você estiver usando uma conta Snowflake, selecione Admin » Snowflake Admin e faça login no Snowflake como um usuário com a função ACCOUNTADMIN.

  3. Ative External & Iceberg Tables.

API do desenvolvedor de salas limpas

Permitir tabelas externas e tabelas Iceberg em uma sala limpa criada e instalada usando APIs do desenvolvedor é um processo de duas etapas:

  • Primeiro, um usuário com a função ACCOUNTADMIN permite esses tipos de tabelas para todo o ambiente de sala limpa.

  • Em seguida, os usuários de salas limpas permitem esses objetos para salas limpas específicas à medida que são criados ou instalados.

Permissão para tabelas externas e tabelas Iceberg em ambiente de sala limpa

O administrador de conta do provedor e do consumidor deve permitir explicitamente tabelas externas e tabelas Iceberg no ambiente de sala limpa antes que usuários individuais possam permiti-las em uma sala limpa.

Para permitir tabelas externas e tabelas Iceberg em um ambiente de sala limpa, o administrador de conta executa:

USE ROLE ACCOUNTADMIN;

CALL samooha_by_snowflake_local_db.library.enable_external_tables_on_account();
Copy

Permissão para tabelas externas e tabelas Iceberg em uma sala limpa específica

O provedor que está criando uma sala limpa e o consumidor que a está instalando devem permitir tabelas externas e tabelas Iceberg na sala limpa.

Provedor:

Antes de poder vincular uma tabela externa ou uma tabela Iceberg em uma sala limpa, o provedor deve chamar o comando providers.enable_external_tables_for_cleanroom. Por exemplo, se o provedor quiser adicionar uma tabela Iceberg à sala limpa insights_cleanroom, ele deverá executar:

CALL samooha_by_snowflake_local_db.provider.enable_external_tables_for_cleanroom(
    'insights_cleanroom');
Copy
Consumidor:

Depois que um consumidor instala uma sala limpa, ele pode aprovar a inclusão de tabelas externas ou tabelas Iceberg pelo provedor executando o comando consumers.enable_external_tables_for_cleanroom. Por exemplo, se o consumidor instalou uma sala limpa overlap_cleanroom que inclui uma tabela Iceberg, ele deve executar:

CALL samooha_by_snowflake_local_db.consumer.enable_external_tables_for_cleanroom(
    'overlap_cleanroom');
Copy

Registro de uma tabela externa ou uma tabela Iceberg

Assim como acontece com outros objetos, tabelas externas e tabelas Iceberg devem ser registradas antes de poderem ser vinculadas. Use o parâmetro apropriado do comando library.register_table_or_view para indicar o tipo de tabela.

Tabela externa

O quarto parâmetro do comando library.register_table_or_view especifica se um objeto é uma tabela externa. Por exemplo, para registrar uma tabela externa my_ext_table no esquema samooha_sample_database.demo, execute:

CALL samooha_by_snowflake_local_db.library.register_table_or_view(
    ['SAMOOHA_SAMPLE_DATABASE.DEMO.MY_EXT_TABLE'],
    false,
    false,
    true,
    false);
Copy
Tabela Iceberg

O terceiro parâmetro do comando library.register_table_or_view especifica se um objeto é uma tabela Iceberg. Por exemplo, para registrar a tabela Iceberg customers no esquema samooha_sample_database.demo, execute:

CALL samooha_by_snowflake_local_db.library.register_table_or_view(
    ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
    false,
    true,
    false,
    false);
Copy

Limitações

  • Como as contas gerenciadas sempre usam tabelas externas, os provedores devem habilitar tabelas externas e tabelas Iceberg ao compartilhar uma sala limpa com uma conta gerenciada.

  • Colaboradores em diferentes regiões não podem vincular tabelas externas e tabelas Iceberg em salas limpas.

  • Não é possível executar uma análise com o modelo de consulta SQL se sua configuração aplicar uma política de agregação ou uma política de projeção à tabela externa ou à tabela Iceberg.