Daten registrieren¶
In diesem Thema wird beschrieben, wie Sie Daten registrieren, damit sie mit einem Snowflake Data Clean Room verknüpft werden können.
Unterstützte Objekte¶
Die folgenden Objekttypen können mit Clean Rooms verbunden werden:
Tabellen
Dynamische Tabellen
Ansichten
Materialisierte Ansichten
Sichere Ansichten. Der Eigentümer einer sicheren Ansicht muss die Rolle SAMOOHA_APP_ROLE haben.
Bemerkung
†Externe und Iceberg-Tabellen müssen aktiviert werden, bevor sie in einem Clean Room verwendet werden können.
Registrieren von Datenobjekten¶
Bevor Benutzer Daten in einem Snowflake Data Clean Room verknüpfen können, müssen die Daten zunächst registriert werden. Die Registrierung von Daten gewährt SAMOOHA_APP_ROLE USAGE- und SELECT-Berechtigungen auf das Objekt, die von der Clean Room-Umgebung für den Zugriff auf Daten verwendet werden. Wenn Sie eine Datenbank oder ein Schema registrieren, werden auch alle untergeordneten Objekte registriert. Sie müssen über die Berechtigung MANAGE GRANTS für ein Objekt verfügen, um es verknüpfen zu können.
Sie können Datenbanken, Schemas und Objekte mit der Clean Rooms-UI oder der Clean Rooms-API registrieren. Die Verwendung der Clean Rooms-UI ist einfacher, aber dafür müssen Sie über die ACCOUNTADMIN-Rolle verfügen. Mit den Entwickler-APIs können Sie jedes Objekt, für das Sie die OWNERSHIP-Berechtigung haben, ohne ACCOUNTADMIN-Rolle registrieren.
Wichtig
Durch die Registrierung einer Datenbank oder eines Schemas werden keine Objekte registriert, die nach der Registrierung hinzugefügt wurden. Sie müssen das neue Objekt entweder einzeln registrieren oder mit der Clean Rooms-UI zu Admin > Snowflake Admin > Database Registration navigieren und Resync auswählen.
Sie können nur Daten verknüpfen, die auf Ihrem Konto registriert sind. Das heißt, ein Anbieter kann keine vom Verbraucher registrierten Daten verknüpfen und ein Verbraucher kann keine vom Anbieter registrierten Daten verknüpfen. Sobald die Daten in einem Clean Room verknüpft sind, kann jeder, der Zugang zum Clean Room hat, darauf zugreifen, vorbehaltlich der Einstellungen der verknüpfenden Partei (z. B. Verknüpfungs- und Spaltenrichtlinien).
Gehen Sie wie folgt vor, um eine Datenbank, ein Schema oder ein Objekt mit der Clean Rooms-UI zu registrieren:
Melden Sie sich bei der Clean Rooms-UI als Kontoadministrator an, und führen Sie dann einen der folgenden Schritte aus:
Wenn Sie ein verwaltetes Konto verwenden, wählen Sie Admin > My Account.
Wenn Sie ein Snowflake-Konto verwenden, wählen Sie Admin > Snowflake Admin und melden Sie sich bei Snowflake als Benutzer mit der Rolle ACCOUNTADMIN an.
Wählen Sie Admin > Snowflake Admin aus.
Wählen Sie Log in to Snowflake aus, und authentifizieren Sie sich als Benutzer mit der Rolle ACCOUNTADMIN.
Um externe oder Iceberg-Tabellen in dem Konto zu aktivieren, aktivieren Sie External & Iceberg Tables.
Wählen Sie im Abschnitt Access management for Snowflake objects die Option Edit, und wählen Sie dann die Datenbank, das Schema oder das Objekt aus, deren/dessen Daten von den Benutzern dieses Kontos verknüpft werden sollen.
Wählen Sie Save aus.
Verwenden Sie die Clean Rooms-API, um Datenbanken, Schemas und Objekte programmgesteuert zu registrieren. Sie benötigen die MANAGE GRANTS-Berechtigung für ein Objekt, um es zu registrieren.
Externe und Iceberg-Tabellen werden anders registriert als andere Objekttypen.
Die folgenden Prozeduren stehen zur Verfügung, um Objekte zu registrieren oder die Registrierung aufzuheben:
Objekttyp |
Registrieren |
Registrierung aufheben |
|---|---|---|
Datenbank |
|
|
Schema |
|
|
Verwaltetes Zugriffsschema |
|
|
Jeder andere unterstützte Objekttyp |
|
|
Beispiel:
USE ROLE <ROLE-WITH-MANAGE-GRANTS-PRIVILEGE>
CALL samooha_by_snowflake_local_db.library.register_schema(['MY_DB.MY_SCHEMA']);
Registrieren von Tabellen oder Ansichten, auf die Snowflake-Richtlinien angewendet wurden¶
Wenn Sie Daten verknüpfen möchten, auf die eine Snowflake-Richtlinie angewendet wurde, und die Snowflake-Richtlinie in einer anderen Datenbank als die Quelldaten gespeichert ist, müssen Sie Clean Rooms die Referenznutzung auf der Richtliniendatenbank erlauben. Sie können dies entweder einmal für einzelne Konten oder einmal für einzelne Clean Rooms tun.
Gewähren der Referenznutzung einmal pro Konto¶
Um einer Datenbank einmal für einzelne Konten die Referenznutzung zu gewähren und sie automatisch für jeden Clean Room zu gewähren, weisen Sie die Referenznutzung der Rolle SAMOOHA_APP_ROLE zu, indem Sie den folgenden SQL-Befehl ausführen. Ersetzen Sie den Datenbank-Platzhalter durch den Namen Ihrer Datenbank.
GRANT REFERENCE_USAGE ON DATABASE <database_name>
TO ROLE SAMOOHA_APP_ROLE
WITH GRANT OPTION;
Gewähren der Referenznutzung einmal pro Clean Room¶
Wenn Sie die Referenznutzung lieber einer Datenbank pro Clean Room und nicht allen Clean Rooms im Konto gewähren möchten, führen Sie folgenden SQL-Befehl aus. Ersetzen Sie den Datenbanknamen und die Clean Rooms-ID--Platzhalter mit den entsprechenden Werten:
GRANT REFERENCE_USAGE ON DATABASE <database_name>
TO SHARE IN APPLICATION PACKAGE SAMOOHA_CLEANROOM_<clean_room_ID>;
Registrierung von Datenobjekten aufheben¶
Sobald eine Tabelle mit einem Clean Room verknüpft ist, kann sie nicht mehr entfernt werden. Sie können jedoch die Registrierung des Objekts in dem Konto aufheben, wodurch der Zugriff durch alle Clean Rooms in diesem Konto entfernt wird.
Wenn Sie Daten aus einem Clean Room oder Konto entfernen möchten, löschen Sie nicht einfach das zugrunde liegende Objekt; dies führt zum Ausfall des Clean Room. Verwenden Sie stattdessen eine der folgenden Techniken, um die Registrierung des Objekts aufzuheben.
Wenn Sie die Registrierung eines Objekts in einem Konto aufheben, sollten Sie auch alle von Ihnen erstellten Clean Rooms aktualisieren, die diese Daten verwendet haben.
Abfragen aller Teilnehmer, die von gelöschten Daten abhängen, schlagen bei der nächsten Ausführung fehl.
So heben Sie die Registrierung eines Objekts in einem Konto auf:
Melden Sie sich bei der Clean Rooms-UI als Kontoadministrator an, und führen Sie dann einen der folgenden Schritte aus:
Wenn Sie ein verwaltetes Konto verwenden, wählen Sie Admin > My Account.
Wenn Sie ein Snowflake-Konto verwenden, wählen Sie Admin > Snowflake Admin und melden Sie sich bei Snowflake als Benutzer mit der Rolle ACCOUNTADMIN an.
Wählen Sie Admin > Snowflake Admin aus.
Wählen Sie Log in to Snowflake aus, und authentifizieren Sie sich als Benutzer mit der Rolle ACCOUNTADMIN.
Um externe oder Iceberg-Tabellen in dem Konto zu aktivieren, aktivieren Sie External & Iceberg Tables.
Wählen Sie im Abschnitt Access management for Snowflake objects die Option Edit, und heben Sie dann die Markierung der Datenbank, des Schemas oder des Objekts auf, um die Daten für Benutzer in diesem Konto unzugänglich zu machen.
Wählen Sie Save aus.
Aktualisieren Sie alle Clean Rooms, die Sie erstellt haben und die von diesen Daten abhängen.
Rufen Sie in der API die entsprechende Prozedur auf, um die Registrierung eines Objekts bei einem Konto aufheben:
library.unregister_dblibrary.unregister_schemalibrary.unregister_managed_access_schemalibrary.unregister_objects
Externe und Apache Iceberg™-Tabellen aktivieren¶
Damit externe Tabellen und Iceberg-Tabellen mit einem Clean Room verknüpft werden können, muss das Konto zunächst so konfiguriert werden, dass die Verwendung von externen und Iceberg-Tabellen möglich ist. Nachdem externe und Iceberg-Tabellen aktiviert wurden, können sie wie alle anderen Tabellen registriert, verknüpft und verwendet werden.
Der Prozess der Aktivierung von externen Tabellen und Iceberg-Tabellen variiert, je nachdem, ob Sie den Clean Room über die Clean Rooms-UI oder die Clean Rooms-API verwalten.
Anforderungen für externe und Iceberg-Tabellen¶
Sowohl das Anbieter- als auch das Verbraucherkonto müssen externe und Iceberg-Tabellen aktivieren, um die volle Nutzung eines Clean Room zu ermöglichen, der mit externen oder Iceberg-Tabellen verknüpft ist.
Anbieter müssen immer externe Tabellen und Iceberg-Tabellen aktivieren, wenn sie einen Clean Room mit einem verwalteten Konto teilen. Das liegt daran, dass verwaltete Konten immer externe Tabellen verwenden.
Wenn sich Anbieter und Verbraucher in verschiedenen Regionen befinden, kann nur der Verbraucher externe oder Iceberg-Tabellen mit einem Clean Room verbinden.
Die Clean Rooms-UI steuert externe Tabellen und Iceberg-Tabellen auf Kontoebene.
Warnung
Wenn das Verbraucherkonto dieses Feature nicht aktiviert hat, werden Verbraucher daran gehindert, Clean Rooms beizutreten, die mit externen oder Iceberg-Tabellen verknüpft sind, oder sie können Clean Rooms, denen sie bereits beigetreten sind und die mit einem der beiden Tabellentypen verknüpft sind, nicht bearbeiten (aber dennoch ausführen).
Ein DCR-Administrator muss sowohl für das Anbieter- als auch für das Verbraucherkonto die folgenden Schritte ausführen:
Melden Sie sich bei der Clean Rooms-UI als Kontoadministrator an, und führen Sie dann einen der folgenden Schritte aus:
Wenn Sie ein verwaltetes Konto verwenden, wählen Sie Admin > My Account.
Wenn Sie ein Snowflake-Konto verwenden, wählen Sie Admin > Snowflake Admin und melden Sie sich bei Snowflake als Benutzer mit der Rolle ACCOUNTADMIN an.
Aktivieren Sie die Umschaltfunktion External & Iceberg Tables. Dies ermöglicht das Feature sowohl in per UI erstellten als auch in per API erstellten Clean Rooms.
Externe und Iceberg-Tabellen sind jetzt im Bereich Access management for Snowflake objects des Administrators auswählbar, wo sie wie alle anderen Objekte auch für Clean Rooms verfügbar gemacht werden können.
Im Code müssen Sie externe Tabellen und Iceberg-Tabellen auf Kontoebene und für jeden Clean Room aktivieren, der externe Tabellen oder Iceberg-Tabellen verknüpft. Wenn Sie externe Tabellen und Iceberg-Tabellen in der Clean Rooms-UI aktiviert haben, müssen Sie diese nicht im Code aktivieren (Sie müssen nicht die hier aufgeführten Schritte ausführen).
Warnung
Wenn nur ein Konto dieses Feature für sein Konto oder seinen Clean Room aktiviert und eine externe oder Iceberg-Tabelle verknüpft hat, kann das andere Konto zwar bestehende Vorlagen ausführen, aber den Clean Room in keiner Weise ändern, bis externe und Iceberg-Tabellen sowohl in diesem Konto als auch im Clean Room zugelassen sind.
Um externe oder Iceberg-Tabellen für neue Clean Rooms im Code zu aktivieren und zu verwenden:
Ein Benutzer mit der Rolle ACCOUNTADMIN aktiviert zunächst externe und Iceberg-Tabellen für die gesamte Clean Room-Umgebung sowohl im Anbieter- als auch im Verbraucherkonto:
USE ROLE ACCOUNTADMIN; CALL samooha_by_snowflake_local_db.library.enable_external_tables_on_account();
Bemerkung
Bestehende Clean Rooms, die mit der Clean Rooms-UI erstellt wurden, sind von dieser Methode nicht betroffen. Zum Aktualisieren bestehender Clean Rooms, die mit der Clean Rooms-UI erstellt wurden, müssen Sie sie entweder einzeln im Code aktivieren, wie in den nächsten Schritten gezeigt, oder Clean Rooms mithilfe der Clean Rooms-UI aktivieren, wodurch das Feature für alle bestehenden Clean Rooms aktiviert wird.
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>');
Ein Verbraucher muss auch die Verwendung von externen und Iceberg-Tabellen im selben Clean Room aktivieren:
USE ROLE SAMOOHA_APP_ROLE; CALL samooha_by_snowflake_local_db.consumer.enable_external_tables_for_cleanroom( $cleanroom_name);
Nachdem externe und Iceberg-Tabellen für einen Clean Room aktiviert wurden, können Teilnehmer diese Tabellen auf die gleiche Weise wie alle anderen Tabellen registrieren und verknüpfen.