プロバイダーデータ分析¶
デフォルトのclean room構成では、コンシューマーのみがclean room内で分析を実行できます。ただし、プロバイダーは、特定のclean roomでコンシューマーデータを使用してテンプレートを実行する許可をコンシューマーにリクエストできます。プロバイダーが実行する分析は、clean room UI またはコードのいずれかを使用して有効にし、実行することができます。
サポートされるテンプレート¶
プロバイダーが実行する分析は、特定のclean room内で、テンプレートレベルで有効になります。以下のテンプレートは、プロバイダーが実行する分析をサポートします:
Overlap & Segmentation Analysis
SQL クエリ (UI のみ)
カスタムテンプレート (API のみ)
請求について¶
clean roomでの、プロバイダーが実行する分析の費用は、コンシューマーに請求されます。プロバイダーの分析による追加コストを避けるためには、コンシューマーがclean roomをアンインストールする必要があります。
コンシューマーは以下のクエリを実行することで、過去 N 日間(不の数で指定します)にプロバイダーによって消費されたクレジット数を見積もることができます。
-- Estimate the number of credits consumed in the past 5 days.
SELECT * FROM TABLE(SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.LIBRARY.PRA_CONSUMPTION_UDTF(-5));
ウェアハウスのサイズの選択¶
Clean roomはデータセットのサイズをベースとした自動スケーリングロジックを使用し、分析用のウェアハウスを選択します。ただし、プロバイダーはウェアハウスのサイズを、コンシューマーによって許可されたサイズとタイプのリストから明示的に選択できます。プロバイダーはウェアハウスのサイズを以下の方法で選択します:
コンシューマーが
consumer.enable_templates_for_provider_run
を呼び出し、ウェアハウスのどのサイズとタイプを、どのテンプレートに対して許可するかを指定します。プロバイダーが
provider.view_warehouse_sizes_for_template
を呼び出し、ウェアハウスのどのサイズとタイプが、プロバイダーが実行する分析で許可されているかを確認します。プロバイダーが、分析リクエスト (
provider.submit_analysis_request
) で使用するサイズとタイプの組み合わせを指定します。
プロバイダーがリクエストできるのは、コンシューマーが明示的にリストアップしたウェアハウスのサイズとタイプのみです。
コンシューマー
CALL samooha_by_snowflake_local_db.CONSUMER.enable_templates_for_provider_run(
$cleanroom_name,
[$template1, $template2],
TRUE,
{
$template1: {'warehouse_type': 'STANDARD', 'warehouse_size': ['MEDIUM', 'LARGE']},
$template1: {'warehouse_type': 'SNOWPARK-OPTIMIZED', 'warehouse_size': ['MEDIUM', 'XLARGE']},
$template2: {'warehouse_type': 'STANDARD', 'warehouse_size': ['MEDIUM', 'XLARGE']}
});
プロバイダー
CALL samooha_by_snowflake_local_db.PROVIDER.VIEW_WAREHOUSE_SIZES_FOR_TEMPLATE($cleanroom_name, $template_name, $consumer_account_loc);
CALL samooha_by_snowflake_local_db.provider.submit_analysis_request(
$cleanroom_name,
$consumer_locator_id,
$template1,
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
object_construct(
'dimensions', ['c.REGION_CODE'],
'measure_type', ['AVG'],
'measure_column', ['c.DAYS_ACTIVE'],
'warehouse_type', 'STANDARD', -- If this type and size pair were not listed by view_warehouse_sizes_for_template,
'warehouse_size', 'LARGE' -- the request will automatically fail.
));
プロバイダーが実行する分析の実装¶
Tip
コンシューマーとプロバイダーが異なるクラウドリージョンにある場合、両方のアカウントと両方のclean roomで Cross-Cloud Auto-Fulfillment を有効にする必要があります。
clean roomでのクエリ実行の許可は、clean room UI で、clean roomの構成フローにある Share clean room パネルの Enable run analysis & query トグルを使用して管理します。clean roomのプロバイダーは、そのパネルで自分のアカウントの隣にあるトグルを使用して、プロバイダーが実行する分析を有効または無効にします。clean roomが作成された後に、このトグルを変更することはできません。公開されたclean roomでクエリを実行するために、特定のアカウントの権限を変更したい場合は、clean roomを削除し、新しく作成する必要があります。
プロバイダーが実行する分析を、新しいclean roomで有効にする手順を以下で説明します:
プロバイダーが サポートされているテンプレート をいずれか使用し、clean roomを作成および構成します。
プロバイダー分析をサポートするテンプレートを、このclean roomで実行するために、clean room構成の Share Clean Room ステップで、アカウントの隣にある Enable run analysis & query をオンに切り替えます。
コンシューマーがclean roomに参加する際、そのclean roomでプロバイダーが実行する分析が有効であることが、参加前に警告されます。
コンシューマーは、clean room内のすべてのテンプレート(プロバイダー分析をサポートするテンプレートを含む)に対し、通常の方法でclean roomを構成します。特定のテンプレートの実行を、コンシューマーがプロバイダーに許可したくない場合は、そのテンプレートに必要な詳細を省略することができます。プロバイダー分析をサポートするテンプレートは、コンシューマー分析もサポートします。
コンシューマーがclean roomに参加し、構成した後に、 プロバイダー と コンシューマー の両方が、通常の分析フローにより、テンプレートをclean roomで実行できます。
プロバイダーが実行する分析の権限は、付与した後で取り消すことはできません。プロバイダーが実行する分析を停止させるには、プロバイダーまたはコンシューマーがclean roomを削除する以外に方法がありません。
プロバイダーは、 API 呼び出しを正しく実行することで、clean room内でプロバイダーとコンシューマーが実行する分析を有効または無効にできます。ただし、プロバイダーが実行する分析の設定を既存のclean roomで変更するたびに、すべてのコンシューマーがclean roomを再インストールし、その変更を適用することが必要になります。clean roomの再インストールをすべてのコラボレーターに強制することは簡単ではないため、プロバイダーが分析の権限を変更する際に、公開および共有されているclean roomを削除し、変更後の権限で新しいclean roomを作成する方が確実に適用できます。
プロバイダーが実行する分析を許可するために、新しいclean roomを作成する際の一般的なフローを以下で説明します:
プロバイダー
clean room、データ、ポリシーを通常の方法で作成し、構成します。
コンシューマーを通常の方法で追加します。
provider.enable_provider_run_analysis
を呼び出し、clean room内の特定のコンシューマーアカウントに対して、プロバイダーが実行する分析を有効にします。このプロシージャは、clean roomにコンシューマーを追加した後、コンシューマーがclean roomをインストールする前に呼び出す必要があります。このリクエストをコンシューマーアカウントごとに承認する必要があります。承認しない場合は、clean room内でプロバイダーが実行する分析からデータにアクセスできなくなります。clean roomを公開します。
clean roomが使用可能であること、clean roomの名前、clean roomで実行したいテンプレートをコンシューマーに知らせましょう。
コンシューマー
clean roomをインストールし、データをリンクして、結合ポリシーと列ポリシーを標準的な方法でセットします。
consumer.enable_templates_for_provider_run
を呼び出して、clean room内の特定のテンプレートのプロバイダー分析を許可します。このプロシージャは、結合ポリシーと列ポリシーを構成した 後に 呼び出すことが重要です。この機能を先に有効にすると、これらのポリシーをセットするまで、プロバイダーによる すべて の列の結合と投影が許可されてしまいます。clean roomでのプロバイダーが実行する分析の承認が必要であることは、プロバイダーから通知されるのが普通ですが、これがリクエストされたかどうかを確認するために、library.is_provider_run_enabled
を呼び出すこともできます。clean roomをインストールし、プロバイダーが実行する分析を承認したことを、プロバイダーに伝えます。
プロバイダー
コンシューマーがclean roomを設置した後に、
provider.mount_request_logs_for_all_consumers
を呼び出して、分析に必要なコンシューマーデータへのアクセスを可能にします。新しいコンシューマーアカウントでclean roomを後からインストールし、そのデータをテンプレートで使用したい場合は、このプロシージャを再実行して、データへのアクセスを可能にする必要があります。テンプレート名、テーブル名、テンプレート引数を指定して
provider.submit_analysis_request
を呼び出し、分析を実行します。応答 ID を保存します。これは分析のステータスと結果を確認するために必要です。provider.check_analysis_status
を呼び出して、分析のステータスを確認します。ステータスがCOMPLETED
と報告された場合は、provider.get_analysis_result
を呼び出して、分析結果を取得します。
Tip
clean roomに対し、プロバイダーが実行する分析の設定を変更した場合は、clean roomをアンインストールしてから再インストールすることが、変更を適用するために必要です。
サンプルコードをインストールして実行する
プロバイダーが実行する分析を有効にし、実行するclean roomの完全なサンプルを、ダウンロードしてインストールできます。これを実行するには、同じ組織内で2つのSnowflakeアカウント、およびclean room環境がインストールされたクラウドホスティングリージョンが必要です。
プロバイダーアカウントとコンシューマーアカウントの両方にノートブックをインストールします。ノートブックをアップロードするには、以下の操作を行います:
Snowsight で Projects » Notebooks に移動します。
+ Notebook » Import .ipynb file を選択します。
ダウンロードした.ipynbファイルを選択します。
ファイルに好きな名前を付けて、データベースとスキーマを選択します。
デフォルトのウェアハウス
APP_WH
をそのまま使用します。Create を選択します。
プロバイダーアカウントでノートブックを開き、プロバイダーの部分を入力してclean roomを作成します。
コンシューマーアカウントでノートブックを開き、コンシューマーの部分を入力してclean roomをインストールおよび構成し、テンプレートを実行します。
Tip
以下のプロシージャは、clean room内でどちらの側から分析を実行するかを管理します:
コンシューマーが実行する分析 (デフォルトでは許可): 変更は即座に適用されます。
provider.enable_consumer_run_analysis
provider.disable_consumer_run_analysis
プロバイダーが実行する分析 (デフォルトでは無効): 変更の際にコンシューマーによる再インストールが必要です。
provider.enable_provider_run_analysis
(consumer.enable_templates_for_provider_runを呼び出して、コンシューマーから承認する必要があります)provider.disable_provider_run_analysis