プロバイダーデータ分析¶
デフォルトのclean room構成では、コンシューマーのみがclean room内で分析を実行できます。ただし、プロバイダーは、特定のclean roomでコンシューマーデータを使用してテンプレートを実行する許可をコンシューマーにリクエストできます。プロバイダーが実行する分析は、clean room UI またはコードのいずれかを使用して有効にし、実行することができます。
注釈
プロバイダーがクリーンルームで分析を実行するには、各クエリで結果を返す標準テンプレートとして、およびプロバイダーのアカウントのファイルに結果を保存するアクティベーションとしての2つの方法があります。自分自身のために、またはサードパーティにエクスポートするためにデータを永続化する必要がある場合、または大規模なデータセットに対して結果を調整する必要がある場合、一般的には自分のアカウントに対して 結果をアクティブ化する のが最適です。新しいパラメーターやデータを使用してテンプレートを再実行し、結果を永続化する必要がない場合は、ここで説明する標準のプロバイダー実行クエリを使用するのが適切です。
サポートされるテンプレート¶
プロバイダーが実行する分析は、特定のclean room内で、テンプレートレベルで有効になります。以下のテンプレートは、プロバイダーが実行する分析をサポートします:
Overlap & Segmentation Analysis
SQL クエリ (UI のみ)
カスタムテンプレート (API のみ)
請求について¶
プロバイダーが実行する分析はコンシューマーのアカウントで実行され、コンシューマーはプロバイダーが実行した分析に対して課金されます。プロバイダー分析からの追加コストの発生を防ぐには、コンシューマーはクリーンルームをアンインストールする必要があります。
コンシューマーは以下のクエリを実行することで、過去 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));
ウェアハウスのサイズおよびタイプの選択および制限¶
クリーンルームでは、データセットのサイズに基づいて自動スケーリングロジックを使用し、分析用のウェアハウスを選択します。ただし、プロバイダーは、APIを使用してウェアハウスのサイズを明示的に選択できます。
コンシューマーは、与えられたテンプレートを実行する際に、プロバイダーが利用できるウェアハウスのサイズとタイプを制限することができます。ウェアハウスサイズの制限はUIではなくAPIでのみ可能です。
プロバイダーが実行する分析の実装¶
重要
コンシューマーとプロバイダーが異なるクラウドリージョンにある場合、両方のアカウントと両方のclean roomで Cross-Cloud Auto-Fulfillment を有効にする必要があります。
プロバイダーが実行する分析を、新しいclean roomで有効にする手順を以下で説明します:
プロバイダーが サポートされているテンプレート をいずれか使用し、clean roomを作成および構成します。
クリーンルーム構成の:ui:`Share Clean Room`ステップでは、プロバイダーは自分のアカウントの横の:ui:`Enable run analysis & query`をオンにして、プロバイダー分析をサポートするこのクリーンルームの任意のテンプレートを実行できるようにします。
この設定をクリーンルームの作成後に変更することはできません。公開されたクリーンルームでクエリを実行するために特定のアカウントの権限を変更したい場合は、クリーンルームを削除して新しいクリーンルームを作成する必要があります。
コンシューマーは、プロバイダー分析をサポートするテンプレートを含む、クリーンルーム内のすべてのテンプレートについて、通常通りクリーンルームに参加し、構成します。プロバイダーが特定のテンプレートを実行できるようにすることをコンシューマーが望まない場合、そのテンプレートに必要な詳細を省略することができます。
コンシューマーがクリーンルームに参加すると、参加する前にそのクリーンルームでプロバイダー実行分析が有効であることが警告されます。
コンシューマーはクリーンルームに参加するとすぐにクエリを実行できますが、プロバイダーがテンプレートを実行できるようになるまでに最大30分の遅延が生じます。このセットアップの遅延は、最初の参加ステップのみです。プロバイダーが後で他のプロバイダー実行テンプレートを追加した場合、プロバイダーは、コンシューマーがそのテンプレート用にクリーンルームを構成するとすぐにそれらを実行することができます。
クリーンルームでは、:ref:`プロバイダー実行<label-web_app_provider_run>`(初期設定の遅延後)および:ref:`コンシューマー実行<label-web_app_working_run_analysis_consumer>`(遅延なし)分析の両方が利用できるようになりました。
コンシューマーは、プロバイダーまたはコンシューマーが実行するかどうかに関係なく、このクリーンルームですべての分析に対して請求されます。
プロバイダーは、適切なAPI呼び出しを実行することで、クリーンルームでプロバイダー実行分析とコンシューマー実行分析の両方を有効または無効にすることができます。
ただし、プロバイダーがプロバイダー実行分析設定を変更するたびに、変更を有効にするためにはクリーンルームを:emph:`すべて`のコンシューマーが再インストールする必要があります。すべてのコラボレーターにクリーンルームの再インストールを強制することは困難なため、プロバイダーは、分析権限を変更する際に、公開された共有クリーンルームを削除し、必要な権限で新しいクリーンルームを作成する方が信頼性が高くなります。
重要
プロバイダーによって実行されるテンプレートには、結果で生成されるすべての列の列名またはエイリアスが必要です。列が集約関数(SUM(*))である場合、またはカスタム関数(cleanroom.my_function(p.hashed_email))を呼び出した場合、列名のエイリアスを明示的に指定する必要があります。SELECT SUM(*) AS TOTAL FROM mydb.mysch.T;
プロバイダーが実行する分析を許可するために、新しいclean roomを作成する際の一般的なフローを以下で説明します:
プロバイダー
clean room、データ、ポリシーを通常の方法で作成し、構成します。
コンシューマーを通常の方法で追加します。
:code:`provider.enable_provider_run_analysis`を呼び出すことで、クリーンルーム内の特定のコンシューマーアカウントに対してプロバイダー実行分析を可能にします。このプロシージャは、コンシューマーをクリーンルームに追加した後、コンシューマーがクリーンルームをインストールする前にのみ呼び出します。各コンシューマーアカウントは、このリクエストを個別に承認する必要があります。そうしないと、このクリーンルームでプロバイダーが実行する分析からコンシューマーのデータにアクセスすることはできません。
clean roomを公開します。
clean roomが使用可能であること、clean roomの名前、clean roomで実行したいテンプレートをコンシューマーに知らせましょう。
コンシューマー
標準的な方法でクリーンルームをインストールし、データにリンクを行います。
:doc:`結合および列ポリシー</user-guide/cleanrooms/policies>`をデータに設定します。クリーンルームで両方のポリシーを設定しないと、プロバイダーはあなたのデータを使用してテンプレートを実行できません。これは、コンシューマー実行分析とは異なります。ポリシーがまったくないと、すべての列がそのポリシータイプに対して承認されることを意味します。
``consumer.enable_templates_for_provider_run``(複数のテンプレートの場合)または``consumer.approve_template``(1つのテンプレートの場合)のいずれかを呼び出すことで、クリーンルーム内の特定のテンプレートに対するプロバイダー分析を許可します。
コンシューマーがテンプレートを承認した後にプロバイダーがテンプレートを変更した場合、コンシューマーはテンプレートを再度承認する必要があります。テンプレートが再承認されるまで、承認されたテンプレートの古いキャッシュバージョンはプロバイダーによって実行されます。
(オプション)プロバイダーが実行した分析は、コンシューマーのアカウントで行われ、コンシューマーに課金されます。テンプレートを実行する際に、プロバイダーが利用できるウェアハウスのタイプやサイズを制限する場合は、
consumer.set_provider_run_configurationを呼び出します。.clean roomをインストールし、プロバイダーが実行する分析を承認したことを、プロバイダーに伝えます。
プロバイダー
コンシューマーがクリーンルームをインストールした後、コンシューマーからプロバイダーアカウントへのデータ共有を有効にして、分析がコンシューマーデータにアクセスできるようにする必要があります。このプロセスは、プロバイダーとコンシューマーが同じクラウドリージョンにあるか、異なるクラウドリージョンにあるかによって異なります。
プロバイダーとコンシューマーが**同じクラウドリージョン**にある場合、プロバイダーは
provider.mount_request_logs_for_all_consumersを呼び出します。新しいコンシューマーアカウントが後でクリーンルームをインストールし、このテンプレートでデータを使用する場合は、このプロシージャを再実行してそのデータにアクセスする必要があります。プロバイダーとコンシューマーが 異なるクラウドリージョン にある場合、プロバイダーとコンシューマーは クロスクラウドの自動フルフィルメント を有効にする必要があります。
テンプレート名、テーブル名、テンプレート引数で:code:`provider.submit_analysis_request`を呼び出して分析を実行します。このトピックの後半に示すように、オプションでウェアハウスのサイズとタイプを指定できます。
応答IDを保存します。分析のステータスと結果を確認するために必要です。
provider.check_analysis_statusを呼び出して、分析のステータスを確認します。ステータスがCOMPLETEDと報告された場合は、provider.get_analysis_resultを呼び出して、分析結果を取得します。
Tip
clean roomに対し、プロバイダーが実行する分析の設定を変更した場合は、clean roomをアンインストールしてから再インストールすることが、変更を適用するために必要です。
ウェアハウスの制限の指定とウェアハウスタイプの選択
コンシューマーがウェアハウスのサイズとタイプの制限を設定する方法、およびプロバイダーが分析を実行する際にウェアハウスを選択する方法は次のとおりです。
コンシューマーは``consumer.set_provider_run_configuration``を呼び出し、プロバイダーが指定されたテンプレートに使用できるウェアハウスのサイズとタイプを指定します。
CALL samooha_by_snowflake_local_db.consumer.set_provider_run_configuration( $cleanroom_name, { $template1: { 'warehouse_type': 'STANDARD', 'warehouse_size': ['MEDIUM', 'LARGE']} });
プロバイダーは``provider.view_warehouse_sizes_for_template``を呼び出し、そのテンプレートに対するプロバイダー実行分析について許可されるウェアハウスのサイズとタイプを確認します。
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', -- Any other value would cause the request to fail. 'warehouse_size', 'LARGE' -- Only MEDIUM and LARGE supported. ) );
サンプルコードをインストールして実行する
プロバイダーが実行する分析を有効にし、実行するclean roomの完全なサンプルを、ダウンロードしてインストールできます。これを実行するには、同じ組織内で2つのSnowflakeアカウント、およびclean room環境がインストールされたクラウドホスティングリージョンが必要です。
プロバイダーとコンシューマーアカウントの両方にノートブックをインストールします。
ノートブックをアップロードするには、次を実行します。
ナビゲーションメニューで 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