Snowflake Data Clean Rooms: 外部テーブルとIcebergテーブル¶
クリーンルーム内で外部テーブルとIcebergテーブルがリンクされている場合、外部からの呼び出しにより、コラボレーターがクリーンルームから機密情報を引き出す可能性があります。このため、クリーンルーム内でこれらの物品を使用する際には、プロバイダーとコンシューマーの双方の同意が必要となります。
クリーンルームに外部テーブルとIcebergテーブルを含める場合の制限については、 制限事項 をご参照ください。
ウェブアプリのクリーンルーム¶
ウェブアプリで作成されインストールされたクリーンルームに外部テーブルとIcebergテーブルを含めることを制御するために、プロバイダーとコンシューマーの管理者は、これらのオブジェクトを明示的に許可するようにクリーンルーム環境を設定します。
プロバイダーがコンシューマーと共有するクリーンルームについては、プロバイダーがプロバイダーのクリーンルーム環境に対して明示的に許可しない限り、コンシューマーは外部テーブルおよびIcebergバーグテーブルを含めることはできません。
コンシューマーにとっては、クリーンルームユーザーは、クリーンルーム環境が許可しない限り、外部テーブルやIcebergテーブルを備えたクリーンルームをインストールすることはできません。たとえコンシューマーのクリーンルーム環境がこれらの物体を許可していたとしても、クリーンルームの利用者は、クリーンルームをインストールしないことを決定できるように、これらのタイプのテーブルがリンクされたときに警告されます。
外部テーブルとIcebergテーブルを使用できるようにクリーンルーム環境を設定するには:
次のいずれかを実行します。
マネージドアカウントを使用している場合は、 Admin » My Account を選択してください。
Snowflakeアカウントを使用している場合は、 Admin » Snowflake Admin を選択し、 ACCOUNTADMIN ロールを持つユーザーとしてSnowflakeにログインします。
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();
特定のクリーンルームで外部テーブルと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');
- コンシューマー:
コンシューマーはクリーンルームをインストールした後、
consumers.enable_external_tables_for_cleanroom
コマンドを実行することで、プロバイダーが外部テーブルやIcebergテーブルを含めることを承認できます。例えば、コンシューマーがIcebergテーブルを含むクリーンルーム(overlap_cleanroom
)をインストールした場合、以下を実行しなければなりません。CALL samooha_by_snowflake_local_db.consumer.enable_external_tables_for_cleanroom( 'overlap_cleanroom');
外部テーブルまたは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);
- Icebergテーブル
library.register_table_or_view
コマンドの3番目のパラメーターは、オブジェクトがIcebergテーブルであるかどうかを指定します。例えば、Icebergテーブルcustomers
をsamooha_sample_database.demo
スキーマに登録するには、次のように実行します。CALL samooha_by_snowflake_local_db.library.register_table_or_view( ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'], false, true, false, false);
制限事項¶
管理アカウントは常に外部テーブルを使用するため、プロバイダーは管理アカウントとクリーンルームを共有する場合、外部テーブルとIcebergテーブルを有効にする必要があります。
異なるリージョンのコラボレーターは、クリーンルーム内の外部テーブルとIcebergテーブルをリンクすることはできません。
SQL クエリテンプレートの構成で、外部テーブルまたはIcebergテーブルに集計ポリシーまたは投影ポリシーが適用されている場合は、分析を実行できません。