Enregistrement des données¶
Cette rubrique décrit comment enregistrer des données afin qu’elles puissent être liées à un Snowflake Data Clean Room.
Objets pris en charge¶
Les types d’objets suivants peuvent être liés aux clean rooms :
Tables
Tables dynamiques
Vues
Vues matérialisées
Vues sécurisées. Le propriétaire d’une vue sécurisée doit être le rôle SAMOOHA_APP_ROLE.
Note
† Les tables externe et Iceberg doivent être activées avant de pouvoir être utilisées dans une clean room.
Enregistrement des objets de données¶
Avant que les utilisateurs puissent lier des données à un site Snowflake Data Clean Room, les données doivent d’abord être enregistrées. L’enregistrement des données accorde à USAGE et SELECT des privilèges sur l’objet à SAMOOHA_APP_ROLE, qui est utilisé par l’environnement de la clean room pour accéder aux données. Si vous enregistrez une base de données ou un schéma, tous les objets enfants sont également enregistrés. Vous devez disposer du privilège MANAGE GRANTS sur un objet pour pouvoir le lier.
Vous pouvez enregistrer des bases de données, des schémas et des objets en utilisant l’UI de clean room ou l’API de clean room. L’utilisation de l’UI de clean room est plus simple, mais nécessite que vous ayez le rôle ACCOUNTADMIN. En utilisant le développeur d’APIs, vous pouvez enregistrer n’importe quel objet sur lequel vous avez le privilège OWNERSHIP sans utiliser le rôle ACCOUNTADMIN.
Important
L’enregistrement d’une base de données ou d’un schéma n’enregistre pas les objets ajoutés après l’enregistrement. Vous devez soit enregistrer le nouvel objet individuellement, soit utiliser l’UI de clean room pour naviguer vers Admin > Snowflake Admin > Database Registration et sélectionner Resync.
Vous ne pouvez lier que les données enregistrées par votre compte. En d’autres termes, un fournisseur ne peut pas établir de lien entre les données enregistrées par le consommateur et un consommateur ne peut pas établir de lien entre les données enregistrées par le fournisseur. Une fois que les données sont liées dans une clean room, toute personne ayant accès à la clean room peut y accéder, sous réserve des paramètres de la partie qui établit le lien (tels que les politiques de jointure et de colonne).
Suivez les étapes ci-dessous pour enregistrer une base de données, un schéma ou un objet à l’aide de l’UI de clean room :
Connectez-vous à l’UI de clean room en tant qu’administrateur de compte, puis effectuez l’une des opérations suivantes :
Si vous utilisez un compte géré, sélectionnez Admin > My Account.
Si vous utilisez un compte Snowflake, sélectionnez Admin > Snowflake Admin et connectez-vous à Snowflake en tant qu’utilisateur ayant le rôle ACCOUNTADMIN.
Sélectionnez Admin > Snowflake Admin.
Sélectionnez Log in to Snowflake et authentifiez-vous en tant qu’utilisateur avec le rôle ACCOUNTADMIN.
Pour activer les tables externes ou Iceberg dans le compte, activez la bascule External & Iceberg Tables.
Dans la section Access management for Snowflake objects, sélectionnez Edit, puis sélectionnez la base de données, le schéma ou l’objet pour que ses données puissent être reliées par les utilisateurs de ce compte.
Sélectionnez Save.
Utilisez l’API de clean room pour enregistrer des bases de données, des schémas et des objets de manière programmatique. Notez que vous devez disposer du privilège MANAGE GRANTS sur un objet pour l’enregistrer.
Les tables externes et les tables Iceberg sont enregistrées différemment des autres types d’objets.
Les procédures suivantes sont disponibles pour enregistrer ou désenregistrer des objets :
Type d’objet |
Inscription |
Désinscription |
---|---|---|
Base de données |
|
|
Schéma |
|
|
Schéma d’accès géré |
|
|
Tout autre type d’objet pris en charge |
|
|
Exemple :
USE ROLE <ROLE-WITH-MANAGE-GRANTS-PRIVILEGE>
CALL samooha_by_snowflake_local_db.library.register_schema(['MY_DB.MY_SCHEMA']);
Désenregistrement des objets de données¶
Une fois qu’une table est liée à une clean room, elle ne peut plus en être retirée. Toutefois, vous pouvez désenregistrer l’objet dans le compte, ce qui en supprimera l’accès à toutes les clean room de ce compte.
Si vous souhaitez supprimer des données d’une salle blanche ou d’un compte, ne supprimez pas simplement l’objet sous-jacent ; cela entraînera l’échec de la clean room. Au lieu de cela, utilisez l’une des techniques suivantes pour désenregistrer l’objet.
Lorsque vous désenregistrez un objet d’un compte, vous devez également mettre à jour toutes les clean room que vous avez créées et qui utilisaient ces données.
Les requêtes des collaborateurs qui dépendent des données supprimées échoueront lors de leur prochaine exécution.
Pour désenregistrer un objet dans un compte :
Connectez-vous à l’UI de clean room en tant qu’administrateur de compte, puis effectuez l’une des opérations suivantes :
Si vous utilisez un compte géré, sélectionnez Admin > My Account.
Si vous utilisez un compte Snowflake, sélectionnez Admin > Snowflake Admin et connectez-vous à Snowflake en tant qu’utilisateur ayant le rôle ACCOUNTADMIN.
Sélectionnez Admin > Snowflake Admin.
Sélectionnez Log in to Snowflake et authentifiez-vous en tant qu’utilisateur avec le rôle ACCOUNTADMIN.
Pour activer les tables externes ou Iceberg dans le compte, activez la bascule External & Iceberg Tables.
Dans la section Access management for Snowflake objects, sélectionnez Edit, puis désélectionnez la base de données, le schéma ou l’objet pour rendre ses données indisponibles pour les utilisateurs de ce compte.
Sélectionnez Save.
Mettez à jour toutes les clean rooms que vous avez créées et qui dépendent de ces données.
Dans l’API, appelez la procédure appropriée pour désenregistrer un objet d’un compte :
library.unregister_db
library.unregister_schema
library.unregister_managed_access_schema
library.unregister_objects
Activation des tables externes et Apache Iceberg™¶
Pour que des tables externes et des tables Iceberg puissent être liées à une clean room, le compte doit d’abord être configuré de manière à permettre l’utilisation de tables externes et de tables Iceberg. Une fois les tables externes et Iceberg activées, elles peuvent être enregistrées, liées et utilisées comme n’importe quelle autre table.
Le processus d’activation des tables externes et Iceberg varie selon que vous gérez la clean room à l’aide de l’UI ou de l’API de clean room.
Exigences relatives à la table externe et à la table Iceberg¶
Le compte du fournisseur et celui du consommateur doivent activer les tables externes et les tables Iceberg pour permettre l’utilisation complète d’une clean room qui établit des liens avec des tables externes ou des tables Iceberg.
Les fournisseurs doivent toujours activer les tables externes et les tables Iceberg lorsqu’ils partagent une clean room avec un compte géré. En effet, les comptes gérés utilisent toujours des tables externes.
Si le fournisseur et le consommateur se trouvent dans des régions différentes, seul le consommateur peut lier des tables externes ou Iceberg à une clean room.
L’UI de clean room contrôle les tables externes et Iceberg au niveau du compte.
Avertissement
Si le compte du consommateur n’a pas activé cette fonction, les consommateurs ne pourront pas rejoindre de clean room ayant un lien avec des tables externes ou des tables Iceberg, ou ne pourront pas modifier (mais pourront toujours exécuter) des clean room déjà rejointes ayant un lien avec l’un ou l’autre type de table.
L’administrateur de DCR, tant pour le compte du fournisseur que pour celui du consommateur, doit prendre les mesures suivantes :
Connectez-vous à l’UI de clean room en tant qu’administrateur de compte, puis effectuez l’une des opérations suivantes :
Si vous utilisez un compte géré, sélectionnez Admin > My Account.
Si vous utilisez un compte Snowflake, sélectionnez Admin > Snowflake Admin et connectez-vous à Snowflake en tant qu’utilisateur ayant le rôle ACCOUNTADMIN.
Activer la bascule External & Iceberg Tables. Cela permet d’utiliser la fonction dans les clean room créées par UI et API.
Les tables externes et Iceberg sont désormais sélectionnables dans le panneau Access management for Snowflake objects de l’administrateur, où elles peuvent être sélectionnées pour être mises à la disposition des clean room, au même titre que n’importe quel autre objet.
Dans le code, vous devez activer les tables externes et les tables Iceberg à l’adresse au niveau du compte et également à l’adresse pour chaque clean room qui établit un lien avec les tables externes ou les tables Iceberg. Si vous avez activé les tables externe et Iceberg dans l’UI de clean room, il n’est pas nécessaire de les activer dans le code (vous n’avez pas besoin de suivre les étapes listées ici).
Avertissement
Si un seul compte a activé cette fonction pour son compte ou sa salle blanche et a lié une table externe ou une table Iceberg, l’autre compte pourra exécuter les modèles existants, mais ne pourra pas modifier la clean room de quelque manière que ce soit jusqu’à ce que les tables externes et les tables Iceberg soient autorisées à la fois pour ce compte et pour la clean room.
Permettre et utiliser des tables externes ou Iceberg pour les nouvelles clean room dans le code :
Un utilisateur ayant le rôle ACCOUNTADMIN active d’abord les tables externes et Iceberg pour l’ensemble de l’environnement de la clean room dans les comptes fournisseur et consommateur :
USE ROLE ACCOUNTADMIN; CALL samooha_by_snowflake_local_db.library.enable_external_tables_on_account();
Note
Les clean room existantes créées avec l’UI de clean room ne sont pas concernées par cette méthode. Pour mettre à jour les clean room existantes créées à l’aide de l’UI de clean room, vous devez soit les activer individuellement dans le code, comme indiqué dans les étapes suivantes, soit activer les clean room à l’aide de l’UI de clean room, qui active la fonction pour toutes les clean room existantes.
Un fournisseur permet l’installation de tables externes et de tables Iceberg dans sa clean room. Notez que cela déclenche une analyse de sécurité qui, si elle réussit, génère une nouvelle version de clean room. Vous devrez donc mettre à jour la directive de version par défaut.
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>');
Un consommateur doit également permettre l’utilisation de tables externes et de tables Iceberg dans la même clean room :
USE ROLE SAMOOHA_APP_ROLE; CALL samooha_by_snowflake_local_db.consumer.enable_external_tables_for_cleanroom( $cleanroom_name);
Une fois que les tables externes et Iceberg ont été activées pour une clean room, les collaborateurs peuvent enregistrer et lier ces tables de la même manière que n’importe quelle autre table.