Snowflake Data Clean Rooms: Externe und Iceberg-Tabellen

Wenn externe Tabellen und Iceberg-Tabellen in einem Reinraum verbunden sind, gibt es externe Aufrufe, die es einem Teilnehmer ermöglichen könnten, sensible Informationen aus dem Reinraum zu extrahieren. Aus diesem Grund müssen sowohl der Anbieter als auch der Verbraucher zustimmen, bevor die andere Partei diese Objekte im Reinraum verwenden kann.

Für Beschränkungen bei der Einbeziehung von externen Tabellen und Iceberg-Tabellen in einen Reinraum, siehe Einschränkungen.

Web-App-Reinräume

Um die Einbeziehung von externen Tabellen und Iceberg-Tabellen in Reinräumen zu kontrollieren, die in der Web-App erstellt und installiert wurden, konfigurieren Administratoren von Anbietern und Verbrauchern ihre Reinraumumgebung so, dass diese Objekte explizit zugelassen werden.

  • Bei Reinräumen, die von einem Anbieter mit einem Verbraucher geteilt werden, kann der Verbraucher keine externen Tabellen und Iceberg-Tabellen einbeziehen, es sei denn, der Anbieter erlaubt diese ausdrücklich für die Reinraumumgebung des Anbieters.

  • Für Verbraucher können Reinraum mit externen Tabellen oder Iceberg-Tabellen einrichten, es sei denn, die Reinraumumgebung erlaubt dies. Selbst wenn die Reinraumumgebung des Verbrauchers diese Objekte zulässt, werden Benutzer von Reinräumen gewarnt, wenn diese Arten von Tabellen verknüpft wurden, sodass sie entscheiden können, den Reinraum nicht zu installieren.

So konfigurieren Sie eine Reinraumumgebung, um externe Tabellen und Iceberg-Tabellen zuzulassen:

  1. Melden Sie sich bei der Web-App an.

  2. Führen Sie eine der folgenden Aktionen aus:

    • Wenn Sie ein verwaltetes Konto verwenden, wählen Sie Admin » My Account aus.

    • Wenn Sie ein Snowflake-Konto verwenden, wählen Sie Admin » Snowflake Admin und melden Sie sich in Snowflake als Benutzer mit der Rolle ACCOUNTADMIN an.

  3. Aktivieren Sie den Umschalter External & Iceberg Tables.

Entwickler-API-Reinräume

Das Zulassen von externen Tabellen und Iceberg-Tabellen in einem Reinraum, der mit dem Entwickler-APIs erstellt und installiert wurde, ist ein zweistufiger Prozess:

  • Zunächst erlaubt ein Benutzer mit der Rolle ACCOUNTADMIN diese Arten von Tabellen für die gesamte Reinraumumgebung.

  • Dann erlauben Reinraumbenutzer diese Objekte für bestimmte Reinräume, wenn diese erstellt oder installiert werden.

Externe Tabellen und Iceberg-Tabellen in der Umgebung von Reinräumen zulassen

Der Kontoadministrator sowohl des Anbieters als auch des Verbrauchers muss externe Tabellen und Iceberg-Tabellen in der Umgebung des Reinraums ausdrücklich erlauben, bevor einzelne Benutzer sie in einem Reinraum erlauben können.

Um externe Tabellen und Iceberg-Tabellen in einer Reinraumumgebung zuzulassen, führt der Kontoadministrator Folgendes aus:

USE ROLE ACCOUNTADMIN;

CALL samooha_by_snowflake_local_db.library.enable_external_tables_on_account();
Copy

Externe Tabellen und Iceberg-Tabellen in einem bestimmten Reinraum zulassen

Der Anbieter, der einen Reinraum erstellt, und der Verbraucher, der ihn installiert, müssen externe Tabellen und Iceberg-Tabellen im Reinraum zulassen.

Anbieter:

Bevor sie eine externe Tabelle oder eine Iceberg-Tabelle mit einem Reinraum verknüpfen können, muss der Anbieter den Befehl providers.enable_external_tables_for_cleanroom aufrufen. Wenn der Anbieter z. B. eine Iceberg-Tabelle zum Reinraum insights_cleanroom hinzufügen möchte, muss er Folgendes ausführen:

CALL samooha_by_snowflake_local_db.provider.enable_external_tables_for_cleanroom(
    'insights_cleanroom');
Copy
Verbraucher:

Nachdem ein Verbraucher einen Reinraum installiert hat, kann er die Einbeziehung von externen Tabellen oder Iceberg-Tabellen durch den Anbieter durch Ausführen des Befehls consumers.enable_external_tables_for_cleanroom genehmigen. Wenn der Verbraucher z. B. einen Reinraum overlap_cleanroom installiert hat, der eine Iceberg-Tabelle enthält, muss er diesen ausführen:

CALL samooha_by_snowflake_local_db.consumer.enable_external_tables_for_cleanroom(
    'overlap_cleanroom');
Copy

Eine externe Tabelle oder eine Iceberg-Tabelle registrieren

Wie bei anderen Objekten müssen auch externe Tabellen und Iceberg-Tabellen registriert werden, bevor sie verknüpft werden können. Verwenden Sie den entsprechenden Parameter des Befehls library.register_table_or_view, um den Tabellentyp anzugeben.

Externe Tabelle

Der vierte Parameter des Befehls library.register_table_or_view gibt an, ob ein Objekt eine externe Tabelle ist. Um zum Beispiel eine externe Tabelle my_ext_table im Schema samooha_sample_database.demo zu registrieren, führen Sie Folgendes aus:

CALL samooha_by_snowflake_local_db.library.register_table_or_view(
    ['SAMOOHA_SAMPLE_DATABASE.DEMO.MY_EXT_TABLE'],
    false,
    false,
    true,
    false);
Copy
Iceberg-Tabelle

Der dritte Parameter des Befehls library.register_table_or_view gibt an, ob ein Objekt eine Iceberg-Tabelle ist. Um zum Beispiel die Iceberg-Tabelle customers im Schema samooha_sample_database.demo zu registrieren, führen Sie Folgendes aus:

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

Einschränkungen

  • Da verwaltete Konten immer externe Tabellen verwenden, müssen Anbieter externe Tabellen und Iceberg-Tabellen aktivieren, wenn sie einen Reinraum mit einem verwalteten Konto teilen.

  • Teilnehmer in verschiedenen Regionen können keine externen Tabellen und Iceberg-Tabellen in Reinräumen verknüpfen.

  • Sie können keine Analyse mit der SQL-Abfragevorlage durchführen, wenn deren Konfiguration eine Aggregationsrichtlinie oder Projektionsrichtlinie auf die externe Tabelle oder die Iceberg-Tabelle anwendet.