プロバイダー実行の分析

概要

デフォルトのクリーンルーム構成では、コンシューマーのみがクリーンルームで分析を実行できます。しかし、プロバイダーは、コンシューマーデータを使用して、特定のクリーンルームで特定のテンプレートを実行する権限をコンシューマーにリクエストすることができます。プロバイダーが実行する分析を有効にし、クリーンルーム UI またはコードのいずれかを使用して実行することができます。

次の図は、基本的なプロバイダーデータ分析における、主要コンポーネントを通じたデータフローを示しています。

プロバイダー実行分析における基本的なデータフローの方向
  1. 基本的なプロバイダーデータ分析では、コンシューマーとプロバイダーは両方とも、データをクリーンルームにリンクします。ソースデータは、データが存在するアカウントのプライベートビューとしてクリーンルームにリンクされます。

  2. プロバイダーが分析を実行すると、プロバイダーのデータがコンシューマーのアカウントのクリーンルームアプリと共有されます。分析はコンシューマーのアカウントで実行されます。

  3. 暗号化された結果は、コンシューマーアカウントのコンシューマー DB に一時的に書き込まれます。

  4. 次に、暗号化された結果は、プロバイダーのアカウントの分析結果バック共有(別称: ガバナンスバック共有)にコピーされ、復号化されます。分析はコンシューマーのアカウントで実行されるため、コンシューマーは分析の料金を請求されます。

詳細については、 Snowflake Data Clean Rooms: インストールされたオブジェクト をご参照ください。

プロバイダー実行の分析をサポートするテンプレート

以下のテンプレートは、プロバイダー実行の分析をサポートしています。

  • Audience Overlap & Segmentation

  • SQL Query (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));

プロバイダーがクリーンルーム UI で分析を実行するとき、クリーンルームはデータセットのサイズに基づいて自動スケーリングロジックを使用して、プロバイダーの分析用のウェアハウスを選択します。

プロバイダーが API を使用してクリーンルームを作成し、実行する場合、プロバイダーは、コンシューマーが指定した許容値のセットからウェアハウスのサイズと型を明示的に選択できます。

一般的なメモ

  • プロバイダーは、 UI または API を使用して自分のアカウントに結果をアクティブ化したり、 UI を使用している場合はサードパーティのプロバイダーに結果をアクティブ化できます。アクティベーションを有効にして結果を表示する方法については、 クエリ結果のアクティベーション をご参照ください。

  • コンシューマーとプロバイダーが異なるクラウドリージョンにある場合は、両方のアカウントと両方のクリーンルームで クロスクラウドの自動フルフィルメント を有効にする必要があります。

    プロバイダーが実行するクロスクラウドクエリの実行には、プロバイダーのソースデータをプロバイダーからコンシューマーに複製する必要があり、クエリ結果をコンシューマーからプロバイダーに複製する必要があるため、実行に時間がかかる場合があることに注意してください。

  • プロバイダーによって実行されるテンプレートには、結果で生成されるすべての列の列名またはエイリアスが必要です。列が集計されている場合(例: SUM(col1) を使用)、またはカスタム関数が呼び出される場合(例: cleanroom.my_function(p.hashed_email))、テンプレートは次に示すように列名のエイリアスを明示的に指定する必要があります。

    SELECT SUM(col1) AS TOTAL FROM my_db.my_sch.T; -- Correct
    SELECT SUM(col1)          FROM my_db.my_sch.T; -- Error: aggregated column needs an explicit alias.
    

UI でのプロバイダーデータ分析

クリーンルーム UI を使用する際に、新しいクリーンルームのプロバイダーデータ分析を有効にする方法は次のとおりです。

  1. プロバイダーは、 サポートされているテンプレート のいずれかを使用して クリーンルームを作成および構成 します。クリーンルームを Share Clean Room ステップまで構成します。

  2. クリーンルーム構成の Share Clean Room ステップでは、プロバイダーは自分のアカウントの横の Enable run analysis & query をオンにして、プロバイダーデータ分析をサポートするこのクリーンルームの全てのテンプレートを実行できるようにします。

    • この設定をクリーンルームの作成後に変更することはできません。公開されたクリーンルームでクエリを実行するために特定のアカウントの権限を変更したい場合は、クリーンルームを削除して新しいクリーンルームを作成する必要があります。

  3. コンシューマーは、プロバイダー分析をサポートするテンプレートを含む、クリーンルーム内のすべてのテンプレートについて、通常通り クリーンルームを結合し、構成します 。プロバイダーが特定のテンプレートを実行できるようにすることをコンシューマーが望まない場合、そのテンプレートに必要な詳細を省略することができます。

    • コンシューマーがクリーンルームに参加すると、参加する前にそのクリーンルームでプロバイダー実行分析が有効であることが警告されます。

    • コンシューマーはクリーンルームに参加するとすぐにクエリを実行できますが、プロバイダーがテンプレートを実行できるようになるまでに最大30分の遅延が生じます。このセットアップの遅延は、最初の結合ステップのみです。プロバイダーが後で他のプロバイダー実行テンプレートを追加した場合、プロバイダーは、コンシューマーがそのテンプレート用にクリーンルームを構成するとすぐにそれらを実行することができます。

  4. 結合ステップが完了すると、クリーンルームは プロバイダー実行分析 および コンシューマー実行分析 の両方で利用可能になります。

    重要:

    • プロバイダーは、コンシューマーがクリーンルームをインストールしてから分析を実行するまで、約10分待っていなければなりません。遅延は、プロバイダー実行の分析に必要な追加のバックグラウンド構成のためです。

    • コンシューマーは、プロバイダーまたはコンシューマーが実行するかどうかに関係なく、このクリーンルームですべての分析に対して請求されます。

API でのプロバイダーデータ分析

クリーンルーム API を使用して、新しいクリーンルームでプロバイダーデータ分析を有効にする方法は次のとおりです。

  1. プロバイダー

    1. 標準的な方法でクリーンルーム、データ、ポリシーを作成、構成します。

    2. 標準の方法でコンシューマーを追加します。

    3. provider.enable_provider_run_analysis を呼び出すことで、クリーンルーム内の特定のコンシューマーアカウントに対してプロバイダーデータ分析を可能にします。

      重要:

      • プロバイダーは、コンシューマーをクリーンルームに追加した 、ただしコンシューマーがクリーンルームをインストールする 前に provider.enable_provider_run_analysis を呼び出す必要があります。各コンシューマーアカウントは、このクリーンルームでプロバイダー実行の分析にデータにアクセスできるように、このリクエストを承認する必要があります。

      • プロバイダーがクリーンルームのプロバイダーデータ分析設定を変更した場合は、その変更を有効にするために :emph:`すべて ` のコンシューマーがクリーンルームを再インストールする必要があります。すべてのコラボレーターにクリーンルームの再インストールを強制することは困難なため、プロバイダーは、分析権限を変更する際に、公開された共有クリーンルームを削除し、必要な権限で新しいクリーンルームを作成する方が信頼性が高くなります。

    4. クリーンルームを公開します。

    5. コンシューマーに、クリーンルームが利用可能であること、クリーンルームの名前、クリーンルームで実行したいテンプレートを知らせます。

  2. コンシューマー

    1. 標準的な方法でクリーンルームとデータ内のリンクをインストールします。

    2. データに必要な 結合および列のポリシー を設定します。

    3. ``consumer.enable_templates_for_provider_run``(複数のテンプレートの場合)または ``consumer.approve_template``(1つのテンプレートの場合)のいずれかを呼び出すことで、クリーンルーム内の特定のテンプレートに対するプロバイダーデータ分析を許可します。

      注釈

      コンシューマーがテンプレートを承認した後にプロバイダーがテンプレートを変更した場合、コンシューマーはテンプレートを再度承認する必要があります。テンプレートが再承認されるまで、承認されたテンプレートの古いキャッシュバージョンはプロバイダーによって実行されます。

    4. オプション)コンシューマーは、プロバイダー実行の分析に使用できるウェアハウスのタイプやサイズを制限することができます。ウェアハウスサイズと型の制限 をご参照ください。

    5. プロバイダーに、クリーンルームをインストールし、プロバイダー実行の分析を承認したことを伝えます。

  3. プロバイダー

    1. コンシューマーがクリーンルームをインストールした後、プロバイダーは、コンシューマーからプロバイダーアカウントへのデータ共有を有効にすることで、コンシューマーデータにアクセスするための分析を有効にします。このプロセスは、プロバイダーとコンシューマーが同じクラウドリージョンにあるか、異なるクラウドリージョンにあるかによって異なります。

      • プロバイダーとコンシューマーが 同じクラウドリージョン にある場合、プロバイダーは provider.mount_request_logs_for_all_consumers を1回呼び出します。新しいコンシューマーアカウントが後でクリーンルームをインストールし、プロバイダーがこのテンプレートのコンシューマーデータを使用することを希望する場合、プロバイダーはこのプロシージャを再実行してそのデータにアクセスする必要があります。

      • プロバイダーとコンシューマーが 異なるクラウドリージョン にある場合、プロバイダーとコンシューマーは クロスクラウドの自動フルフィルメント を有効にする必要があります。プロバイダーがリージョン間で分析を実行すると、クエリデータがプロバイダーのリージョンからコンシューマーのリージョンに送られ、クエリが完了するまでに時間がかかることがあります。

    2. provider.view_warehouse_sizes_for_template を呼び出してコンシューマーが分析に使用するウェアハウスのタイプとサイズを制限しているかどうかを確認します。コンシューマーがプロバイダーの実行分析のためのウェアハウスサイズに制限がある場合、プロバイダーは次のステップの分析リクエストで許可された warehouse_type 値および warehouse_size 値を指定する必要があります。コンシューマーがウェアハウスの制限を指定していない場合、それらのフィールドは分析リクエストでオプションです。詳細については、 ウェアハウスサイズと型の制限 をご参照ください。

    3. テンプレート名、テーブル名、テンプレート引数で provider.submit_analysis_request を呼び出して分析を実行します。コンシューマーがウェアハウスのサイズまたはタイプに制限を指定している場合、プロバイダーは分析リクエストでウェアハウスのサイズとタイプも指定する必要があります。

      • provider.submit_analysis_request から返されたリクエスト ID を保存します。この ID は、分析のステータスと結果を確認するために必要です。

    4. provider.check_analysis_status を呼び出して分析のステータスを確認します。ステータスが COMPLETED として報告された場合、 provider.get_analysis_result を呼び出して分析結果を取得します。

ウェアハウスサイズと型の制限

コンシューマーにはプロバイダーが実行した分析に対して請求されるため、コンシューマーはプロバイダーが自分のアカウントで分析を実行するために使用できるウェアハウスサイズと型を指示できます。コンシューマーがウェアハウスサイズとタイプの制限を設定する方法、およびプロバイダーが分析を実行する際にウェアハウスサイズとタイプを選択する方法は次のとおりです。

  1. コンシューマーは consumer.set_provider_run_configuration を呼び出し、プロバイダーが特定のテンプレートに使用できるウェアハウスのサイズとタイプを指定します。次のスニペットでは、コンシューマーは template_1 の実行時に、プロバイダーが使用する STANDARD ウェアハウスサイズを MEDIUM または LARGEに制限しています。

    CALL samooha_by_snowflake_local_db.consumer.set_provider_run_configuration(
      $cleanroom_name,
      {
        'template_1': {
          'warehouse_type': 'STANDARD',
          'warehouse_size': ['MEDIUM', 'LARGE']}
      });
    
  2. プロバイダーは``provider.view_warehouse_sizes_for_template``を呼び出し、そのテンプレートに対するプロバイダー実行分析について許可されるウェアハウスのサイズとタイプを確認します。

    CALL samooha_by_snowflake_local_db.provider.view_warehouse_sizes_for_template(
      $cleanroom_name,
      'template_1',
      $consumer_account_loc
    );
    
  3. プロバイダーは、分析実行リクエストで使用するウェアハウスのサイズとタイプを指定します。

    CALL samooha_by_snowflake_local_db.provider.submit_analysis_request(
      $cleanroom_name,
      $consumer_locator_id,
      'template_1',
      ['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.
      )
    );
    

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

コード例をインストールして実行する

プロバイダーデータ分析を作成し、実行するために、完全な実行例をダウンロードし、インストールすることができます。この例を実行するには、Snowflake Data Clean Room環境がインストールされた、同じ組織とクラウドホスティングリージョンにある2つのSnowflakeアカウントが必要です。

  1. サンプルノートブックをダウンロードします

  2. プロバイダーとコンシューマーアカウントの両方にノートブックをインストールします。

    ノートブックをアップロードするには、次を実行します。

    1. Sign in to Snowsight

    2. In the navigation menu, select Projects » Notebooks

    3. + Notebook » Import .ipynb file を選択します。

    4. ダウンロードした.ipynbファイルを選択します。

    5. ファイルに好きな名前を付けて、データベースとスキーマを選択します。

    6. デフォルトのウェアハウス APP_WH をそのまま使用します。

    7. Create を選択します。

    8. クリーンルームを作成するには、プロバイダーアカウントでノートブックを開き、プロバイダー部分を完了します。

    9. コンシューマーアカウントでノートブックを開き、コンシューマーの部分を入力してclean roomをインストールおよび構成し、テンプレートを実行します。

  3. ノートブックに表示されている順序で、示されているとおりにプロバイダーとコンシューマーのアクションを実行します。