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:
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.
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();
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 limpainsights_cleanroom
, ele deverá executar:CALL samooha_by_snowflake_local_db.provider.enable_external_tables_for_cleanroom( 'insights_cleanroom');
- 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 limpaoverlap_cleanroom
que inclui uma tabela Iceberg, ele deve executar:CALL samooha_by_snowflake_local_db.consumer.enable_external_tables_for_cleanroom( 'overlap_cleanroom');
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 externamy_ext_table
no esquemasamooha_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);
- 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 Icebergcustomers
no esquemasamooha_sample_database.demo
, execute:CALL samooha_by_snowflake_local_db.library.register_table_or_view( ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'], false, true, false, false);
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.