Snowflake Data Clean Rooms: 外部テーブルとIcebergテーブル

クリーンルーム内で外部テーブルとIcebergテーブルがリンクされている場合、外部からの呼び出しにより、コラボレーターがクリーンルームから機密情報を引き出す可能性があります。このため、クリーンルーム内でこれらの物品を使用する際には、プロバイダーとコンシューマーの双方の同意が必要となります。

クリーンルームに外部テーブルとIcebergテーブルを含める場合の制限については、 制限事項 をご参照ください。

ウェブアプリのクリーンルーム

ウェブアプリで作成されインストールされたクリーンルームに外部テーブルとIcebergテーブルを含めることを制御するために、プロバイダーとコンシューマーの管理者は、これらのオブジェクトを明示的に許可するようにクリーンルーム環境を設定します。

  • プロバイダーがコンシューマーと共有するクリーンルームについては、プロバイダーがプロバイダーのクリーンルーム環境に対して明示的に許可しない限り、コンシューマーは外部テーブルおよびIcebergバーグテーブルを含めることはできません。

  • コンシューマーにとっては、クリーンルームユーザーは、クリーンルーム環境が許可しない限り、外部テーブルやIcebergテーブルを備えたクリーンルームをインストールすることはできません。たとえコンシューマーのクリーンルーム環境がこれらの物体を許可していたとしても、クリーンルームの利用者は、クリーンルームをインストールしないことを決定できるように、これらのタイプのテーブルがリンクされたときに警告されます。

外部テーブルとIcebergテーブルを使用できるようにクリーンルーム環境を設定するには:

  1. ウェブアプリにサインインします

  2. 次のいずれかを実行します。

    • マネージドアカウントを使用している場合は、 Admin » My Account を選択してください。

    • Snowflakeアカウントを使用している場合は、 Admin » Snowflake Admin を選択し、 ACCOUNTADMIN ロールを持つユーザーとしてSnowflakeにログインします。

  3. External & Iceberg Tables を切り替えます。

開発者 API クリーンルーム

開発者 APIs を使用して作成およびインストールされたクリーンルームで、外部テーブルとIcebergテーブルを許可するには、2つのステップがあります。

  • まず、 ACCOUNTADMIN ロールを持つユーザーは、クリーンルーム環境全体に対してこれらのタイプのテーブルを許可します。

  • その後、クリーンルームのユーザーは、特定のクリーンルームを作成またはインストールする際に、これらのオブジェクトを許可します。

クリーンルーム内での外部テーブルとIcebergテーブルの使用を許可します。

個々のユーザーがクリーンルーム内で外部テーブルとIcebergテーブルを許可する前に、プロバイダーとコンシューマーの両方のアカウント管理者が、クリーンルーム環境で外部テーブルとIcebergテーブルを明示的に許可する必要があります。

クリーンルーム環境で外部テーブルとIcebergテーブルを許可するには、アカウント管理者が以下を実行します。

USE ROLE ACCOUNTADMIN;

CALL samooha_by_snowflake_local_db.library.enable_external_tables_on_account();
Copy

特定のクリーンルームで外部テーブルとIcebergテーブルを許可する

クリーンルームを作成するプロバイダーとインストールするコンシューマーは、クリーンルーム内に外部テーブルとIcebergテーブルをインストールすることを許可しなければなりません。

プロバイダー:

クリーンルームの外部テーブルやIcebergテーブルをリンクする前に、プロバイダーは providers.enable_external_tables_for_cleanroom コマンドを呼び出す必要があります。例えば、プロバイダーがIcebergのテーブルを insights_cleanroom クリーンルームに追加したい場合、以下を実行しなければなりません。

CALL samooha_by_snowflake_local_db.provider.enable_external_tables_for_cleanroom(
    'insights_cleanroom');
Copy
コンシューマー:

コンシューマーはクリーンルームをインストールした後、 consumers.enable_external_tables_for_cleanroom コマンドを実行することで、プロバイダーが外部テーブルやIcebergテーブルを含めることを承認できます。例えば、コンシューマーがIcebergテーブルを含むクリーンルーム(overlap_cleanroom)をインストールした場合、以下を実行しなければなりません。

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

外部テーブルまたはIcebergテーブルの登録

他のオブジェクトと同様に、外部テーブルとIcebergテーブルはリンクする前に登録する必要があります。テーブルタイプを示すには、 library.register_table_or_view コマンドの適切なパラメーターを使用します。

外部テーブル

library.register_table_or_view コマンドの4番目のパラメーターは、オブジェクトが外部テーブルかどうかを指定します。例えば、 samooha_sample_database.demo スキーマに外部テーブル my_ext_table を登録するには、次のように実行します。

CALL samooha_by_snowflake_local_db.library.register_table_or_view(
    ['SAMOOHA_SAMPLE_DATABASE.DEMO.MY_EXT_TABLE'],
    false,
    false,
    true,
    false);
Copy
Icebergテーブル

library.register_table_or_view コマンドの3番目のパラメーターは、オブジェクトがIcebergテーブルであるかどうかを指定します。例えば、Icebergテーブル customerssamooha_sample_database.demo スキーマに登録するには、次のように実行します。

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

制限事項

  • 管理アカウントは常に外部テーブルを使用するため、プロバイダーは管理アカウントとクリーンルームを共有する場合、外部テーブルとIcebergテーブルを有効にする必要があります。

  • 異なるリージョンのコラボレーターは、クリーンルーム内の外部テーブルとIcebergテーブルをリンクすることはできません。

  • SQL クエリテンプレートの構成で、外部テーブルまたはIcebergテーブルに集計ポリシーまたは投影ポリシーが適用されている場合は、分析を実行できません。