Registro de dados¶
Este tópico descreve como registrar os dados para que possam ser vinculados a um Snowflake Data Clean Room.
Objetos com suporte¶
Os seguintes tipos de objetos podem ser vinculados a clean rooms:
Tabelas
Tabelas dinâmicas
Exibições
Exibições materializadas
Exibições seguras. O proprietário de uma exibição segura deve ser a função SAMOOHA_APP_ROLE.
Nota
†As tabelas externas e Iceberg devem ser ativadas antes de poderem ser usadas em uma clean room.
Registro de objetos de dados¶
Antes que os usuários possam vincular dados em um Snowflake Data Clean Room, os dados devem primeiro ser registrados. O registro de dados concede privilégios de USAGE e SELECT no objeto para SAMOOHA_APP_ROLE, que é usado pelo ambiente de clean room para acessar os dados. Se você registrar um banco de dados ou esquema, todos os objetos filho também serão registrados. Você deve ter o privilégio MANAGE GRANTS em um objeto para poder vinculá-lo.
Você pode registrar bancos de dados, esquemas e objetos usando a UI de clean room ou a API de clean room. Usar a UI de clean room é mais simples, mas exige que você tenha a função ACCOUNTADMIN. Usando as APIs de desenvolvedor, você pode registrar qualquer objeto no qual tenha privilégio OWNERSHIP sem usar a função ACCOUNTADMIN.
Importante
O registro de um banco de dados ou esquema não registra objetos adicionados após o registro. Você deve registrar o novo objeto individualmente ou usar a UI de clean room para navegar até Admin > Snowflake Admin > Database Registration e selecionar Resync.
Você pode vincular apenas os dados registrados pela sua conta. Ou seja, um provedor não pode vincular dados registrados pelo consumidor e um consumidor não pode vincular dados registrados pelo provedor. Depois que os dados são vinculados a uma clean room, eles podem ser acessados por qualquer pessoa com acesso à clean room, sujeito às configurações da parte vinculante (como políticas de junção e coluna).
Siga as etapas abaixo para registrar um banco de dados, esquema ou objeto usando a UI de clean room:
Faça login na UI de clean room como administrador de conta e execute uma das etapas a seguir:
Se estiver usando uma conta gerenciada, selecione Admin > My Account.
Se estiver usando uma conta Snowflake, selecione Admin > Snowflake Admin e entre no Snowflake como um usuário com a função ACCOUNTADMIN.
Selecione Admin > Snowflake Admin.
Selecione Log in to Snowflake, e autentique como um usuário com a função ACCOUNTADMIN.
Para ativar tabelas externas ou Iceberg na conta, ative a opção External & Iceberg Tables.
Na seção Access management for Snowflake objects, selecione Edit e, em seguida, selecione o banco de dados, o esquema ou o objeto para tornar seus dados vinculáveis aos usuários dessa conta.
Selecione Save.
Use a API de clean room para registrar bancos de dados, esquemas e objetos de forma programática. Observe que é necessário ter o privilégio MANAGE GRANTS em um objeto para registrá-lo.
As tabelas externas e Iceberg são registradas de forma diferente de outros tipos de objetos.
Os procedimentos a seguir estão disponíveis para registrar ou cancelar o registro de objetos:
Tipo de objeto |
Registro |
Cancelar registro |
---|---|---|
Banco de dados |
|
|
Esquema |
|
|
Esquema de acesso gerenciado |
|
|
Qualquer outro tipo de objeto compatível |
|
|
Exemplo:
USE ROLE <ROLE-WITH-MANAGE-GRANTS-PRIVILEGE>
CALL samooha_by_snowflake_local_db.library.register_schema(['MY_DB.MY_SCHEMA']);
Cancelamento do registro de objetos de dados¶
Quando uma tabela é vinculada a uma clean room, ela não pode ser removida. No entanto, você pode cancelar o registro do objeto na conta, o que removerá o acesso de qualquer clean room nessa conta.
Se você quiser remover dados de uma clean room ou conta, não exclua simplesmente o objeto subjacente; isso fará com que a clean room falhe. Em vez disso, use uma das técnicas a seguir para cancelar o registro do objeto.
Ao cancelar o registro de um objeto de uma conta, você também deve atualizar todas as clean rooms criadas que usaram esses dados.
As consultas de qualquer colaborador que dependam de dados excluídos falharão na próxima vez em que forem executadas.
Para cancelar o registro de um objeto em uma conta:
Faça login na UI de clean room como administrador de conta e execute uma das etapas a seguir:
Se estiver usando uma conta gerenciada, selecione Admin > My Account.
Se estiver usando uma conta Snowflake, selecione Admin > Snowflake Admin e entre no Snowflake como um usuário com a função ACCOUNTADMIN.
Selecione Admin > Snowflake Admin.
Selecione Log in to Snowflake, e autentique como um usuário com a função ACCOUNTADMIN.
Para ativar tabelas externas ou Iceberg na conta, ative a opção External & Iceberg Tables.
Na seção Access management for Snowflake objects, selecione Edit e, em seguida, desmarque o banco de dados, esquema ou objeto para tornar seus dados indisponíveis para os usuários dessa conta.
Selecione Save.
Atualize todas as clean rooms que você criou e que dependem desses dados.
Na API, chame o procedimento apropriado para cancelar o registro de um objeto de uma conta:
library.unregister_db
library.unregister_schema
library.unregister_managed_access_schema
library.unregister_objects
Habilitação de tabelas externas e Apache Iceberg™¶
Para permitir que tabelas externas e tabelas Iceberg sejam vinculadas a uma clean room, a conta deve primeiro ser configurada para permitir o uso de tabelas externas e Iceberg. Depois que as tabelas externas e Iceberg forem ativadas, elas poderão ser registradas, vinculadas e usadas da mesma forma que qualquer outra tabela.
O processo para habilitar as tabelas externas e Iceberg varia, dependendo se você está gerenciando a clean room usando a UI de clean room ou a API de clean room.
Requisitos de tabela externa e Iceberg¶
Tanto a conta de provedor quanto a de consumidor devem habilitar tabelas externas e Iceberg para permitir o uso completo de uma clean room vinculada a tabelas externas ou Iceberg.
Os provedores devem sempre ativar tabelas externas e tabelas Iceberg ao compartilhar uma clean room com uma conta gerenciada. Isso ocorre porque as contas gerenciadas sempre usam tabelas externas.
Se o provedor e o consumidor estiverem em regiões diferentes, somente o consumidor poderá vincular tabelas externas ou Iceberg em uma clean room.
A UI de clean room controla tabelas externas e Iceberg no nível da conta.
Aviso
Se a conta de consumidor não tiver ativado esse recurso, os consumidores serão impedidos de ingressar em qualquer clean room vinculada a tabelas externas ou Iceberg, ou serão impedidos de editar (mas ainda poderão executar) qualquer clean room em que já tenham ingressados vinculada a qualquer tipo de tabela.
O administrador de DCR, tanto na conta de provedor quanto na do consumidor, deve executar as seguintes etapas:
Faça login na UI de clean room como administrador de conta e execute uma das etapas a seguir:
Se estiver usando uma conta gerenciada, selecione Admin > My Account.
Se estiver usando uma conta Snowflake, selecione Admin > Snowflake Admin e entre no Snowflake como um usuário com a função ACCOUNTADMIN.
Habilite a alternância de External & Iceberg Tables. Isso permite o recurso em clean rooms criadas pela UI e API.
As tabelas externas e Iceberg agora podem ser selecionadas no painel Access management for Snowflake objects do administrador, onde podem ser selecionadas para torná-las disponíveis para clean rooms, da mesma forma que qualquer outro objeto.
No código, você deve habilitar as tabelas externas e Iceberg tanto no nível da conta quanto para cada clean room vinculada a tabelas externas ou Iceberg. Se você tiver ativado as tabelas externas e Iceberg na UI de clean room, não precisará ativá-las no código (não é necessário seguir as etapas listadas aqui).
Aviso
Se apenas uma conta tiver ativado esse recurso para sua conta ou clean room e vinculado uma tabela externa ou Iceberg, a outra conta poderá executar os modelos existentes, mas não poderá modificar a clean room de forma alguma até que as tabelas externas e Iceberg sejam permitidas na conta e na clean room.
Para habilitar e usar tabelas externas ou Iceberg para novas clean rooms em código:
Um usuário com a função ACCOUNTADMIN ativa primeiro as tabelas externas e Iceberg para todo o ambiente de clean room nas contas do provedor e do consumidor:
USE ROLE ACCOUNTADMIN; CALL samooha_by_snowflake_local_db.library.enable_external_tables_on_account();
Nota
As clean rooms existentes criadas com a UI de clean room não são afetadas por esse método. Para atualizar as clean rooms existentes criadas usando a UI de clean room, você deve habilitá-las no código individualmente, conforme mostrado nas próximas etapas, ou então habilitar as clean rooms usando a UI de clean room, que habilita o recurso para todas as clean rooms existentes.
Um provedor permite tabelas externas e Iceberg para sua clean room. Observe que isso aciona uma verificação de segurança que, se for bem-sucedida, gerará uma nova versão de clean room; portanto, você precisará atualizar a diretiva de lançamento padrão.
USE ROLE SAMOOHA_APP_ROLE; CALL samooha_by_snowflake_local_db.provider.enable_external_tables_for_cleanroom( $cleanroom_name); -- Call until scan is complete. call samooha_by_snowflake_local_db.provider.view_cleanroom_scan_status($cleanroom_name); -- When scan is successful, update with patch version mentioned in return value from enable_external_tables_for_cleanroom. call samooha_by_snowflake_local_db.provider.set_default_release_directive($cleanroom_name, 'V1_0', '<PATCH_VERSION>');
Um consumidor também deve permitir o uso de tabelas externas e Iceberg na mesma clean room:
USE ROLE SAMOOHA_APP_ROLE; CALL samooha_by_snowflake_local_db.consumer.enable_external_tables_for_cleanroom( $cleanroom_name);
Depois que as tabelas externas e Iceberg forem ativadas para uma clean room, os colaboradores poderão registrar e vincular essas tabelas da mesma forma que qualquer outra tabela.