Snowflake Data Clean Rooms-Entwicklerhandbuch¶
Diese Seite enthält einige Anleitungen für Benutzer, die Clean Rooms oder Vorlagen in Snowflake programmatisch erstellen oder verwalten möchten.
Snowflake stellt gespeicherte Prozeduren zur Verfügung, mit denen Sie Anwendungen zur Erstellung oder Steuerung von Clean Rooms entwickeln können. Diese gespeicherten Prozeduren können in jeder Weboberfläche ausgeführt werden, die auf das mit Ihrer Clean Room-Umgebung verknüpfte Snowflake-Konto zugreifen kann, einschließlich Snowsight-Notebooks oder Arbeitsblätter sowie die Snowflake CLI. Diese Prozeduren können in SQL oder in jeder von Snowflake-Weboberflächen unterstützten Sprache aufgerufen werden.
Einrichten Ihrer Umgebung¶
Entwicklungs-Tools¶
Hier sind die wichtigsten Entwickler-Tools für Clean Rooms:
Codierungsumgebung: Jede Codierungsumgebung, die gespeicherte Prozeduren in Ihrem Snowflake-Konto ausführen kann, funktioniert. Die meisten Entwickler verwenden Arbeitsblätter in Snowsight (dem browserbasierten Tool) oder das Snowflake CLI.
Die Clean Room UI: Verwenden Sie die Clean Room UI, um Clean Rooms zu konfigurieren, zu verwalten oder zu erstellen. Die meisten Clean Room-Analysten verwenden eher die UI als einen Code, sodass es nützlich sein kann, die Nutzerfreundlichkeit Ihrer Clean Rooms in der UI zu sehen und zu testen. Außerdem gibt es eine Handvoll Features, die nur in der Clean Room UI verfügbar sind.
Snowsight ist nützlich, um Datenbanken und andere Objekte zu erkunden und nach Objekten zu suchen.
Codierung einrichten¶
Erforderliche Rolle und Warehouse¶
Die Clean Room API erfordert die Rolle SAMOOHA_APP_ROLE für den vollständigen API-Zugriff. Bitten Sie Ihren Clean Room-Administrator, Ihnen vollen Zugriff auf die API zu gewähren.
Clean Rooms unterstützt auch die Erstellung von Rollen mit Zugriff auf einige API-Prozeduren.
Sie müssen die Clean Room API in einem Warehouse nutzen, das SAMOOHA_APP_ROLE nutzen kann. Clean Rooms bietet dem Warehouse APP_WH Zugang zur Clean Room API.
-- Set up environment.
USE ROLE samooha_app_role;
USE WAREHOUSE app_wh;
-- Call your clean rooms API functions.
...
Wenn Sie ein anderes Warehouse verwenden, stellen Sie sicher, dass Sie SAMOOHA_APP_ROLE die Nutzung dieses Warehouse gestatten:
GRANT USAGE ON WAREHOUSE <your warehouse> TO SAMOOHA_APP_ROLE;`
Allgemeine Informationen zur Clean Room API¶
Snowflake Data Clean Rooms stellt eine Reihe von gespeicherten Prozeduren zur Verfügung, mit denen ein Anbieter einen Clean Room erstellen, konfigurieren und freigeben kann. Auf diese Prozeduren kann von jeder Befehlszeilenumgebung aus zugegriffen werden, die Snowflake-Prozeduren unterstützt, einschließlich Notebooks, Arbeitsmappen und die Snowflake-CLI. Sie können die Clean Room API in jeder Sprache verwenden, die gespeicherte Prozeduren unterstützt. Die Dokumentation hier zeigt die Verwendung von SQL, aber Sie können auch Python oder jede andere unterstützte Sprache verwenden.
Prozeduren existieren innerhalb der folgenden Schemata:
samooha_by_snowflake_local_db.provider
- Anbieterspezifische Prozeduren. Diese Prozeduren können nur für Clean Rooms aufgerufen werden, die auf dem aktuellen Konto erstellt wurden.samooha_by_snowflake_local_db.consumer
- Verbraucherspezifische Prozeduren. Diese Prozeduren können nur für Reinräume aufgerufen werden, zu denen das aktuelle Konto als Verbraucher eingeladen wurde.samooha_by_snowflake_local_db.library
– Allgemeine Prozeduren, die entweder vom Ersteller des Reinraums (Anbieter) oder von einem Teilnehmer des Reinraums (Verbraucher) aufgerufen werden. (Diese sind sowohl auf den Referenzseiten für Anbieter als auch für Verbraucher dokumentiert)
Für einige Prozeduren gibt es sowohl Anbieter- als auch Verbraucherversionen. Die Ergebnisse entsprechen diesem Schema: provider.view_cleanrooms
listet beispielsweise alle Clean Rooms in dem aktuellen Konto auf, für das Sie ein Anbieter sind, und consumer.view_cleanrooms
listet alle Clean Rooms in dem aktuellen Konto auf, für das Sie ein Verbraucher sind.
Allgemeine Informationen zu Clean Room-Namen in API-Prozeduren¶
Viele Clean Room API-Prozeduren nutzen ein cleanroom_name
-Argument.
Verwenden Sie den Namen des Clean Room, wenn ein Clean Room mit der API erstellt wurde.
Verwenden Sie die Clean Room-ID, wenn der Clean Room unter Verwendung der Clean Room UI erstellt wurde.
Sie können den Namen und die ID des Clean Room einsehen, indem Sie describe_cleanroom
aufrufen.
Konten, Benutzer und Rollen einrichten¶
Technisch gesehen müssen Sie für die Entwicklung von Clean Rooms nicht die Clean Room UI verwenden: Die meisten Clean Room-Funktionen sind über gespeicherte Prozeduren verfügbar. Einige Features sind jedoch nur in der UI verfügbar, und einige sind in der UI schneller zu erledigen. Und da viele Benutzer ausschließlich die UI verwenden, ist es wichtig zu sehen, wie sich Ihr Clean Room in der UI verhält, insbesondere wenn Sie ein Webformular zur Benutzerkonfiguration für einen von Ihnen erstellten Clean Room erstellen. Bitten Sie daher einen Clean Room-Administrator, Sie als Clean Room-Manager oder höher in den entsprechenden Konten für Clean Rooms hinzuzufügen.
Wir empfehlen zumindest getrennte Snowflake-Konten für Anbieter und Verbraucher, um beide Seiten eines Clean Room zu testen. Je nach Anwendungsfall können Sie auch ein zusätzliches Snowflake-Konto in verschiedenen Webhosting-Regionen einrichten, um die Cloud-übergreifende Verhaltensweise zu testen.
Geben Sie Ihren Test-Snowflake-Konten aussagekräftige Namen, um ihre typische Verwendung zu kennzeichnen: zum Beispiel „Verbraucherkonto“, „Anbieterkonto“ und „Cloud-übergreifendes Konto“. Dies kann hilfreich sein, wenn Sie mehrere Konten haben und wissen müssen, bei welchem Sie sich anmelden müssen.
Richtlinien und Empfehlungen¶
Sicherstellen, dass Sie das gleiche Konto in der Clean Room UI und im Code verwenden¶
Häufig müssen Sie eine Codingumgebung und die Clean Room UI für dasselbe Snowflake-Konto öffnen, z. B. wenn Sie einen Clean Room im Code erstellen und dann sein Aussehen in der Clean Room UI überprüfen. Es ist wichtig, dass Sie sich vergewissern, dass Sie in beiden Konten das gleiche Snowflake-Konto verwenden.
Snowsight verfügt nicht über eine Verknüpfung, um die Clean Room UI für dasselbe Konto zu öffnen, oder umgekehrt. Sie müssen also sicherstellen, dass sowohl die Clean Room UI als auch Snowsight im selben Konto geöffnet sind.
Clean Room-Namen vs. Clean Room-ID¶
Wenn Sie die API verwenden, legen Sie bei Prozeduren, die ein cleanroom_name
-Argument benötigen, wie folgt fest, ob Sie den Clean Room-Namen oder die Clean Room-ID verwenden:
Wenn der Clean Room mit der API erstellt wurde, verwenden Sie den Namen des Clean Room.
Wenn der Clean Room in der Web-App erstellt wurde, verwenden Sie die Clean Room-ID. Sie können sowohl den Namen des Clean Room als auch die ID einsehen, indem Sie
provider.view_cleanrooms
oderprovider.describe_cleanroom
aufrufen.
Clean Room aktualisieren, wenn Sie Änderungen vornehmen¶
Um die Einstellungen für den Clean Room zu ändern, einschließlich Vorlagen, Berechtigungen oder Richtlinien, rufen Sie provider.create_or_update_cleanroom_listing
auf, um die Änderungen zu aktivieren. In einigen Fällen können Änderungen bereits vor dem Aufruf dieser Prozedur sichtbar sein, aber die Änderungen werden erst nach dem Aufruf von provider.create_or_update_cleanroom_listing
korrekt übernommen.
Interoperabilität zwischen Clean Rooms, die mit Code oder der UI erstellt wurden¶
Wenn Sie einen Clean Room in der API erstellen, sind einige Features in der Clean Room UI nicht änderbar. Sie können zum Beispiel keine zusätzlichen Vorlagen, auch keine Standard-Snowflake-Vorlagen, in den Code für einen per UI erstellten Clean Room einfügen. Sie können auch die Einstellungen für differentielle Privatsphäre nicht ändern.
Beschreibung der Clean Room-Objekte¶
Snowflake Data Clean Rooms erstellt bei der Installation viele lokale Datenbanken. Hier sind einige der nützlicheren Objekte:
SAMOOHA_CLEANROOM_cleanroom_id
Enthält spezifische Informationen zu jedem in diesem Konto erstellten Clean Room. Enthält die folgenden Elemente:
Verwaltung: Kryptografische Schlüssel, Datenschutzbudget, Anfrageprotokolle, Anfragen für Anbieteranalysen und mehr.
Shared_schema: Verknüpfungsrichtlinie, LAF-Status, verknüpfte Tabellen, Versionen.
Vorlagen: Liste der Aktivierungsvorlagen, benutzerdefinierten Vorlagen und Vorlagenketten in diesem Clean Room.
SAMOOHA_CLEANROOM_REQUESTS_cleanroom_id
Enthält den Anfrageverlauf, z. B. Multi-Anbieter-Anfragen, Vorlagenanfragen, Abfragen.
- SAMOOHA_BY_SNOWFLAKE_LOCAL_DB:
Provider.procedures: Definitionen aller API-Prozeduren des Anbieters
Consumer.procedures: Definitionen aller API-Prozeduren des Verbrauchers
Library.procedures: Definitionen aller API-Prozeduren sowohl für Anbieter als auch für Verbraucher
Public.consumer_activation_summary: Ergebnisse der Verbraucheraktivierung.
Public.provider_activation_summary: Ergebnisse der Anbieteraktivierung.
- SAMOOHA_BY_SNOWFLAKE.TEMPLATES.TEMPLATES:
Enthält die Liste und Definition aller Snowflake-Vorlagen, die für Clean Rooms in diesem Konto verfügbar sind.
(Verbraucher) Kann keine Verknüpfungsrichtlinien festlegen oder andere grundlegende Aktionen für einen verknüpften Clean Room durchführen¶
Stellen Sie sicher, dass Sie Ihren Clean Room mit der richtigen Rolle installiert haben (SAMOOHA_APP_ROLE). Wenn Sie bei der Installation des Clean Room SAMOOHA_APP_ROLE nicht verwendet haben, werden Sie auf viele Probleme stoßen, typischerweise Berechtigungsfehler. Wenn dies der Fall ist, schlägt auch consumer.uninstall_cleanroom
fehl und Sie müssen zusätzliche Schritte unternehmen, um den Clean Room zu deinstallieren und dann mit der richtigen Rolle neu zu installieren.
-- Who owns the clean room?
SHOW SHARES LIKE 'SAMOOHA_CLEANROOM_REQUESTS_<cleanroom_name>';
-- If the owner role is not SAMOOHA_APP_ROLE, you must drop the share, then
-- uninstall the clean room.
DROP SHARE SAMOOHA_CLEANROOM_REQUESTS_<cleanroom_name>;
CALL samooha_by_snowflake_local_db.consumer.uninstall_cleanroom($cleanroom_name);
USE ROLE samooha_app_role;
CALL samooha_by_snowflake_local_db.consumer.install_cleanroom($cleanroom_name, '<provider_locator>');
Allgemeine unerwartete Ergebnisse¶
Stellen Sie sicher, dass Sie die richtige consumer
- oder provider
-Version Ihrer Prozedur aufrufen. Für viele Prozeduren gibt es sowohl Anbieter- als auch Verbraucherversionen.
Sie können keinen Clean Room finden, den Sie erstellt haben¶
Wenn Sie einen Clean Room in einem Konto erstellt haben, ihn aber im Konto des Teilnehmers nicht sehen können, kommen diese Gründe infrage:
Der Clean Room wurde in einer anderen Cloud-Hosting-Region erstellt, und Sie haben die Cloud-übergreifende automatische Ausführung nicht aktiviert.
Sie haben Ihren Clean Room nicht veröffentlicht, indem Sie
provider.create_or_update_cleanroom_listing
aufgerufen haben.Sie rufen
consumer.view_cleanrooms()
anstelle vonprovider.view_cleanrooms()
auf (oder umgekehrt).Sie haben den Clean Room nicht freigegeben, Sie haben den Clean Room mit dem falschen Konto freigegeben oder Sie haben in der Snowsight/Clean Room UI/CLI das falsche Teilnehmerkonto geöffnet. Vergewissern Sie sich, dass das Konto, in dem Sie Ihren Clean Room sehen möchten, das Konto ist, mit dem Sie den Clean Room geteilt haben, und dass Sie in diesem gemeinsamen Konto angemeldet sind.
Es gibt eine kleine Verzögerung zwischen der Veröffentlichung eines Clean Room und dem Zeitpunkt, an dem er für den Teilnehmer sichtbar wird.
Unbekannte Funktion¶
Wenn Sie eine Prozedur aufrufen und einen Fehler wie diesen erhalten: .. code-block:: sqlexample
Unbekannte benutzerdefinierte Funktion SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.CONSUMER. <Prozedurname>
Entweder haben Sie nicht die Rolle SAMOOHA_APP_ROLE oder Sie haben den Namen der Funktion falsch eingegeben.
Es kann auch bedeuten, dass Ihnen eine Rolle mit eingeschränktem Zugriff zugewiesen wurde und die Funktion, die Sie aufrufen, von Ihrer Rolle nicht erlaubt ist. Sie können dies testen, indem Sie versuchen, eine der unter consumer.grant_run_on_cleanrooms_to_role
zugelassenen Prozeduren auszuführen. Wenn die Prozedur erfolgreich ist, verwenden Sie möglicherweise eine eingeschränkte Rolle. Wenn sie fehlschlägt, haben Sie wahrscheinlich nicht die Berechtigung, die Clean Room API in diesem Konto auszuführen.
Um zu sehen, ob Ihnen die Rolle SAMOOHA_APP_ROLE zugewiesen ist, führen Sie den folgenden Befehl aus:
SELECT IS_ROLE_IN_SESSION( 'SAMOOHA_APP_ROLE' );
Wenn Sie den folgenden Fehler erhalten:
Database <cleanroom name> does not exist or not authorized. in RUN_ANALYSIS_STRING
Ihnen wurde eine vorübergehende Ausführungsrolle gewährt, die nun widerrufen wurde. Bitten Sie einen Clean Room-Administrator um eine neue Ausführungsrolle oder vollen SAMOOHA_APP_ROLE-Zugriff.
Abfrageverlauf prüfen¶
Sie können Ihren Abfrageverlauf für Abfragen einsehen, die in der UI oder im Code ausgeführt wurden. Diese Verläufe werden separat gespeichert und geprüft.
UI-Abfrageverlauf¶
Die Clean Room UI zeigt auf der Seite Analyses & Queries eine Liste aller bisherigen Abfragen und Ergebnisse für dieses Konto an. Diese Ergebnisse gelten nur für Abfragen, die in der UI ausgeführt werden.
API-Abfrageverlauf¶
Gehen Sie wie folgt vor, um den Kontoverlauf der Abfragen zu sehen, die über die API ausgeführt wurden:
Melden Sie sich bei Snowsight an.
Wählen Sie Monitoring » Query History aus.
Verwenden Sie die Filter, um die mit der Analyse verbundene Abfrage zu finden, und kopieren Sie dann die Abfrage-ID.
Öffnen Sie ein Arbeitsblatt und führen Sie eine Abfrage aus, die die Ergebnisse auf der Grundlage der Abfrage-ID der Abfrage abruft. Wenn die Abfragen-ID zum Beispiel
ABC123
lautet, führen Sie Folgendes aus:SELECT * FROM TABLE(result_scan(ABC123));
Wenn das Warehouse zwischen der Ausführung der API-Analyse und dem Abrufen der Ergebnisse mit dieser Abfrage ausgesetzt wird, können Sie die Ergebnisse möglicherweise nicht abrufen.
Erweiterte Beispiele¶
Um zu verstehen, wie Sie die verschiedenen Features von Entwickler-APIs verwenden, können Sie die Beispiele im Abschnitt Use cases der Dokumentation zu den Clean Rooms einsehen.