Snowflake Data Clean Rooms: Anbieter-API-Referenzhandbuch

Dieses Handbuch beschreibt die Entwickler-APIs, mit denen ein Anbieter einen Reinraum erstellen, konfigurieren und freigeben kann. Alle Funktionen befinden sich innerhalb des folgenden Schemas:

samooha_by_snowflake_local_db.provider
Copy

Umgebung einrichten

Führen Sie die folgenden Befehle aus, um die Snowflake-Umgebung einzurichten, bevor Sie Entwickler-APIs für die Arbeit mit einem Snowflake Data Clean Room verwenden. Wenn Sie nicht über die Rolle SAMOOHA_APP_ROLE verfügen, wenden Sie sich an Ihren Kontoadministrator.

use role samooha_app_role;
use warehouse app_wh;
Copy

Erstellt einen Namen für den Reinraum. Der Name des Reinraums darf nur alphanumerische Zeichen enthalten. Der Name des Reinraums darf keine anderen Sonderzeichen als Leerzeichen und Unterstriche enthalten.

set cleanroom_name = 'Test Cleanroom 1';  -- This must only have alphanumeric characters.
Copy

Reinraum erstellen

Verwenden Sie die folgenden Befehle, um einen Reinraum zu erstellen und zu löschen:

provider.cleanroom_init

Beschreibung: Erstellt einen Reinraum in Ihrem Konto. Sie können dem Reinraum einen Namen geben, der nur alphanumerische Zeichen und Leerzeichen enthält. Sie müssen auch die Distribution des Reinraums übergeben, um zu spezifizieren, ob es sich um einen Test-Reinraum handelt, den Sie nur innerhalb Ihrer Organisation nutzen möchten (INTERNAL), oder um einen Produktions-Reinraum, den Sie extern mit anderen Organisationen gemeinsam nutzen möchten (EXTERNAL).

Wenn keine Distributionswert angegeben wird, wird standardmäßig INTERNAL verwendet.

Sie können einen INTERNAL-Reinraum in einen EXTERNAL-Reinraum wie folgt umwandeln:

alter application package samooha_cleanroom_<CLEANROOM_ID> SET DISTRIBUTION = EXTERNAL;
Copy

Bemerkung

Die Distribution kann entweder EXTERNAL oder INTERNAL sein. Wenn für einen Reinraum die EXTERNAL-Distribution angegeben ist, muss Snowflake zunächst einen automatischen Sicherheitsscan ausführen, bevor der Reinraum für die Teilnehmer freigegeben werden kann. Weitere Informationen dazu finden Sie unter provider.set_default_release_directive.

Eingabe: cleanroom_name(string), distribution(string)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.cleanroom_init($cleanroom_name, 'INTERNAL');
Copy

provider.set_default_release_directive

Beschreibung: Legt eine Release-Richtlinie für den Reinraum fest, d. h. Version und Patch, die die Teilnehmer erhalten.

Standardmäßig werden alle Reinräume mit den folgenden Versions- und Patch-Nummern erstellt:

  • Version: V1_0

  • Patch: 0

Bemerkung

Wenn die Distribution des Reinraums auf EXTERNAL eingestellt ist, kann diese Funktion nur aufgerufen werden, wenn der Reinraum-Sicherheitsscan in den Zustand APPROVED aufweist. Um den aktuellen Scan-Status anzuzeigen, rufen Sie Folgendes auf:

show versions in application package samooha_cleanroom_<CLEANROOM_ID>;
Copy

Eingabe: cleanroom_name(string), version(string), patch(string)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.set_default_release_directive($cleanroom_name, 'V1_0', '0');
Copy

provider.drop_cleanroom

Beschreibung: Ein bestehender Reinraum kann vom Ersteller gelöscht werden. Dadurch wird der Reinraum vollständig gelöscht, was bedeutet, dass Verbraucher, die den Reinraum installiert haben, nicht mehr darauf zugreifen oder ihn verwenden können.

Eingabe: cleanroom_name(string)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.drop_cleanroom($cleanroom_name);
Copy

Daten registrieren und abmelden

Verwenden Sie den folgenden Befehl, um Datenbanken, Schemas und Objekte zu registrieren und die Registrierung aufzuheben. Tabellen und Ansichten müssen registriert werden, bevor sie mit dem Reinraum verknüpft werden können. Wenn Sie eine Datenbank oder ein Schema registrieren, werden alle Objekte in dieser Datenbank oder diesem Schema registriert.

provider.register_db

Beschreibung: Wird mit Aufruferrechten ausgeführt und ermöglicht es Kontoadministratoren, Datenbanken zu registrieren, die für die Snowflake Data Clean Room-Anwendung sichtbar sind. Die SELECT-Berechtigung wird für alle Schemas und Tabellen in der Datenbank sowie für die native Anwendung Snowflake Data Clean Room (SAMOOHA_BY_SNOWFLAKE) erteilt.

Eingabe: db_name (string)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.register_db('SAMOOHA_SAMPLE_DATABASE');
Copy

library.register_schema

Beschreibung: Ähnlich wie register_db, arbeitet jedoch auf Schemaebene. Ein Array oder eine Zeichenfolge, die den vollständig qualifizierten Schemanamen repräsentiert, kann übergeben werden, und es werden SELECT-Zuweisungen für die Rolle SAMOOHA_APP_ROLE vorgenommen, sodass der Benutzer die Objekte im Schema mit dem Reinraum verknüpfen kann.

Wenn Sie ein verwaltetes Zugriffsschema registrieren möchten (d. h. ein Schema, das mit dem Parameter WITH MANAGED ACCESS erstellt wurde), verwenden Sie stattdessen library.register_managed_access_schema.

Eingabe: schema_name (array)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.library.register_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
Copy

library.register_managed_access_schema

Beschreibung: Ähnlich wie register_schema, registriert jedoch ein Schema, das mit dem Parameter WITH MANAGED ACCESS erstellt wurde. Ein Array oder eine Zeichenfolge, die den vollständig qualifizierten Schemanamen repräsentiert, kann übergeben werden, und es werden SELECT-Zuweisungen für die Rolle SAMOOHA_APP_ROLE vorgenommen, sodass der Benutzer die Objekte im Schema mit dem Reinraum verknüpfen kann.

Eingabe: schema_name (array)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.library.register_managed_access_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
Copy

library.register_table_or_view

Beschreibung: Registriert Tabellen und Ansichten aller Art.

Eingabe: object_names (array), is_view (boolean), is_iceberg (boolean), is_external (boolean), is_under_managed_access_schema (boolean)

Ausgabe Erfolgsmeldung (string)

Beispiele

Um eine Tabelle zu registrieren:

call samooha_by_snowflake_local_db.library.register_table_or_view(
    ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
    false,
    false,
    false,
    false);
Copy

Um eine Iceberg-Tabelle zu registrieren:

call samooha_by_snowflake_local_db.library.register_table_or_view(
        ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'], 
        false, 
        true,
        false,
        false);
Copy

library.register_table

Beschreibung: Ähnlich wie register_db, operiert aber auf Tabellenebene. Ein Array oder eine Zeichenfolge, die den vollqualifizierten Tabellennamen repräsentiert, kann übergeben werden, und SELECT-Zuweisungen für die Rolle SAMOOHA_APP_ROLE werden ausgeführt, sodass der Benutzer die Tabelle mit dem Reinraum verknüpfen kann.

Wenn Sie Tabellen in einem verwalteten Zugriffsschema (d. h. ein Schema, das mit dem Parameter WITH MANAGED ACCESS erstellt wurde) registrieren möchten, verwenden Sie stattdessen library.register_managed_access_table.

Eingabe: table_name (array)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.library.register_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.register_managed_access_table

Beschreibung: Ähnlich wie register_table, registriert aber Tabellen in einem Schema, das mit dem Parameter WITH MANAGED ACCESS erstellt wurde. Ein Array oder eine Zeichenfolge, die den vollqualifizierten Tabellennamen repräsentiert, kann übergeben werden, und SELECT-Zuweisungen für die Rolle SAMOOHA_APP_ROLE werden ausgeführt, sodass der Benutzer die Tabelle mit dem Reinraum verknüpfen kann.

Eingabe: table_name (array)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.library.register_managed_access_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

bibliothek.register_view

Beschreibung: Ähnlich wie register_db, arbeitet aber auf der Ansichtsebene. Ein Array oder eine Zeichenfolge, die den vollqualifizierten Ansichtsnamen repräsentiert, kann übergeben werden, und SELECT-Zuweisungen für die Rolle SAMOOHA_APP_ROLE werden ausgeführt, sodass der Benutzer die Ansicht mit dem Reinraum verknüpfen kann.

Wenn Sie Ansichten in einem verwalteten Zugriffsschema (d. h. ein Schema, das mit dem Parameter WITH MANAGED ACCESS erstellt wurde) registrieren möchten, verwenden Sie stattdessen library.register_managed_access_view.

Eingabe: view_name (array)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.library.register_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.register_managed_access_view

Beschreibung: Ähnlich wie register_view, registriert aber die Ansichten in einem Schema, das mit dem Parameter WITH MANAGED ACCESS erstellt wurde. Ein Array oder eine Zeichenfolge, die den vollqualifizierten Ansichtsnamen repräsentiert, kann übergeben werden, und SELECT-Zuweisungen für die Rolle SAMOOHA_APP_ROLE werden ausgeführt, sodass der Benutzer die Ansicht mit dem Reinraum verknüpfen kann.

Eingabe: view_name (array)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.library.register_managed_access_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.unregister_db

Beschreibung: Macht die Prozedur register_db rückgängig und entfernt die Berechtigungen auf Datenbankebene, die der Rolle SAMOOHA_APP_ROLE und der nativen Snowflake Data Clean Room-Anwendung erteilt wurden. Dadurch wird auch jede Datenbank aus dem UI-Dropdown-Element entfernt.

Eingabe: db_name (string)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.library.unregister_db('SAMOOHA_SAMPLE_DATABASE');
Copy

library.unregister_schema

Beschreibung: Hebt die Registrierung eines Schemas auf, was Benutzer daran hindert, dessen Tabellen und Ansichten mit dem Clean Room zu verknüpfen.

Wenn Sie die Registrierung eines verwalteten Zugriffsschemas (d. h. eines Schemas, das mit dem Parameter WITH MANAGED ACCESS erstellt wurde) aufheben möchten, verwenden Sie stattdessen library.unregister_managed_access_schema.

Eingabe: schema_name (array)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.library.unregister_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
Copy

library.unregister_managed_access_schema

Beschreibung: Ähnlich wie unregister_schema, hebt jedoch die Registrierung eines Schemas auf, das mit dem Parameter WITH MANAGED ACCESS erstellt wurde.

Eingabe: schema_name (array)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.library.unregister_managed_access_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
Copy

library.unregister_table_or_view

Beschreibung: Hebt die Registrierung von Tabellen und Ansichten aller Art auf.

Eingabe: object_names (array), is_view (boolean), is_iceberg (boolean), is_external (boolean), is_under_managed_access_schema (boolean)

Ausgabe Erfolgsmeldung (string)

Beispiele

So heben Sie die Registrierung einer Tabelle auf:

call samooha_by_snowflake_local_db.library.unregister_table_or_view(
    ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
    false,
    false,
    false,
    false);
Copy

library.unregister_table

Beschreibung: Ähnlich wie unregister_db, arbeitet jedoch auf Tabellenebene. Ein Array oder eine Zeichenfolge, die den vollqualifizierten Tabellennamen repräsentiert, kann übergeben werden, um die Registrierung der Tabellen aufzuheben. Benutzer können keine nicht registrierten Tabellen mit einem Reinraum verknüpfen.

Wenn Sie die Registrierung von Tabellen in einem verwalteten Zugriffsschema (d. h. ein Schema, das mit dem Parameter WITH MANAGED ACCESS erstellt wurde) aufheben möchten, verwenden Sie stattdessen library.unregister_managed_access_table.

Eingabe: table_name (array)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.library.unregister_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.unregister_managed_access_table

Beschreibung: Ähnlich wie unregister_table, hebt jedoch die Registrierung von Tabellen in einem verwaltetem Zugriffsschema auf (d. h. ein Schema, das mit dem Parameter WITH MANAGED ACCESS erstellt wurde).

Eingabe: table_name (array)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.library.unregister_managed_access_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.unregister_view

Beschreibung: Ähnlich wie unregister_db, arbeitet jedoch auf Ansichtsebene. Ein Array oder eine Zeichenfolge, die den vollständig qualifizierten Namen der Ansicht repräsentiert, kann übergeben werden, um die Registrierung der Ansichten aufzuheben. Benutzer können keine nicht registrierten Ansichten mit einem Reinraum verknüpfen.

Wenn Sie die Registrierung von Ansichten in einem verwaltetem Zugriffsschema (d. h. einem Schema, das mit dem Parameter WITH MANAGED ACCESS erstellt wurde) aufheben möchten, verwenden Sie stattdessen library.unregister_managed_access_view.

Eingabe: view_name (array)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.library.unregister_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.unregister_managed_access_view

Beschreibung: Ähnlich wie unregister_view, hebt jedoch die Registrierung von Ansichten in einem verwaltetem Zugriffsschema auf (d. h. ein Schema, das mit dem Parameter WITH MANAGED ACCESS erstellt wurde).

Eingabe: view_name (array)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.library.unregister_managed_access_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

Datensets hinzufügen und Richtlinien erstellen

Verwenden Sie die folgenden Befehle, um Daten hinzuzufügen und Richtlinien für den Reinraum einzurichten.

provider.restrict_table_options_to_consumers

Beschreibung: Steuert, ob ein bestimmter Verbraucher auf eine Tabelle im Reinraum zugreifen kann.

Das zweite Argument ist ein JSON-Objekt, bei dem jedes Name/Wert-Paar der Name einer Tabelle und eine Array von Verbrauchern ist, die darauf zugreifen können. Jeder Verbraucher wird über seinen Konto-Locator angegeben.

Eingabe: cleanroom_name(string), access_details(variant)

Ausgabe: Erfolgsmeldung (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.restrict_table_options_to_consumers(
    $cleanroom_name,
    {
        'DB.SCHEMA.TABLE1': ['CONSUMER_1_LOCATOR'],
        'DB.SCHEMA.TABLE2': ['CONSUMER_1_LOCATOR', 'CONSUMER_2_LOCATOR']
    }
);
Copy

provider.set_join_policy

Beschreibung: Gibt an, auf welchen Spalten der Verbraucher eine Verknüpfung ausführen darf, wenn er Vorlagen im Reinraum ausführt. Beachten Sie, dass die Spaltenrichtlinie nur ersetzt wird. Wenn die Funktion also erneut aufgerufen wird, wird die zuvor festgelegte Spaltenrichtlinie vollständig durch die aktuelle ersetzt.

Beachten Sie, dass die Prüfungen ausgeführt werden, indem entweder das Argument where_clause einer SQL Jinja-Vorlage oder alle Argumente, denen der Filter join_policy hinzugefügt wurde, geprüft werden. Diese Prüfung sucht nach nicht autorisierten Spalten. Abfragen mit Platzhaltern werden von diesen Prüfungen möglicherweise nicht erfasst, und Sie sollten bei der Entwicklung der Analysemaske trotzdem Vorsicht walten lassen.

Standardmäßig werden Prüfungen für SQL Jinja-Argumente namens where_clause ausgeführt. Stellen Sie sicher, dass Sie dieses Tag verwenden, um diese Prüfung zu aktivieren.

Eingabe: cleanroom_name(string), table_and_col_names(array)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.set_join_policy($cleanroom_name, ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:EMAIL', 'SAMOOHA_SAMPLE_DATABASE.DEMO.EXPOSURES:EMAIL']);
Copy

Vorlagen

Verwenden Sie die folgenden Befehle, um die Vorlagen/Analysen hinzuzufügen, die in diesem Reinraum unterstützt werden.

provider.add_templates

Beschreibung: Fügt eine Liste mit vordefinierten Vorlagen unter Verwendung ihrer Bezeichner hinzu. Beispiele sind „prod_overlap_analysis“ und „prod_provider_data_analysis“.

Eingabe: cleanroom_name(string), template_names(array)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.add_templates($cleanroom_name, ['prod_overlap_analysis']);
Copy

provider.view_template_definition

Beschreibung: Ruft anhand des Vorlagennamens die Vorlagendefinition aus dem Reinraum ab. Dies hilft dem Benutzer, die Vorlage visuell zu überprüfen und festzustellen, welche Parameter bei der Ausführung der Vorlage übergeben werden müssen.

Eingabe: cleanroom_name (string), template_name (string)

Ausgabe: The template definition (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.view_template_definition($cleanroom_name, 'prod_overlap_analysis');
Copy

provider.clear_template

Beschreibung: Entfernt eine bestimmte Vorlage (die durch ihren Namen referenziert wird) aus dem Reinraum.

Eingabe: cleanroom_name(string), template_name(string)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.clear_template($cleanroom_name, 'prod_custom_template');
Copy

provider.clear_all_templates

Beschreibung: Entfernt alle Vorlagen, die dem Reinraum hinzugefügt wurden. Nach diesem Aufruf müssen die Vorlagen erneut hinzugefügt werden.

Eingabe: cleanroom_name(string)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.clear_all_templates($cleanroom_name);
Copy

provider.set_column_policy

Beschreibung: Legt fest, mit welchen Spalten in den Daten der Verbraucher Operationen ausführen kann. Dies sollte erst nach dem Hinzufügen der Vorlage aufgerufen werden. Dies ist ebenfalls eine Funktion der Vorlage, sodass die Eingaben im Format template_name:full_table_name:column_name erfolgen müssen. Beachten Sie, dass die Spaltenrichtlinie nur ersetzt wird. Wenn die Funktion erneut aufgerufen wird, wird die zuvor festgelegte Spaltenrichtlinie vollständig durch die aktuelle ersetzt.

Die Spaltenrichtlinien-API sollte nicht für Identitätsspalten wie E-Mail aufgerufen werden. Sie sollte nur für Aggregate und die Gruppierung nach Spalten verwendet werden.

Beachten Sie, dass die Prüfungen ausgeführt werden, indem die SQL-Abfrage, die auf den Daten ausgeführt werden soll, auf nicht autorisierte Spalten analysiert wird. Abfragen mit Platzhaltern werden von diesen Prüfungen möglicherweise nicht erfasst, und Sie sollten bei der Entwicklung der Analysemaske trotzdem Vorsicht walten lassen.

Standardmäßig werden Prüfungen für SQL Jinja-Argumente namens dimensions oder measure_columns ausgeführt. Stellen Sie sicher, dass Sie diese Tags verwenden, um diese Prüfung zu aktivieren.

Alternativ können Sie die Tags join_policy und column_policy in der SQL Jinja-Vorlage verwenden, um Sicherheitsrichtlinien für benutzerdefinierte SQL Jinja-Argumente durchzusetzen.

Eingabe: cleanroom_name(string), analysis_and_table_and_columns(array)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.set_column_policy($cleanroom_name,
['prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:STATUS',
 'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:AGE_BAND',
 'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:DAYS_ACTIVE',
 'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.EXPOSURES:CAMPAIGN']);
Copy

provider.add_custom_sql_template

Beschreibung: Fügt eine benutzerdefinierte SQL Jinja-Vorlage in den Reinraum ein. Dies macht die Vorlage für den Verbraucher aufrufbar.

Sie können diese API mehrmals aufrufen, um dem Reinraum mehrere benutzerdefinierte Vorlagen hinzuzufügen. Die Prozedur überschreibt alle früheren Vorlagen mit demselben Namen. Wenn Sie eine bestehende Vorlage bearbeiten möchten, übergeben Sie den Namen der bestehenden Vorlage als Argument an die API.

Wenn der Verbraucher die Vorlage verwendet, um Ergebnisse an den Anbieter zurückzusenden, muss der Befehl die folgenden Anforderungen erfüllen:

  • Der Name der benutzerdefinierten Vorlage muss mit der Zeichenfolge activation beginnen. Zum Beispiel: activation_custom_template.

  • Die Definition der Vorlage muss eine Tabelle erstellen, die mit cleanroom.activation_data_ beginnt. Zum Beispiel: CREATE TABLE cleanroom.activation_data_analysis_results AS ... .

  • Die Definition der Vorlage muss den eindeutigen Teil des Tabellennamens zurückgeben, der in der Definition erstellt wurde, d. h. die Zeichenfolge, die an cleanroom.activation_data_ angehängt ist. Zum Beispiel: return 'data_analysis_results'.

In SQL Jinja-Vorlagen gibt es zwei spezielle Argumente:

  • source_table: Array von Tabellen auf Seiten des Anbieters

  • my_table: Array von Tabellen auf Seiten des Verbrauchers

Alle Anbieter- und Verbrauchertabellen müssen mit diesen Argumenten referenziert werden, da der Name der mit dem Reinraum tatsächlich verknüpften sicheren Ansicht ein anderer ist als der Tabellenname. Wichtig: Anbieter-Tabellen-Aliasse müssen p (oder p1), p2, p3, p4 usw. sein und Verbraucher-Tabellen-Aliasse müssen c (oder c1), c2, c3 usw. sein. Dies ist erforderlich, um die Sicherheitsrichtlinien im Reinraum durchzusetzen.

Damit „column_policy“ und „join_policy“ Prüfungen von Verbraucheranalyseanfragen ausführen können, müssen alle Spaltennamen in der SQL Jinja-Vorlage als dimensions oder measure_columns bezeichnet werden. Stellen Sie sicher, dass Sie diese Tags verwenden, um auf Spalten zu verweisen, die Sie in benutzerdefinierten SQL Jinja-Vorlagen standardmäßig überprüfen möchten.

Alternativ kann jedes Argument in einer benutzerdefinierten SQL Jinja-Vorlage mit den folgenden Filtern auf die Einhaltung der Verknüpfungs- und Spaltenrichtlinien überprüft werden:

  • join_policy: Prüft, ob ein String-Wert oder eine Filterklausel mit der Verknüpfungsrichtlinie konform ist.

  • column_policy: Prüft, ob ein String-Wert oder eine Filterklausel mit der Spaltenrichtlinie konform ist.

  • join_and_column_policy: Prüft, ob Spalten, die für eine Verknüpfung in einer Filterklausel verwendet werden, mit der Verknüpfungsrichtlinie übereinstimmen, und ob Spalten, die als Filter verwendet werden, mit der Spaltenrichtlinie übereinstimmen.

Beispielsweise wird in der Klausel {{ where_clause | sqlsafe | join_and_column_policy }} eine Eingabe p.HEM = c.HEM und p.STATUS = 1 geparst, um zu prüfen, ob p.HEM in der Verknüpfungsrichtlinie und p.STATUS in der Spaltenrichtlinie enthalten ist.

Hinweis: Verwenden Sie den Filter sqlsafe nur mit Vorsicht, da er es Teilnehmern erlaubt, reines SQL in die Vorlage einzubringen.

Wenn Sie keine Liste von Kunden angeben, können alle Kunden die benutzerdefinierte Vorlage verwenden. Wenn Sie den Parameter verwenden, um eine Liste von Verbrauchern anzugeben, können nur diese Verbraucher die Vorlage im Reinraum verwenden.

Eingabe: cleanroom_name(string), template_name(string), template(string), differential_privacy_sensitivity(float, OPTIONAL), consumer_list(array, OPTIONAL)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.add_custom_sql_template(
    $cleanroom_name, 'prod_custom_template', 
    $$
select 
    identifier({{ dimensions[0] | column_policy }}) 
from 
    identifier({{ my_table[0] }}) c 
    inner join 
    identifier({{ source_table[0] }}) p 
    on 
        c.identifier({{ consumer_id  }}) = identifier({{ provider_id | join_policy }}) 
    {% if where_clause %} where {{ where_clause | sqlsafe | join_and_column_policy }} {% endif %};
    $$);
Copy

provider.restrict_template_options_to_consumers

Beschreibung: Steuert, ob ein bestimmter Verbraucher eine Vorlage im Reinraum verwenden kann.

Das zweite Argument ist ein JSON-Objekt, bei dem jedes Name/Wert-Paar der Name einer Vorlage und ein Array von Verbrauchern ist, die diese Vorlage verwenden können. Jeder Verbraucher wird über seinen Konto-Locator angegeben.

Eingabe: cleanroom_name(string), access_details(variant)

Ausgabe: Erfolgsmeldung (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.restrict_template_options_to_consumers(
    $cleanroom_name,
    {
        'prod_template_1': ['CONSUMER_1_LOCATOR', 'CONSUMER_2_LOCATOR']
    }
);
Copy

Verbraucherdefinierte Vorlagen

Mit den folgenden APIs können Sie die Anfrage eines Verbrauchers, eine Vorlage zum Reinraum hinzuzufügen, genehmigen oder ablehnen. Eine verbraucherdefinierte Vorlage wird nur dann zu einem Reinraum hinzugefügt, wenn der Anbieter die Anfrage des Verbrauchers zum Hinzufügen der Vorlage genehmigt. Weitere Informationen finden Sie unter Mit dem Entwickler API benutzerdefinierte Vorlagen hinzufügen.

provider.list_template_requests

Beschreibung: Listet alle Anfragen von Verbrauchern auf, die verbraucherdefinierte Vorlage zu einem Reinraum hinzufügen möchten. Dazu gehören ausstehende, genehmigte und abgelehnte Anfragen.

Eingabe: cleanroom_name (string)

Ausgabe: request_id(string), consumer_identifier(string), template_name(string), template_definition(string), status(string)

Beispiel:

CALL samooha_by_snowflake_local_db.provider.list_template_requests('dcr_cleanroom');
Copy

provider.approve_template_request

Beschreibung: Genehmigt eine Anfrage zum Hinzufügen einer Vorlage zum Reinraum. Um die Argument <request_id> zu erhalten, führen Sie den Befehl provider.list_template_requests aus, um die UUID der Anfrage abzurufen.

Eingabe: cleanroom_name (string), request_id (string)

Ausgabe: success message (string)

Beispiel:

CALL samooha_by_snowflake_local_db.provider.approve_template_request('dcr_cleanroom', 
    '01b4d41d-0001-b572');
Copy

provider.reject_template_request

Beschreibung: Lehnt eine Anfrage zum Hinzufügen einer Vorlage zum Reinraum ab. Um die Argument <request_id> zu erhalten, führen Sie den Befehl provider.list_template_requests aus, um die UUID der Anfrage abzurufen.

Eingabe: cleanroom_name (string), request_id (string), reason_for_rejection(string)

Ausgabe: success message (string)

Beispiel:

CALL samooha_by_snowflake_local_db.provider.reject_template_request('dcr_cleanroom',
  '01b4d41d-0001-b572',
  'Failed security assessment');
Copy

Konfigurieren, wer Analysen ausführen darf

Verwenden Sie die folgenden Befehle, um zu konfigurieren, wer im Reinraum Analysen ausführen darf. Sie können den Anbieter (Ersteller des Reinraums), den Verbraucher (Installierer des Reinraums) oder beide angeben.

provider.enable_provider_run_analysis

Beschreibung: Ermöglicht dem Anbieter (Ersteller des Reinraums), Analysen im Reinraum auszuführen (standardmäßig deaktiviert).

Bemerkung

Sehr wichtig: Dies muss nach provider.add_consumer aufgerufen werden, und bevor ein Verbraucher einen Reinraum installiert. Wenn dies geändert wird, nachdem ein Verbraucher seinen Reinraum bereits installiert hat, muss er den Reinraum neu installieren, damit die neue Konfiguration berücksichtigt wird.

Eingabe: cleanroom_name(string), consumer_account_locator(string)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.enable_provider_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']);
Copy

provider.disable_provider_run_analysis

Beschreibung: Deaktiviert den Anbieter (Ersteller des Reinraums) für Ausführung von Analysen im Reinraum (dies ist standardmäßig deaktiviert).

Bemerkung

Sehr wichtig: Dies muss nach provider.add_consumer aufgerufen werden, und bevor ein Verbraucher einen Reinraum installiert. Wenn dies geändert wird, nachdem ein Verbraucher seinen Reinraum bereits installiert hat, muss er den Reinraum neu installieren, damit die neue Konfiguration berücksichtigt wird.

Eingabe: cleanroom_name(string), consumer_account_locator(string)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.disable_provider_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']);
Copy

provider.enable_consumer_run_analysis

Beschreibung: Ermöglicht dem Verbraucher (Reinraum-Installierer), Analysen im Reinraum auszuführen (dies ist standardmäßig aktiviert).

Bemerkung

Sehr wichtig: Dies muss nach provider.add_consumer aufgerufen werden, und bevor ein Verbraucher einen Reinraum installiert. Wenn dies geändert wird, nachdem ein Verbraucher seinen Reinraum bereits installiert hat, muss er den Reinraum neu installieren, damit die neue Konfiguration berücksichtigt wird.

Eingabe: cleanroom_name(string), consumer_account_locator(string)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.enable_consumer_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']); 
Copy

provider.disable_consumer_run_analysis

Beschreibung: Deaktiviert den Verbraucher (Reinraum-Installierer) für Ausführung von Analysen im Reinraum (dies ist standardmäßig aktiviert).

Bemerkung

Sehr wichtig: Dies muss nach provider.add_consumer aufgerufen werden, und bevor ein Verbraucher einen Reinraum installiert. Wenn dies geändert wird, nachdem ein Verbraucher seinen Reinraum bereits installiert hat, muss er den Reinraum neu installieren, damit die neue Konfiguration berücksichtigt wird.

Eingabe: cleanroom_name(string), consumer_account_locator(string)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.disable_consumer_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']); 
Copy

library.is_provider_run_enabled

Beschreibung: Prüft, ob in diesem Reinraum Provider Run Analysis aktiviert ist. Hinweis: Die explizite Genehmigung muss noch erteilt werden, indem Sie consumer.enable_templates_for_provider_run aufrufen (siehe unten).

Eingabe: cleanroom_name (string)

Ausgabe: enabled message (string)

Beispiel:

call samooha_by_snowflake_local_db.library.is_provider_run_enabled($cleanroom_name)
Copy

library.is_consumer_run_enabled

Beschreibung: Prüft, ob in diesem Reinraum die Consumer Run Analysis aktiviert ist. Dieses Flag bestimmt, ob der Reinraum-Verbraucher (Installierer) Analysen ausführen oder als Datenlieferant für die Zusammenarbeit fungieren kann.

Eingabe: cleanroom_name (string)

Ausgabe: enabled message (string)

Beispiel:

call samooha_by_snowflake_local_db.library.is_consumer_run_enabled($cleanroom_name)
Copy

Vorlagenketten

Verwenden Sie die folgenden Befehle zum Erstellen und Verwalten von Vorlagenketten. Allgemeine Informationen zur Verwendung von Vorlagenketten finden Sie unter Verwendung der Entwickler-APIs zur sequenziellen Ausführung von Vorlagen.

provider.add_template_chain

Beschreibung: Erzeugt eine neue Vorlagenkette. Vorlagen müssen vorhanden sein, bevor sie der Vorlagenkette hinzugefügt werden.

Eingabe: cleanroom_name(string), template_chain_name(string), templates(array of objects)

Das JSON-Objekt, das eine Vorlage darstellt, kann die folgenden Felder enthalten:

  • template_name (string) – Gibt die Vorlage an, die der Vorlagenkette hinzugefügt wird. Die Vorlage muss bereits vorhanden sein.

  • cache_results (boolean) - Legt fest, ob die Ergebnisse der Vorlage vorübergehend gespeichert werden, damit andere Vorlagen in der Vorlagenkette darauf zugreifen können. Um Ergebnisse zwischenzuspeichern, geben Sie TRUE an.

  • output_table_name (string) – Wenn cache_results = TRUE, gibt den Namen der Snowflake-Tabelle an, in der die Vorlagenergebnisse gespeichert werden.

  • jinja_output_table_param (string) - Wenn cache_results = TRUE, gibt den Namen des Jinja-Parameters an, den andere Vorlagen enthalten müssen, um die in output_table_name gespeicherten Ergebnisse zu akzeptieren.

  • cache_expiration_hours (integer) - Wenn cache_results = TRUE, gibt die die Anzahl der Stunden an, bevor die Ergebnisse im Cache gelöscht werden. Wenn der Cache abläuft, wird bei der nächsten Ausführung der Vorlagenkette der Cache mit den Ergebnissen der Vorlage aktualisiert.

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.add_template_chain(
  'collab_clean_room',
  'my_chain',
  [
    {
      'template_name': 'crosswalk',
      'cache_results': True,
      'output_table_name': 'crosswalk',
      'jinja_output_table_param': 'crosswalk_table_name',
      'cache_expiration_hours': 2190
    },
    {
      'template_name': 'transaction_insights',
      'cache_results': False
    }
  ]
);
Copy

provider.view_added_template_chains

Beschreibung: Zeigt die derzeit im Reinraum aktiven Vorlagenketten an.

Eingabe: cleanroom_name (string)

Ausgabe: Die hinzugefügten Vorlagenketten (Tabelle)

Beispiel:

call samooha_by_snowflake_local_db.provider.view_added_template_chains($cleanroom_name);
Copy

provider.view_template_chain_definition

Beschreibung: Gibt die Attribute einer Vorlagenkette zurück.

Eingabe: cleanroom_name (string), template_chain_name (string)

Ausgabe: Die Definition der Vorlagenkette (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.view_template_chain_definition($cleanroom_name, 'insights_chain');
Copy

provider.clear_template_chain

Beschreibung: Entfernt eine angegebene Vorlagenkette (die durch ihren Namen bezeichnet wird) aus dem Reinraum.

Eingabe: cleanroom_name(string), template_chain_name(string)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.clear_template_chain($cleanroom_name, 'insights_chain');
Copy

provider.clear_all_template_chains

Beschreibung: Entfernt alle Vorlagenketten, die dem Reinraum hinzugefügt wurden.

Eingabe: cleanroom_name(string)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.clear_all_template_chains($cleanroom_name);
Copy

Ausführen von Analysen als Reinraum-Ersteller

provider.submit_analysis_request

Beschreibung: Das Ausführen von Analysen als Reinraum-Anbieter erfolgt durch Einreichen einer Analyseanfrage. Diese Analyseanfrage wird an den Reinraum weitergeleitet und mit den Sicherheitsrichtlinien des Verbrauchers abgeglichen. Sobald die Analyse die Sicherheitsprüfungen und Schichten der differentiellen Privatsphäre durchlaufen hat und zugelassen wurde, erfolgt deren Ausführung im Reinraum und die sichere Speicherung der Ergebnisse innerhalb des Reinraums.

Wenn Sie dem Anbieter das Ausführen von Analysen ermöglichen, wird dem Reinraum ein kryptografischer Schlüssel hinzugefügt, den nur der Anbieter kennt. Dieser Schlüssel wird verwendet, um die Analyseergebnisse zu verschlüsseln, bevor sie an den Anbieter-Mandanten zurückgesendet werden, wo sie dann mit dem sicheren Schlüssel entschlüsselt werden. Dadurch wird sichergestellt, dass niemand außer dem Anbieter die Ergebnisse einer vom Anbieter angeforderten Analyse sehen kann.

Eingabe: cleanroom_name (string), consumer_account_locator (string), template_name (string), consumer_tables (array), provider_tables (array), analysis_arguments (object)

Ausgabe: request ID (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.submit_analysis_request(
    $cleanroom_name, 
    '<CONSUMER_ACCOUNT>',
    'prod_overlap_analysis', 
    ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'], 
    ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'], 
    object_construct(       
      'dimensions', ['c.REGION_CODE'],        
      'measure_type', ['AVG'],           
      'measure_column', ['c.DAYS_ACTIVE']                                         
    ));

-- This API returns a request ID that we save into a local variable.
set request_id = '<REQUEST_ID';
Copy

provider.check_analysis_status

Beschreibung: Sobald eine Analyseanfrage eingereicht wurde, können Sie mit dieser API den Status der Anfrage überprüfen. Es kann bis zu 1 Minute dauern, bis die Anfrage nach dem Absenden angezeigt wird. Sobald dies geschehen ist, wird der Status COMPLETED angezeigt.

Eingabe: cleanroom_name (string), request_id (string), consumer_account_locator (string)

Ausgabe: status (string)

Beispiel:

-- It can take up to 2 minutes for this to pick up the request ID after the initial request
call samooha_by_snowflake_local_db.provider.check_analysis_status(
    $cleanroom_name, 
    $request_id, 
    '<CONSUMER_ACCOUNT>'
);
Copy

provider.get_analysis_result

Beschreibung: Sobald für den Analysestatus einer bestimmten Anfrage-ID COMPLETED angezeigt wird, können die Ergebnisse für eine „request_id“ über diese API abgerufen werden. Diese entschlüsselt die Ergebnisse mit dem geheimen Schlüssel, der während der Analyseaktivierung in Ihrem Konto erstellt wurde, und gibt die Analyseergebnisse aus.

Eingabe: cleanroom_name (string), request_id (string), consumer_account_locator (string)

Ausgabe: analysis results (table)

Beispiel:

call samooha_by_snowflake_local_db.provider.get_analysis_result(
    $cleanroom_name, 
    $request_id, 
    '<CONSUMER_ACCOUNT>'
);
Copy

Freigabe für Verbraucher

Verwenden Sie die folgenden Befehle, um einen Reinraum für Verbraucher freizugeben.

provider.add_consumers

Beschreibung: Fügt dem Reinraum Verbraucherkonten hinzu. Einzelne oder mehrere Speicherorte für Verbraucherkonten-Locators und Kontonamen werden über Zeichenfolgenparameter mit durch Kommas getrennten Werten hinzugefügt. Sie können auch Konten mit mehreren Aufrufen zu provider.add_consumers hinzufügen.

Optional kann ein boolesches Flag übergeben werden, das angibt, ob die differentielle Privatsphäre für diesen Reinraum aktiviert werden soll. Standardmäßig ist die differentielle Privatsphäre bei einem Reinraum nicht aktiviert.

Input: cleanroom_name(string), consumer_account_locators(string), consumer_account_names(string), enable_differential_privacy(boolean, optional, default: FALSE)

Ausgabe: success message (string)

Beispiel 1

call samooha_by_snowflake_local_db.provider.add_consumers($cleanroom_name, 'IMA38718', 'PKBYKUM.SAMOOHA_MANAGED_ACCOUNT_DEMO_642778');
Copy

In Beispiel 1 lautet das Konto locator=IMA38718, accountname=PKBYKUM.SAMOOHA_MANAGED_ACCOUNT_DEMO_642778.

Beispiel 2

call samooha_by_snowflake_local_db.provider.add_consumers($cleanroom_name, 'IMA38718,LEB88915', 'PKBYKUM.SAMOOHA_MANAGED_ACCOUNT_DEMO_642778,PM.CLEANROOMAWSUSWEST21');
Copy

In Beispiel 2 lautet das erste Konto locator=IMA38718, accountname=PKBYKUM.SAMOOHA_MANAGED_ACCOUNT_DEMO_642778. Das zweite Konto lautet locator=LEB88915, accountname=PM.CLEANROOMAWSUSWEST21.

provider.create_cleanroom_listing

Beschreibung: Sobald ein Reinraum konfiguriert wurde, erstellen Sie ein privates Freigabeangebot auf Snowflake Marketplace und geben es für die angegebenen Teilnehmer frei.

Sie identifizieren den Teilnehmer anhand des Formats orgname.account_name seiner Konto-URL. Der Verbraucher kann diese Zeichenfolge finden, indem er die Anleitung unter Suchen von Organisations- und Kontonamen eines Kontos folgt.

Bemerkung

Um diese Prozedur zu verwenden, müssen Sie die Release-Richtlinie gesetzt haben. Weitere Informationen dazu finden Sie unter provider.set_default_release_directive.

Eingabe: cleanroom_name(string), consumer_account_name(string)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.create_cleanroom_listing($cleanroom_name, <consumerorg.consumeracct>);
Copy

provider.enable_laf_for_cleanroom

Beschreibung: Aktiviert die Cloud-übergreifende automatische Ausführung, wodurch Sie den Reinraum für Teilnehmer freigeben können, deren Snowflake-Konto sich in einer anderen Region befindet als Ihr eigenes Konto. Die Cloud-übergreifende automatische Ausführung (Cross-Cloud Auto-Fulfillment) wird auch als automatische Auftragsausführung von Freigabeangeboten (Listing Auto-Fulfillment, LAF) bezeichnet.

Bemerkung

Ein Snowflake-Administrator mit der Rolle ACCOUNTADMIN muss die Cloud-übergreifende automatische Ausführung in Ihrem Snowflake-Konto aktivieren, bevor Sie diesen Befehl ausführen können. Eine Anleitung zum Aktivieren der Cloud-übergreifenden automatischen Ausführung im Snowflake-Konto finden Sie unter [Mit Konten in verschiedenen Regionen zusammenarbeiten] (https://docs.snowflake.com/en/user-guide/cleanrooms/getting-started#collaborate-with-accounts-in-different-regions).

Die Zusammenarbeit mit Verbrauchern in anderen Regionen ist mit zusätzlichen Kosten verbunden. Weitere Informationen zu diesen Kosten finden Sie unter Kosten für Cloud-übergreifende automatische Ausführung.

Nachdem Sie die Cloud-übergreifende automatische Ausführung für den Reinraum aktiviert haben, können Sie mit dem Befehl provider.create_cleanroom_listing wie gewohnt Verbraucher zu Ihrem Freigabeangebot hinzufügen. Das Freigabeangebot wird bei Bedarf automatisch in externe Clouds und Regionen repliziert.

Eingabe: cleanroom_name(string)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.enable_laf_for_cleanroom($cleanroom_name);
Copy

provider.view_cleanrooom_scan_status

Beschreibung: Zeigt den Scan-Status für einen Reinraum an, wenn DISTRIBUTION auf EXTERNAL eingestellt ist. Der Scan muss als „APPROVED“ markiert sein, bevor die Standard-Release-Richtlinie festgelegt und der Reinraum für Teilnehmer freigegeben werden kann.

Eingabe: cleanroom_name(string)

Ausgabe: scan status (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.view_cleanroom_scan_status($cleanroom_name);
Copy

Funktionen zum Laden von Python-Code in den Reinraum

provider.load_python_into_cleanroom

Beschreibung: Lädt vertraulich eine beliebige Python-Funktion in den Reinraum. Jeder Code, der über diese API in den Reinraum geladen wird, ist für den Verbraucher nicht sichtbar. Die resultierende Funktion kann innerhalb jeder SQL Jinja-Vorlage als Reinraum aufgerufen werden.

Bemerkung

Diese Prozedur fügt Ihren Python-Code dem Reinraum als Patch auf die bestehende Version hinzu. Dadurch wird der Sicherheitsscan erneut ausgelöst, und Sie müssen möglicherweise warten, bis der Status APPROVED ist, bevor Sie die neueste Version an Teilnehmer weitergeben. Wenn Sie dies tun, rufen Sie provider.set_default_release_directive auf, bevor Sie den Reinraum für Anbieter mit der neuesten Version/Patch freigeben. Weitere Informationen dazu finden Sie in der Dokumentation zu Snowflake Native Apps.

Eingabe: cleanroom_name(string), function_name(string), arguments(array), packages(array), ret_type(string), handler(string), code(string)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.load_python_into_cleanroom(
    $cleanroom_name, 
    'assign_group',                      // Name of the UDF
    ['data variant', 'index integer'],   // Arguments of the UDF, along with their type
    ['pandas', 'numpy'],                 // Packages UDF will use
    'integer',                           // Return type of UDF
    'main',                              // Handler
    $$
import pandas as pd
import numpy as np

def main(data, index):
    df = pd.DataFrame(data)  # you can do something with df but this is just an example
    return np.random.randint(1, 100)
    $$
);
Copy

Reinraum-UI-Registrierungsmethoden

Verwenden Sie die folgenden Befehle, um einen mit benutzerdefinierten Analysen beladenen Reinraum in der Web-App eines Snowflake Data Clean Room unter der Registerkarte „Custom Analysis“ (Benutzerdefinierte Analysen) zu registrieren.

provider.add_ui_form_customizations

Beschreibung:: Fügt Anpassungen für das UI-Formular für Reinräume hinzu, die Sie in der Web-App für Ihre Verbraucher registrieren möchten. Sie müssen mindestens Werte für display_name, description und methodology angeben.

Folgende Anpassungen sind zulässig:

  • type: Eine der folgenden UI-Elemente:

    • boolean: Wahr/Falsch-Selektor

    • integer: Verwenden Sie Pfeile, um die Zahl zu ändern

    • multiselect: Mehrere Elemente aus einer Dropdown-Liste auswählen

    • dropdown: 1 Element aus einer Dropdown-Liste auswählen

    • date: Datumsselektor

    • any: Reguläres Texteingabefeld

  • choices: Liste der verfügbaren Auswahlmöglichkeiten für Dropdown- und Multiselect-Typen

  • default: Beliebiger Standardwert

  • display_name (erforderlich): Anzeigename der Element-UI

  • description (erforderlich): Beschreibung, die unter dem Namen erscheint

  • methodology (erforderlich): Beschreibung, wie der Verbraucher das Formular verwenden soll, um eine Analyse auszuführen.

  • infoMessage: Informationsmeldung, die angezeigt wird, wenn Sie den Mauszeiger über ein „i“-Symbol neben dem Namen bewegen

  • size: Wählen Sie die Elementgröße zwischen XS, S, M, L, XL

  • erforderlich: Gibt an, ob das Element erforderlich ist. Geben Sie TRUE oder FALSE an.

  • group: Geben Sie für mehrere Elemente denselben Wert ein, um sie im UI-Formular zusammenzufassen

  • render_table_dropdowns: Steuert, ob die Standard-Dropdown-Listen, mit denen Benutzer Tabellen auswählen können, in der Vorlage erscheinen. Wenn Sie nichts angeben, erscheint eine Dropdown-Liste sowohl für Anbieter- als auch für Verbrauchertabellen. Wenn Sie eine Dropdown-Liste mit allen Anbietern oder allen Verbrauchertabellen wünschen, diese aber nicht auflisten möchten, verwenden Sie stattdessen den Parameter references.

    Der Wert von render_table_dropdowns ist ein „dict“, das aus folgenden Schlüsseln besteht:

    • render_consumer_table_dropdown: Wenn FALSE, wird die Standard-Dropdown-Liste für Verbrauchertabellen ausgeblendet. Standardwert ist TRUE.

    • render_provider_table_dropdown: Wenn FALSE, wird die Standard-Dropdown-Liste für Anbieter-Tabellen ausgeblendet. Standardwert ist TRUE.

    Wenn Sie die Standard-Dropdown-Listen ausblenden, können Sie die speziellen Argumente {{ source_table }} und {{ my_table}} in der benutzerdefinierten Vorlage verwenden und dann Ihre eigene Dropdown-Liste definieren, die die gewünschten Tabellen enthält. Weitere Informationen zur Verwendung dieser speziellen Variablen bei der Definition der benutzerdefinierten Vorlage finden Sie unter provider.add_custom_sql_template.

  • Referenzen: Erstellt eine Dropdown-Liste der im Reinraum verfügbaren Tabellen oder Spalten. Ermöglicht Benutzern die Auswahl von Tabellen und Spalten bei der Ausführung einer Analyse in der Webanwendung, ohne dass sie bei der Erstellung der Weboberfläche jede Tabelle oder Spalte einzeln angeben müssen.

    Hat die folgenden möglichen Zeichenfolgen:

    • PROVIDER_TABLES: Die Dropdown-Liste besteht aus allen Tabellen des Anbieters im Reinraum.

    • CONSUMER_TABLES: Die Dropdown-Liste besteht aus allen Tabellen des Verbrauchers im Reinraum.

    • PROVIDER_COLUMN_POLICY: Die Dropdown-Liste besteht aus den Spalten in den Spaltenrichtlinien des Anbieters, z. B. den Spalten, nach denen gefiltert werden kann. Falls spezifiziert, müssen Sie auch den Parameter provider_parent_table_field angeben, um zu identifizieren, welche Anbietertabelle die Spaltenrichtlinien enthält.

    • PROVIDER_JOIN_POLICY: Die Dropdown-Liste besteht aus den Spalten in den Verknüpfungsrichtlinien des Anbieters, d. h. den Spalten in der Tabelle des Anbieters, die der Verbraucher als Verknüpfungsschlüssel verwenden kann. Falls spezifiziert, müssen Sie auch den Parameter provider_parent_table_field angeben, um die Tabelle des Anbieters zu identifizieren, die die Verknüpfungsrichtlinien enthält.

    • CONSUMER_COLUMNS: Die Dropdown-Liste besteht aus den Spalten in den Verknüpfungsrichtlinien des Verbrauchers, d. h. den Spalten in der Tabelle des Verbrauchers, die der Analyst als Verknüpfungsschlüssel verwenden kann. Falls spezifiziert, müssen Sie auch den Parameter consumer_parent_table_field angeben, um zu identifizieren, welche Verbrauchertabelle die Verknüpfungsrichtlinie enthält.

  • provider_parent_table_field: Gibt den Namen eines UI-Feldes an, über das ein Benutzer eine Anbietertabelle auswählen kann. Erforderlich, wenn der Parameter Referenzen PROVIDER_COLUMN_POLICY oder PROVIDER_JOIN_POLICY angibt.

    Wenn zum Beispiel a_provider_table der Name eines UI-Feldes ist, das dem Analysten die Auswahl einer Anbietertabelle ermöglicht, dann könnte das UI-Feld, das dem Benutzer die Auswahl von Spalten aus einer Anbietertabelle ermöglicht, das Name/Wert-Paar 'provider_parent_table_field': 'a_provider_table' enthalten.

  • consumer_parent_table_field: Gibt den Namen eines UI-Feldes an, über das ein Benutzer eine Anbietertabelle auswählen kann. Erforderlich, wenn der Parameter Referenzen CONSUMER_COLUMNS angibt.

    Wenn zum Beispiel a_consumer_table der Name eines Feldes UI ist, das dem Analysten die Auswahl einer Verbrauchertabelle ermöglicht, dann könnte das Feld UI, das dem Benutzer die Auswahl von Spalten aus einer Verbrauchertabelle ermöglicht, das Name/Wert-Paar 'consumer_parent_table_field': 'a_consumer_table' enthalten.

  • warehouse_hints: Optionale Anpassung, die steuert, welche Art von Warehouse das Verbraucherkonto für die Ausführung von Analysen verwendet. Für die meisten Anwendungsfälle des maschinellen Lernens empfiehlt Snowflake zum Beispiel die Angabe eines [Snowpark-optimierten Warehouses] (https://docs.snowflake.com/en/user-guide/warehouses-snowpark-optimized). Gültige Werte für warehouse_size finden Sie unter CREATE WAREHOUSE.

Visuelle Anpassungen sind:

  • measure_columns: Quantitative Datenpunkte, die in der Ausgabe angezeigt werden. Diese Spalten enthalten Kennzahlen und Dimensionen, die eine detaillierte Datenanalyse ermöglichen.

  • default_output_type: Das Format, in dem die Daten visualisiert werden sollen. Unterstützte Typen:

    • TABLE: Zeigt die Daten in einem tabellarischen Format an. Dies ist der Standardtyp für die Ausgabe.

    • BAR: Visualisiert Daten mit Balkendiagrammen, die sich ideal für den Vergleich verschiedener Kategorien eignen.

    • LINE: Verwendet Zeilendiagramme, um Trends im Zeitverlauf oder kontinuierliche Daten darzustellen.

    • PIE: Stellt Daten als Kreisdiagramm dar, das sich für die Darstellung von Anteilen oder Prozentsätzen eignet.

Eingabe: template name (string), template_description (dict), customizations (dict), output_config (dict)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.add_ui_form_customizations(
    $cleanroom_name,
    'prod_custom_template',
    {
        'display_name': 'Custom Analysis Template',
        'description': 'Use custom template to run a customized analysis.',
        'methodology': 'This custom template dynamically renders a form for you to fill out, which are then used to generate a customized analysis fitting your request.',
        'warehouse_hints': {
            'warehouse_size': 'xsmall',
            'snowpark_optimized': FALSE
        },
        'render_table_dropdowns': {
            'render_consumer_table_dropdown': false,
            'render_provider_table_dropdown': false
        }
    },    
    {
        'a_provider_table': {
            'display_name': 'Provider table',
            'order': 3,
            'description': 'Provider table selection',
            'size': 'S',
            'group': 'Seed Audience Selection',
            'references': ['PROVIDER_TABLES'],
            'type': 'dropdown'
        },
        'a_provider_col': {
            'display_name': 'Provider column',
            'order': 4,
            'description': 'Which col do you want to count on',
            'size': 'S',
            'group': 'Seed Audience Selection',
            'references': ['PROVIDER_COLUMN_POLICY'],
            'provider_parent_table_field': 'a_provider_table',
            'type': 'dropdown'
        }
    },
    {
        'measure_columns': ['col1', 'col2'],
        'default_output_type': 'PIE'
    }
);
Copy

provider.register_cleanroom_in_ui

Beschreibung: Registriert einen Reinraum zur Verwendung in der Web-App durch den Verbraucher. Der Reinraum wird vom Anbieter mit den Entwickler-APIs erstellt und konfiguriert. Diese Methode registriert ihn dann in der Web-App, sodass Verbraucher ihn installieren, ihre Tabelle hinzufügen und alle von Ihnen hinzugefügten benutzerdefinierten Analysen ausführen können, ohne dass die Entwickler-APIs verwendet werden müssen. Sie arbeiten mit dem Reinraum vollständig über die Weboberfläche der Web-App.

Sie können diese API mehrmals aufrufen, um mehrere benutzerdefinierte Vorlagen in die Web-App einzubinden.

Eingabe: cleanroom_name(string), template name(string), consumer_account_locator(string), user_email(string)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.register_cleanroom_in_ui($cleanroom_name, 'prod_custom_template', <CONSUMER ACCOUNT LOCATOR>, <USER_EMAIL>)
Copy

provider.view_ui_registration_request_log

Beschreibung: Zeigt die Liste der vom Konto ausgelösten Anfragen zur Registrierung von Reinräumen in der Web-App an. Jeder Anfrage ist eine ID zugeordnet, die in Verbindung mit der Prozedur view_ui_registration_log verwendet werden kann, um den Status der Anfragen anzuzeigen. Die Anfragen werden an das Backend weitergeleitet, wo sie verarbeitet werden und der Reinraum dem Reinraum hinzugefügt wird.

Eingabe:

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.view_ui_registration_request_log();
Copy

Getter-Methoden für Reinraum-Metadaten

Verwenden Sie die folgenden Befehle, um die relevanten Eigenschaften des Reinraums anzuzeigen.

provider.describe_cleanroom

Beschreibung: Erstellt eine Textzusammenfassung mit allen Informationen darüber, was dem Reinraum hinzugefügt wurde, einschließlich Vorlagen, Datensets und Richtlinien.

Eingabe: cleanroom_name(string)

Ausgabe: Extensive description string of cleanroom (table)

Beispiel:

call samooha_by_snowflake_local_db.provider.describe_cleanroom($cleanroom_name);
Copy

provider.view_provider_datasets

Beschreibung: Zeigt alle Datensets an, die dem Reinraum hinzugefügt wurden.

Eingabe: cleanroom_name(string)

Ausgabe: All the provider dataset names in cleanroom (table)

Beispiel:

call samooha_by_snowflake_local_db.provider.view_provider_datasets($cleanroom_name);
Copy

provider.view_join_policy

Beschreibung: Zeigt die derzeit im Reinraum aktiven Verknüpfungsrichtlinien an.

Eingabe: cleanroom_name (string)

Ausgabe: The join policy (table)

Beispiel:

call samooha_by_snowflake_local_db.provider.view_join_policy($cleanroom_name);
Copy

provider.view_added_templates

Beschreibung: Zeigt die derzeit im Reinraum aktiven Vorlagen an.

Eingabe: cleanroom_name (string)

Ausgabe: The added templates (table)

Beispiel:

call samooha_by_snowflake_local_db.provider.view_added_templates($cleanroom_name);
Copy

provider.view_column_policy

Beschreibung: Zeigt die derzeit im Reinraum aktiven Spaltenrichtlinien an.

Eingabe: cleanroom_name (string)

Ausgabe: The column policy (table)

Beispiel:

call samooha_by_snowflake_local_db.provider.view_column_policy($cleanroom_name);
Copy

provider.view_consumers

Beschreibung: Zeigt die Verbraucher an, für die der Reinraum freigegeben wurde.

Eingabe: cleanroom_name (string)

Output: Verbraucherkonten, die Zugang zum Reinraum haben (tabel)

Beispiel:

call samooha_by_snowflake_local_db.provider.view_consumers($cleanroom_name);
Copy

provider.view_cleanrooms

Beschreibung: Zeigt alle kürzlich erstellten Reinräume an, sortiert nach dem Datum, an dem sie erstellt wurden.

Eingabe:

Ausgabe: All existing cleanrooms ordered by create date (table)

Beispiel:

call samooha_by_snowflake_local_db.provider.view_cleanrooms();
Copy

provider.view_request_logs

Beschreibung: Zeigt die Anforderungsprotokolle an, die von Verbrauchern dieses Reinraums gesendet wurden.

Eingabe: cleanroom_name (string)

Ausgabe: Satz von Protokollen zu Abfragen, die auf dem Reinraum ausgeführt wurden (table)

Beispiel:

call samooha_by_snowflake_local_db.provider.view_request_logs($cleanroom_name);
Copy

Allgemeine Hilfsmethoden

Verwenden Sie die folgenden Methoden, um die Reinraumfunktionalität und die unterstützten Workflows besser zu nutzen.

provider.grant_reference_usage

Beschreibung: Ermöglicht es, vorgelagerten Datenbanken, die Daten enthalten, eine „reference_usage“-Berechtigung für den Reinraum zu erteilen.

Bemerkung

Dieser Befehl ist nur für die Verwendung mit der Web-App vorgesehen.

Dies ist eine wesentlich eingeschränktere Berechtigungszuweisung als die in register_db. Diese Prozedur ist notwendig, wenn Sie Ansichten oder UDTFs hinzufügen, die auf Daten aus vorgelagerten Datenbanken verweisen. Allerdings kann die Rolle SAMOOHA_APP_ROLE dann nicht die eigentlichen Tabellen anzeigen oder diese Datenbanken in der Dropdown-Liste der Web-App anzeigen.

Dieser Befehl sollte auf Datenbanken aufgerufen werden, die Daten enthalten, die in verknüpften Ansichten und UDTFs verwendet werden.

Eingabe: database_names (array)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.grant_reference_usage(['<DATABASE_NAME>']);
Copy

provider.revoke_reference_usage

Beschreibung: Entfernt Datenbanken aus der Liste der referenzierten Datenbanken, die von provider.grant_reference_usage erstellt wurde.

Bemerkung

Dieser Befehl ist nur für die Verwendung mit der Web-App vorgesehen.

Eingabe: database_names (array)

Ausgabe: success message (string)

Beispiel:

call samooha_by_snowflake_local_db.provider.revoke_reference_usage(['<DATABASE_NAME>']);
Copy

provider.mount_request_logs_for_all_consumers

Beschreibung: Ermöglicht Anbietern den Zugriff auf Informationen, die von den Verbrauchern eines Reinraums an den Anbieter zurückkommen.

Eingabe: cleanroom_name (string)

Ausgabe: success message (string)

Beispiel:

CALL samooha_by_snowflake_local_db.provider.mount_request_logs_for_all_consumers($cleanroom_name);
Copy

library.enable_local_db_auto_upgrades

Beschreibung: Aktiviert die Aufgabe samooha_by_snowflake_local_db.admin.expected_version_task, die automatisch ein Upgrade der Snowflake Native App für Snowflake Data Clean Rooms durchführt, sobald neue Versionen veröffentlicht werden.

Eingabe: Keine

Ausgabe: success message (string)

Beispiel:

CALL samooha_by_snowflake_local_db.library.enable_local_db_auto_upgrades();
Copy

library.disable_local_db_auto_upgrades

Beschreibung: Deaktiviert die Aufgabe samooha_by_snowflake_local_db.admin.expected_version_task, die automatisch ein Upgrade der Snowflake Native App für Snowflake Data Clean Rooms durchführt, wenn neue Versionen veröffentlicht werden.

Eingabe: Keine

Ausgabe: success message (string)

Beispiel:

CALL samooha_by_snowflake_local_db.library.disable_local_db_auto_upgrades();
Copy