Übersicht zu Snowflake Data Clean Rooms

Dieses Thema bietet eine allgemeine Anleitung zu den Komponenten, aus denen eine Zusammenarbeit besteht, und beschreibt die grundlegenden Schritte bei der Erstellung oder Verwendung einer Snowflake Data Clean Room-Zusammenarbeit.

Anforderungen

Rollen und Ressourcen in einer Zusammenarbeit

Um zu verstehen, wie Sie eine Zusammenarbeit verwenden, müssen Sie zunächst Zusammenarbeitsrollen und Zusammenarbeitsressourcen verstehen.

Zusammenarbeitsrollen

Die folgenden Rollen sind in einer Zusammenarbeit verfügbar. Diese Rollen definieren die allgemeinen Fähigkeiten des Teilnehmenden.

  • Eigentümer: Diese Person definiert, erstellt und besitzt die Zusammenarbeit und definiert, welche Teilnehmenden eingeladen werden und welche Zusammenarbeitsrollen sie haben. Ein Eigentümer ist nicht automatisch ein Analyseausführer oder Datenanbieter und hat keine erhöhten Ausführungsberechtigungen. Die Hauptfähigkeiten dieser Person bestehen darin, den Clean Room zu erstellen, Zusammenarbeitsrollen zuzuweisen, zu bestimmen, wer mit wem Daten teilen darf, und den Clean Room wieder abzubauen. Eine Zusammenarbeit kann nur einer Person gehören.

  • Datenanbieter: Stellt Datenangebote, wie z. B. Tabellen und Ansichten, für eine Zusammenarbeit bereit und gibt an, welche Analyseprotokolle diese verwenden können. Das heißt, Konto A ist ein Datenanbietender für die Konten B und C, wie in der Spezifikation der Zusammenarbeit angegeben.

  • Analyseausführender: Führt zulässige Vorlagen auf zulässigen Datenangeboten aus, wie in der Spezifikation der Zusammenarbeit angegeben.

Diese Rollen sind in der Spezifikation für die Zusammenarbeit festgelegt, die für die Erstellung der Zusammenarbeit verwendet wird.

Einem Teilnehmenden können mehrere Zusammenarbeitsrollen zugewiesen werden, und (mit Ausnahme der Eigentümerrolle) kann eine Zusammenarbeitsrolle mehreren Teilnehmenden zugewiesen werden.

Ressourcen für die Zusammenarbeit

Eine Zusammenarbeit umfasst Ressourcen, darunter Datenangebote, Vorlagen und Code-Bundles. Alle Ressourcen und die Zusammenarbeit selbst werden durch YAML-Spezifikationen definiert.

Zusammenarbeiten unterstützen die folgenden Arten von Ressourcen:

  • Vorlage: Eine JinjaSQL-Abfrage, die Analyseausführende in der Zusammenarbeit ausführen können. Je nach Art der Vorlage können die Ergebnisse entweder direkt an das Snowflake-Konto eines bestimmten Teilnehmenden gesendet oder aktiviert (gespeichert) werden. Analyseausführende können zur Laufzeit Werte an eine Vorlage übergeben, um Vorlagenvariablen zu ersetzen, die für Spaltennamen, WHERE-Klauseln und andere Abfrageelemente verwendet werden.

  • Datenangebot: Ein Paket mit einer oder mehreren Tabellen, die von einem Datenanbietenden mit bestimmten Analyseausführenden freigegeben werden. Ein Datenangebot ist eine Live-Ansicht der Quelldaten, kein Snapshot, und seine Spezifikation steuert, welche Spalten offengelegt werden und welche Richtlinien gelten.

  • Code-Bundle: Eine Reihe von kundenspezifischen Python-Funktionen oder -Prozeduren, die von einer Vorlage aufgerufen werden können. Mit Code-Bundles können Sie die Funktionalität von Vorlagen um benutzerdefinierte Logik erweitern, z. B. um Machine Learning-Modelle oder benutzerdefinierte Transformationen.

Beispiel für eine Clean Room-Spezifikation

Hier ist die YAML-Spezifikation für einen einfachen Clean Room, der zwei Teilnehmende umfasst, alice (ein Alias für Konto corp1.acct123) und bob (ein Alias für Konto corp2.acctxyz). Die Spezifikation weist jedem Benutzenden eine Rolle zu und verknüpft zwei Datenangebote mit der Zusammenarbeit.

api_version: 2.0.0
spec_type: collaboration
name: basic_collaboration
owner: alice                # alice is the collaboration owner.
collaborator_identifier_aliases:
  alice: corp1.acct123
  bob: corp2.acctxyz
analysis_runners:
  alice:                    # alice is also an analysis runner.
    data_providers:
      alice:                # alice provides data to herself.
        data_offerings:     # alice provides these data offerings.
        - id: alice_data_1
        - id: alice_data_2
      bob:                  # bob provides data to alice.
        data_offerings:     # bob provides this data to alice.
        - id: bob_data_1
    templates:              # alice can use this template with any data she can access.
    - id: template1
  bob:                      # bob is an analysis runner
    data_providers:         # bob can use data from the following data providers.
      alice:
        data_offerings:     # alice provides the following data to bob.
        - id: alice_data_1
    templates:              # bob can use this template with any data he can access.
    - id: template2

Diese einfache Zusammenarbeit umfasst die folgenden Ressourcen und Rollen für die Zusammenarbeit:

  • alice ist die Eigentümerin der Zusammenarbeit, ein Analyseausführende und eine Datenanbietende für sich und bob.

  • bob ist ein Analyseausführender und ein Datenanbieter für alice, aber nicht für sich selbst.

  • alice kann template1 ausführen, bob kann template2 ausführen.

Weitere Punkte, die Sie zu dieser Zusammenarbeit beachten sollten:

  • Nachdem die Zusammenarbeit aus dieser Spezifikation erstellt wurde, können keine neuen Teilnehmenden hinzugefügt werden.

  • Sowohl alice als auch bob können neue Vorlagen hinzufügen und diese für andere Teilnehmende freigeben.

  • Rollen können nicht geändert werden, daher kann bob später nicht selbst ein Datenanbieter werden.

  • Jeder Datenanbietende kann Datenangebote zur eigenen Datenangebotsliste hinzufügen oder entfernen, auch nachdem die Zusammenarbeit erstellt wurde.

Grundlegender Workflow für die Zusammenarbeit im Clean Room

Hier ist ein einfaches Szenario für die Zusammenarbeit im Clean Room:

  1. Die Person mit Eigentumsrechten an der Zusammenarbeit kann optional alle Vorlagen oder Datenangebote registrieren, die in der anfänglichen Konfiguration der Zusammenarbeit vorhanden sein sollen.

  2. Der Eigentümer bittet optional alle vorgesehenen Teilnehmenden, Vorlagen oder Datenangebote zu registrieren, die in der Erstkonfiguration der Zusammenarbeit angezeigt werden sollen. Die Mitarbeiter geben dann die Ressourcen-IDs von allen Elementen an, die sie registriert haben.

  3. Die Person erstellt dann eine Zusammenarbeit. Die Zusammenarbeitsspezifikation definiert die Teilnehmenden, ihre Rollen und alle Ressourcen, die im Anfangszustand der Zusammenarbeit verfügbar sein sollen.

    • Zu diesem Zeitpunkt werden der Satz der Teilnehmenden und ihrer Rollen für die Zusammenarbeit konkret festgelegt.

    • Wenn die Zusammenarbeit Teilnehmende in anderen Cloudhosting-Regionen umfasst, müssen diese die Cloud-übergreifende automatische Ausführung für ihr Konto aktivieren, bevor sie die Zusammenarbeit überprüfen und ihr beitreten können.

    • Wenn die Zusammenarbeit erstellt wird, wird sie für alle Teilnehmenden in der Zusammenarbeitsspezifikation sichtbar und beitretbar.

  4. Teilnehmende überprüfen die Zusammenarbeit und treten ihr bei.

  5. Teilnehmende können dann optional entsprechend ihrer Rollen Ressourcen mit der Zusammenarbeit verknüpfen. Datenanbietende können Datenangebote mit ihren Analyseausführenden verknüpfen. Jede Rolle kann anfordern, eine Vorlage hinzuzufügen und sie für andere Teilnehmende freizugeben.

  6. Analyseausführende können dann alle Vorlagen ausführen, die für sie in der Zusammenarbeit freigegeben wurden, und dabei alle Datenangebote nutzen, die für sie in der Zusammenarbeit freigegeben wurden. Der Analyseausführende trägt die Kosten der Analyse. Vorlagen können die Abfrageergebnisse entweder in der Antwort zurückgeben oder Ergebnisse für den Aufrufenden oder einen anderen Teilnehmenden aktivieren.

Mehr erfahren

Erstellen einer Zusammenarbeit

Alle Snowflake Data Clean Rooms-Benutzende mit den entsprechenden Berechtigungen können einen Clean Room erstellen. Ein Clean Room wird mit einer YAML-Spezifikation definiert, die alle Teilnehmenden und ihre relativen Rollen in der Zusammenarbeit sowie alle Ressourcen bestimmt, die in der Anfangskonfiguration der Zusammenarbeit vorhanden sind. (Die Personen mit Eigentumsrechten an den Ressourcen müssen beitreten, bevor die Ressourcen verwendet werden können.) Ressourcen können nach dem Erstellen der Zusammenarbeit hinzugefügt oder entfernt werden, aber die Liste der Teilnehmenden und ihrer relativen Rollen kann nach dem Erstellen der Zusammenarbeit nicht mehr geändert werden.

Zusammenarbeiten sind nicht versioniert: Eine Zusammenarbeit kann sich durch das Hinzufügen oder Entfernen von Ressourcen ändern, aber diese Änderungen werden nicht nachverfolgt.

Hinzufügen von Ressourcen zu einer Zusammenarbeit

Eine Zusammenarbeit kann auf Ressourcen zugreifen, einschließlich Vorlagen, Datenangebote und Code-Bundles. Um eine Ressource in einer Zusammenarbeit zu verwenden, müssen Sie sie zunächst in der Clean Room-Umgebung der Zusammenarbeit registrieren und sie dann mit einer bestimmten Zusammenarbeit verknüpfen:

  • Die Registrierung ist eine Aktion auf Kontoebene. Dabei wird die Ressource gepackt und in die Clean Room-Umgebung kopiert und es wird eine ID zurückgegeben, mit der auf diese Ressource verwiesen wird. Eine Ressource wird in einer Registry registriert, entweder in der Standard-Registry für Ihr Konto oder in einer kundenspezifischen Registry, die von einer Person in Ihrem Konto erstellt wurde. Die Standard-Registry steht allen Teilnehmenden im Konto mit READ REGISTRY-Berechtigungen zur Verfügung. Der Zugriff auf eine kundenspezifische Registry kann von der Person gesteuert werden, die die Registry erstellt hat.

  • Durch das Verknüpfen wird eine registrierte Ressource für eine bestimmte Zusammenarbeit freigegeben. Genauer gesagt wird eine registrierte Ressource für eine bestimmte Gruppe von Teilnehmenden einer bestimmten Zusammenarbeit freigegeben. Sie können eine Ressource entweder verknüpfen, indem Sie sie zu der Zusammenarbeitsspezifikation hinzufügen, die zum Erstellen einer Zusammenarbeit verwendet wurde, oder Sie können die entsprechende Collaboration API-Prozedur aufrufen, um die Ressource mit einer Zusammenarbeit zu verknüpfen.

Ressourcen können einer Zusammenarbeit entweder zum Zeitpunkt der Erstellung oder nach dem Erstellen einer Zusammenarbeit hinzugefügt werden.

Im Gegensatz zu Zusammenarbeiten sind Ressourcen versioniert. Neuere Versionen einer Ressource überschreiben keine älteren Versionen. Wenn Sie eine Ressource durch eine neuere Version ersetzen möchten, müssen Sie auch die Zusammenarbeit aktualisieren, um die alte Version zu entfernen (falls gewünscht) und die neue Version hinzuzufügen.

Das Konto, das eine Ressource registriert, muss eine teilnehmende Person sein, die der Zusammenarbeit beitreten muss, bevor die von ihr registrierten Ressourcen in der Zusammenarbeit verfügbar sein können.

Beitreten zu einer Zusammenarbeit

Eine Zusammenarbeit ist für alle Teilnehmenden sichtbar, die in der Zusammenarbeitsspezifikation aufgeführt sind. Alle Teilnehmenden, einschließlich der Person, die die Zusammenarbeit erstellt hat, müssen der Zusammenarbeit beitreten. Alle Teilnehmenden mit Ausnahme der Person mit Eigentumsrechten an der Zusammenarbeit müssen die Zusammenarbeit überprüfen, bevor sie beitreten können. Durch die Überprüfung einer Zusammenarbeit wird die Spezifikation der Zusammenarbeit für die eingeladene Partei offengelegt. Nach dem Überprüfen der Zusammenarbeit kann der Eingeladene der Zusammenarbeit beitreten. Sie müssen einer Zusammenarbeit beitreten, bevor Ressourcen, die Sie einer Zusammenarbeit zur Verfügung stellen, genutzt werden können.

Sie können Ihren Verknüpfungsstatus (Eingeladen, Beitreten, Beigetreten) durch Aufrufen von GET_STATUS für die Zusammenarbeit anzeigen. Die meisten Änderungsaktionen für die Zusammenarbeit, wie das Verknüpfen einer Ressource, das Beitreten zu einer Zusammenarbeit oder das Aktivieren der Ergebnisse, sind entweder asynchron oder können einige Zeit in Anspruch nehmen, bis sie auf andere Teilnehmenden übertragen werden. Sie sollten also die entsprechende Prozedur aufrufen, um den Status der Änderung anzuzeigen.

Ausführen einer Analyse

Teilnehmende, die in einer Zusammenarbeit als Analyseausführende aufgeführt sind, können Abfragen zu allen Datenangeboten durchführen, die ihnen in der Zusammenarbeit zur Verfügung stehen.

Kollaborationen unterstützen die folgenden Arten von Analysen:

  • Vorlagenbasierte Analyseabfragen: Ein Analyseausführender kann beliebige Vorlagen, die ihm in der Zusammenarbeit zugewiesen sind, ausführen und die Ergebnisse synchron sehen.

  • Aktivierungsanalysen: Wenn das Datenangebot, die Zusammenarbeit und die Vorlage dies zulassen, kann der Analyseausführende die Ergebnisse im Snowflake-Konto des angegebenen Teilnehmenden aktivieren (speichern).

  • SQL-Freiformanalysen: Wenn die Zusammenarbeit und das Datenangebot dies zulassen, können Analyseausführende SQL-Abfragen direkt für Daten eines Datenangebots ausführen. Siehe SQL-Freiformabfragen.

Zusammenarbeit verlassen oder löschen

Sie können eine Zusammenarbeit jederzeit verlassen, obwohl die Person mit Eigentumsrechten an der Zusammenarbeit eine Zusammenarbeit nicht verlassen kann und stattdessen die Zusammenarbeit für alle löscht.

  • Nicht-Eigentümer verlassen eine Zusammenarbeit, indem sie LEAVE aufrufen. Alle von ihnen bereitgestellten Datenangebote werden aus der Zusammenarbeit entfernt. Sie können einer Zusammenarbeit nicht wieder beitreten, nachdem Sie sie verlassen haben.

  • Personen mit Eigentumsrechten an der Zusammenarbeit können eine Zusammenarbeit nicht verlassen. Die Eigentümerschaft kann nicht übertragen werden. Ein Eigentümer einer Zusammenarbeit kann eine Zusammenarbeit für alle Teilnehmenden löschen, indem er TEARDOWN aufruft.

Das Verlassen oder Löschen einer Zusammenarbeit erfolgt asynchron. Sie müssen GET_STATUS aufrufen, um den Status zu überwachen, und LEAVE oder TEARDOWN erneut aufrufen, wenn GET_STATUS den Status als LOCAL_DROP_PENDING anzeigt.

Das Löschen einer Zusammenarbeit wirkt sich nicht auf den Registrierungsstatus der mit der Zusammenarbeit verbundenen Ressourcen aus. Diese Ressourcen können weiter genutzt oder mit neuen Zusammenarbeiten verknüpft werden.