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 über die Clean Room UI oder die Clean Room API registrieren. Die Verwendung der Clean Room UI ist einfacher, erfordert aber, dass Sie die Rolle ACCOUNTADMIN haben. Mit den Entwickler-APIs können Sie jedes Objekt registrieren, für das Sie die Berechtigung OWNERSHIP haben, ohne die Rolle ACCOUNTADMIN zu verwenden.
Wichtig
Die Registrierung einer Datenbank oder eines Schemas registriert keine Objekte, die nach der Registrierung hinzugefügt wurden. Sie müssen das neue Objekt entweder einzeln registrieren oder die Clean Room UI verwenden, um zu Admin > Snowflake Admin > Database Registration zu navigieren und Resync auszuwä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).
Führen Sie die folgenden Schritte aus, um eine Datenbank, ein Schema oder ein Objekt über die Clean Room UI zu registrieren:
Melden Sie sich in der Clean Room 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 Room API, um Datenbanken, Schemas und Objekte programmatisch zu registrieren. Beachten Sie, dass Sie die Berechtigung MANAGE GRANTS für ein Objekt benötigen, 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']);
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 in der Clean Room 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_db
library.unregister_schema
library.unregister_managed_access_schema
library.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.
Das Verfahren zur Aktivierung von externen und Iceberg-Tabellen variiert, je nachdem, ob Sie den Clean Room über die Clean Room UI oder die Clean Room 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 Room UI kontrolliert externe und Iceberg-Tabellen auf der Ebene des Kontos.
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 in der Clean Room 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 und Iceberg-Tabellen sowohl auf der Ebene des Kontos als auch für jeden Clean Room aktivieren, der Verknüpfungen zu externen oder Iceberg-Tabellen enthält. Wenn Sie externe und Iceberg-Tabellen in der Clean Room UI aktiviert haben, müssen Sie diese nicht im Code aktivieren (Sie müssen die hier aufgeführten Schritte nicht 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 Room UI erstellt wurden, sind von dieser Methode nicht betroffen. Um bestehende Clean Rooms zu aktualisieren, die mit der Clean Room UI erstellt wurden, müssen Sie diese entweder einzeln im Code aktivieren, wie in den nächsten Schritten gezeigt, oder Sie aktivieren die Clean Rooms mit der Clean Room UI, wodurch das Feature für alle bestehenden Clean Rooms aktiviert wird.
Ein Anbieter aktiviert externe und Iceberg-Tabellen für seinen Clean Room. Beachten Sie, dass dies einen Sicherheitsscan auslöst, der im Erfolgsfall eine neue Clean Room-Version erzeugt, sodass Sie die Standard-Release-Richtlinie aktualisieren müssen.
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.