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.
You can register databases, schemas, and objects using the Clean rooms UI or the Clean rooms API. Using the Clean rooms UI is simpler, but requires that you have the ACCOUNTADMIN role. Using the developer APIs, you can register any object on which you have OWNERSHIP privilege without using the ACCOUNTADMIN role.
Importante
Registering a database or schema does not register objects added after the registration. You must either register the new object individually or use the Clean rooms UI to navigate to Admin > Snowflake Admin > Database Registration and select 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).
Follow the steps below to register a database, schema, or object using the Clean rooms UI:
Sign in to the Clean rooms UI as an account administrator and then take one of the following steps:
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 the Clean rooms API to register databases, schemas, and objects programmatically. Note that you need MANAGE GRANTS privilege on an object to register it.
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:
Sign in to the Clean rooms UI as an account administrator and then take one of the following steps:
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.
The process for enabling external and Iceberg tables varies, depending on whether you are managing the clean room using the Clean rooms UI or the Clean rooms API.
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.
The Clean rooms UI controls external and Iceberg tables at the account level.
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:
Sign in to the Clean rooms UI as an account administrator and then take one of the following steps:
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.
In code, you must enable external and Iceberg tables at both the account level and also for each clean room that links in external or Iceberg tables. If you have enabled external and Iceberg tables in the Clean rooms UI, you do not need to enable them in code (you don’t need to take the steps listed here).
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
Existing clean rooms created with the Clean rooms UI are not affected by this method. To update existing clean rooms created using the Clean rooms UI you must either enable them in code individually, as shown in the next steps, or else enable clean rooms using the Clean rooms UI, which enables the feature for all existing clean rooms.
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.