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 das salas limpas ou a API de salas limpas. Usar a UI das salas limpas é mais simples, mas requer que você tenha a função ACCOUNTADMIN. Usando as APIs do desenvolvedor , você pode registrar qualquer objeto no qual você tenha o 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 das salas limpas para navegar para 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 salas limpas:
Faça login na UI de salas limpas como administrador de conta e siga uma das seguintes etapas:
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 API de salas limpas para registrar bancos de dados, esquemas e objetos programaticamente. Observe que você precisa do 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']);
Registro de tabelas ou exibições que têm políticas Snowflake aplicadas¶
Se você quiser vincular em dados que tenham uma política Snowflake aplicada e a política Snowflake estiver armazenada em um banco de dados diferente dos dados de origem, você deverá conceder uso de referência no banco de dados da política para salas limpas. Você pode fazer isso uma vez por conta ou uma vez por sala limpa.
Conceder uso de referência uma vez por conta¶
Para conceder o uso de referência a um banco de dados uma vez por conta e que ele seja concedido automaticamente para cada sala limpa, conceda o uso de referência ao SAMOOHA_APP_ROLE executando o seguinte comando SQL. Substitua o espaço reservado do banco de dados pelo nome do seu banco de dados.
GRANT REFERENCE_USAGE ON DATABASE <database_name>
TO ROLE SAMOOHA_APP_ROLE
WITH GRANT OPTION;
Conceder uso de referência uma vez por sala limpa¶
Se você preferir conceder o uso de referência a um banco de dados por sala limpa em vez de a todas as salas limpas da conta, execute o seguinte comando SQL. Substitua os espaços reservados para o nome do banco de dados e o ID da sala limpa pelos valores apropriados:
GRANT REFERENCE_USAGE ON DATABASE <database_name>
TO SHARE IN APPLICATION PACKAGE SAMOOHA_CLEANROOM_<clean_room_ID>;
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 salas limpas como administrador de conta e siga uma das seguintes etapas:
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_dblibrary.unregister_schemalibrary.unregister_managed_access_schemalibrary.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 tabelas externas e Iceberg varia dependendo se você está gerenciando a sala limpa usando a UI de salas limpas ou a API de salas limpas.
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 salas limpas 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 salas limpas como administrador de conta e siga uma das seguintes etapas:
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 tabelas externas e Iceberg em tanto o nível da conta e também para cada sala limpa vinculada em tabelas externas ou Iceberg. Se você tiver habilitado tabelas externas e Iceberg na UI de salas limpas, não é necessário habilitá-los no código (não é necessário seguir os passos listados 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
Salas limpas existentes criadas com a UI de salas limpas não são afetados por esse método. Para atualizar salas limpas existentes criadas usando a UI de salas limpas você deve habilitá-los no código individualmente, conforme mostrado nas próximas etapas, ou então habilitar salas limpas usando a UI de salas limpas, que habilita o recurso para todas as salas limpas existentes.
A provider enables external and Iceberg tables for their clean room. Note that this triggers a security scan which, if successful, generates a new clean room version, so you will need to update the default release directive.
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.