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.
...
Copy

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;`
Copy

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 oder provider.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>');
Copy

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 von provider.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' );
Copy

Wenn Sie den folgenden Fehler erhalten:

Database <cleanroom name> does not exist or not authorized. in RUN_ANALYSIS_STRING
Copy

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:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie Monitoring » Query History aus.

  3. Verwenden Sie die Filter, um die mit der Analyse verbundene Abfrage zu finden, und kopieren Sie dann die Abfrage-ID.

  4. Ö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));
    
    Copy

    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.