Snowflake Collaboration Data Clean Roomsの使用

このトピックでは、Collaboration Data Clean Roomsを使用するための上位レベルのガイドを提供します。また、コラボレーションの作成または参加に必要なすべての主要なステップの詳細も提供します。

要件

  • Snowflake Data Clean Roomsの最新バージョンに更新済み である必要があります。

  • 所有者とデータプロバイダーはSnowflake Enterprise Editionを使用する必要があります。分析実行者はStandard Editionを使用できます。

  • コラボレーションを表示または管理するためには、Data Clean Rooms Collaboration API へのアクセスが必要です。詳細については、 DCR Collaboration API へのアクセスを管理する をご参照ください。

  • Collaboration API を使用する場合、環境内のセカンダリロールを無効にする必要があります。

    USE SECONDARY ROLES NONE;
    
    Copy

基本的なクリーンルームコラボレーションワークフロー

以下は、簡単なクリーンルームコラボレーションシナリオです。

  1. コラボレーションの 所有者 は、オプションで、コラボレーションの初期構成に表示したいテンプレートやデータ提供を登録します。

  2. 所有者は、オプションで、意図したコラボレーターに対して、コラボレーションの初期構成に表示したいテンプレートやデータ提供を登録するよう依頼します。その後、コラボレーターは、登録したアイテムのリソース IDs を通知します。

  3. 次に、所有者 が コラボレーションを作成します。コラボレーションは、コラボレーター、そのロール、およびコラボレーションの初期バージョンに存在すべきすべてのリソースをリストしたコラボレーション YAML 仕様によって定義されます。

    • コラボレーションが作成されると、コラボレーターとそのロールのセットが固定され、コラボレーション定義にロールが含まれているコラボレーターのみが参加するよう招待されます。同様に、分析実行者のセットも固定されます。ただし、新しいデータをコラボレーションにリンクすることで、どのコラボレーターもデータプロバイダーになることができます。

    • コラボレーションに他のクラウドホスティングリージョンのユーザーが含まれている場合、そのユーザーがコラボレーションを確認して参加するには アカウントでクロスクラウド自動フルフィルメントを有効にする 必要があります。

  4. 所有者が作成したコラボレーションに参加すると、コラボレーションがアクティブ化します。これで、仕様内のすべてのコラボレーターがコラボレーションを表示して参加できるようになります。

  5. コラボレーターは、コラボレーションを確認して参加します

  6. コラボレーターはオプションで、テンプレート、およびデータプロバイダーの場合はデータ提供などの リソースをコラボレーションに追加 できます。

  7. 分析実行者はコラボレーションで利用可能なデータ(およびオプションで非共有のローカルデータ)を使用して、コラボレーションで 割り当てられたテンプレートを実行 できます。分析のコストは分析実行者が負担します。テンプレートはクエリ結果を応答で返すか、呼び出し元または別のコラボレーターに対してアクティブ化 します。

次のセクションでは、これらの各手順の詳細について説明します。

コラボレーションの作成

コラボレーションを作成するには、コラボレーション仕様 を設計して、すべてのコラボレーターと それらのロール を定義します。コラボレーションの所有者は、オプションで、初期コラボレーションで利用できるようにしたい 他のリソースを登録およびリンク して、コラボレーション仕様にリソースを含めます。コラボレーターからのリソースの使用を予定している場合、所有者はそれらのユーザーにリソースを登録し、コラボレーション仕様に含めるリソース IDs を所有者に伝えるよう依頼することもできます。

次に、所有者は INITIALIZE を呼び出してコラボレーションの作成を開始します。デフォルトでは、INITIALIZEは所有者もコラボレーションに自動的に参加させます。これは非同期プロセスであるため、ステータスが JOINED になるまで GET_STATUS を呼び出す必要があります。コラボレーションステータスが JOINED になるとコラボレーションがアクティブになり、すべてのコラボレーターがコラボレーションを表示し、参加することができます。

CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.INITIALIZE(
$$
api_version: 2.0.0
spec_type: collaboration
name: my_first_collaboration
owner: alice
collaborator_identifier_aliases:
  alice: example_com.acct_abc
  bob: another_example.acct_xyz
analysis_runners:
  bob:
    data_providers:
      alice:
        data_offerings: []
      bob:
        data_offerings: []
  alice:
    data_providers:
      alice:
        data_offerings: []
      bob:
        data_offerings: []
    templates: []
$$,
'APP_WH'
);
SET collaboration_name = '<collaboration_name>';

-- INITIALIZE automatically joins the owner. Check status until JOINED.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.GET_STATUS($collaboration_name);

-- Collaboration is visible here when it's joined.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_COLLABORATIONS();
Copy

コラボレーションへのリソースの追加

コラボレーターは、コラボレーションにリソースを追加したり、コラボレーションに追加したリソースを削除したりすることができます。コラボレーションにリソースを追加するには、2つのステップがあります。

  1. リソースの所有者は追加するリソースの リソース定義仕様 を作成し、それを使用してリソースをアカウントに登録します。リソースはアカウントの デフォルトレジストリ に登録するか、または、カスタムレジストリを使用できます。

  2. コラボレーターは、リソースをコラボレーションにリンクします。リソースがリンクされると、指定されたコラボレーターが使用できるようになります。テンプレートなど、一部のリソースタイプは、どのコラボレーターでもリンクできます。データ提供などのその他のリソースは、データプロバイダーのロールを持つユーザーのみがリンクできます。リソースは通常、コラボレーション仕様とリソース共有者によって定義された特定のコラボレーターのみが利用できます。

リソースは、コラボレーションの作成前または作成後にコラボレーションに追加できます。

リソースはバージョン管理をサポートしています。ただし、新しいバージョンを持つ新しいリソースを作成しても、以前のバージョンはコラボレーションから削除されません。

リソースには、ユーザーが提供する名前とバージョン(およびデータ提供の場合はエイリアス)を組み合わせることにより、一意の名前が付けられます。

コラボレーションには以下のリソースを追加できます。

テンプレート

テンプレートは指定されたコラボレーターが実行できる JinjaSQL クリーンルームテンプレートです。コラボレーターは誰でもテンプレートを登録し、コラボレーションにテンプレートを追加することができます。ただし、以下のステップに記載するように、影響を受けるすべてのコラボレーターがリクエストを承認する必要があります。自身のアカウントに登録されているテンプレートのみを追加または削除できます。

コラボレーションにテンプレートを追加するには:

  1. コラボレーション用のテンプレートを設計しテンプレート仕様 に埋め込みます。

  2. REGISTRY.REGISTER_TEMPLATE を呼び出してテンプレートを登録します。テンプレート ID が返されます。

  3. テンプレートをリンクします。このプロセスは、コラボレーションがすでに存在するかどうかによって異なります。

    • コラボレーションが作成される前にテンプレートを追加するには、テンプレート ID をコラボレーションの所有者に伝えます。それを所有者が コラボレーション仕様 に追加して、実行できる人を定義します。

       alice:
         data_providers:
           bob:
             data_offerings: []
         templates:
         - id: bob_template_v1 # Alice can run this template, seemingly registered by bob.
      
      Copy
    • **既存のコラボレーションにテンプレートを追加するには、**テンプレートの影響を受けるすべてのコラボレーターに許可をリクエストする必要があります。既存のコラボレーションにテンプレートを追加するには、以下の手順を実行します。

      1. REGISTER_TEMPLATE を呼び出して、アカウントにテンプレートを登録します。これで、テンプレートがコラボレーションに追加できるようになります。

      2. テンプレートの ID を指定して ADD_TEMPLATE_REQUEST を呼び出して、特定のコラボレーションにテンプレートを追加する承認フローを特定のユーザー向けに開始します。

        リソースの影響を受けるすべてのコラボレーターが、VIEW_UPDATE_REQUESTS を呼び出したときにリクエストが表示されます。

      3. ステータスが PENDING のリクエストが表示されたコラボレーターは、APPROVE_UPDATE_REQUEST または REJECT_UPDATE_REQUEST を呼び出す必要があります。

        • コラボレーターがリクエストを拒否した場合、更新リクエストは拒否されます。

        • コラボレーターは、後で承認を拒否に変更したり、拒否を承認に変更したりすることはできません。

        リクエストのステータスが APPROVED になると、テンプレート追加リクエストで指定されたユーザーがテンプレートを利用できるようになります。リクエストが REJECTED の場合、拒否理由がリクエストレポートに表示されます。テンプレートがすべてのユーザーに承認されてからテンプレートが利用可能になるまでに少し時間がかかる場合があります。テンプレートが使用可能であることを確認するには、view_templates を呼び出します。

Tip

登録したテンプレートを確認するには、REGISTRY.VIEW_REGISTERED_TEMPLATES を呼び出します。

コラボレーションのテンプレートデザイン

コラボレーションテンプレートは クリーンルームテンプレート と同一ですが、いくつかの特別な考慮事項があります。

  • コラボレーションにリストされた共有テーブルは、テンプレートの source_table 変数の入力に使用されます。

  • my_table は、分析実行者がローカルの非共有データを使用する場合にのみ使用されます。テンプレートの my_table 変数を使用する場合、その変数に割り当てられたテーブルはコラボレーション内で共有されないことに注意してください。

  • データソースの列は、テンプレートやユーザーに公開されると、新しい名前になる可能性があります。ソース列の名前がいつ、どのように変更されるかについて詳しくは、ソース列の名前変更 を参照してください。列の名前が変更された場合、テンプレートとユーザー指定の引数(参加列名など)では、元の名前ではなく変更後の名前を使用する必要があります。

  • コラボレーションのアクティベーションテンプレートは、名前が activation_template_name である必要はありません。その他すべて アクティベーションテンプレートの要件 は引き続き適用されます。

Snowflake Data Clean Roomsのカスタムテンプレート構文について詳しくは、カスタムクリーンルームテンプレートのリファレンス を参照してください。

データ提供

*データ提供*とは、コラボレーションの特定の分析実行者と共有される1つ以上のデータビューのセットのことです。データ提供は、コラボレーションにリストされているデータプロバイダーが追加できます。データ提供は、data offering ID.alias というスコープ形式で公開されます。ここで、ariasはデータ提供の特定のビューです。特定のコラボレーターとデータ提供を共有できるのは、コラボレーション仕様 でその分析実行者のデータプロバイダーとしてリストされている場合のみです。

データ提供は、データのライブビューであり、データ提供が作成または登録されたときのデータのスナップショットではありません。ソースデータに適用されるすべてのSnowflakeポリシーは、コラボレーションで有効です。

データ提供を登録すると、データ提供仕様 にリストされた各データソースのビューが作成されます。ビューには、データ提供仕様にリストされた列のみが含まれます。データ提供をコラボレーションにリンクすると、Snowflakeは コラボレーション仕様 に従って、そのデータ提供にアクセスできるすべての分析実行者にアクセス保護されたビューのコピーを作成します。基になるテーブルを移動、名前変更、またはアクセス許可を変更すると、データ提供は以前に登録されたリンクで使用できなくなります。

Snowflake Standard Editionを使用している場合、データ提供を他のコラボレーターと共有することはできませんが、自身のデータをクエリで使用 できます。

要件:

データ提供は、次のステップでコラボレーションに追加されます。

  1. データの データ提供仕様 を作成します。

  2. REGISTRY.REGISTER_DATA_OFFERING を呼び出してデータ提供を登録します。データ提供 ID が返されます。

    このステップにより、データ提供を、アクセス可能なコラボレーションにリンク*できるようになります*。同じデータ提供 ID を使用してデータ提供を複数のコラボレーションと共有できます。

  3. 次のステップは、コラボレーションが作成されているかどうかによって異なります。

    • コラボレーションがまだ作成されていない場合、データプロバイダーは、コラボレーション定義 に追加するデータ提供 ID をコラボレーション作成者に提供します。データ提供がコラボレーション定義に追加されると、データプロバイダーがコラボレーションに参加した後、コラボレーションのすべてのユーザーにそのデータ提供が表示されます。

    • コラボレーションがすでに作成済みである場合、データプロバイダーはコラボレーションに参加し、データ提供 ID、コラボレーション名、およびデータ共有者を指定して COLLABORATION.LINK_DATA_OFFERING を呼び出します。データ提供がすべてのユーザーによって承認された後、データ提供が使用可能になるまでに少し時間がかかる場合があります。データが使用可能になったかどうかを確認するには、view_data_offerings を呼び出します。

    コラボレーションからデータリソースを削除するには、unlink_data_offering を呼び出します。

各データ提供は、1つ以上のテーブルまたはビューを表します。個々のテーブルには、collaborator alias.data offering ID.dataset alias 構文を使用してアクセスします。ここで、データ提供 ID はユーザーが提供した名前とバージョン値の組み合わせであり、エイリアスは提供内の単一のテーブルです。データ提供を登録するときは、名前、バージョン、エイリアスをスコーピングシステムとして考えてください。

たとえば、販売データのデータ提供を次のように登録できます。ここで、各テーブルは US の州に固有です。

api_version: 2.0.0
spec_type: data_offering
version: v0
name: examplecorp_sales_by_state
datasets:
 - alias: AL
   data_object_fqn: mydb.mysch.al_data
 - alias: NY
   data_object_fqn: mydb.mysch.ny_data
 - alias: CA
   data_object_fqn: mydb.mysch.ca_data
Copy

分析実行者はこれらのテーブルを data offering id.ALdata offering id.NY、または data offering id.CA として参照します。

データ提供は、データ提供を登録したユーザーがコラボレーションに参加するまで、コラボレーションでは表示されません。

Tip

共有するデータの OWNERSHIP がない場合、データ提供するコラボレーションに参加したり、データ提供をリンクしたりしようとすると、エラーが発生します。エラーメッセージには、ACCOUNTADMIN がコラボレーションにデータアクセスを付与するために実行が必要な SQL コマンドに関する情報が提供されています。ACCOUNTADMIN が コマンドを実行すると、ユーザーがコラボレーションに参加できるようになります。詳細情報。

クエリを実行するとき、分析実行者はデータ提供を ID によって COLLABORATION.RUNsource_tables パラメーターに渡します。

登録済みデータ提供を表示するには、VIEW_REGISTERED_DATA_OFFERINGS を呼び出します。

データへの利用ポリシーの適用

参加または集計ポリシーなどのSnowflake列ポリシーを共有データに適用するには、2つの方法があります。

ソースデータにポリシーを適用する

ソースデータに適用されたSnowflakeポリシーは、コラボレーションのデータ提供ビューにも適用されます。

ソースデータにSnowflakeポリシーを適用する場合は、それらをコラボレーターに知らせて、結合できない列で結合するクエリやグループ化すべきときにグループ化しないクエリを知らずに実行しないようにしてください。データ提供の description フィールドにはどのSnowflakeポリシーでも記載できます。

データ提供にポリシーを適用する(自由形式のクエリの使用時のみ

Snowflakeポリシーをソースデータに適用せずに、共有データ内の 自由形式のクエリ に適用できます。これらのポリシーは、自由形式のクエリを使用してデータがアクセスされたときに、ソーステーブルに直接適用されるSnowflakeポリシーに加えて適用されます。

自由形式の SQL ポリシーをデータに追加するには:

  1. Collaboration Data Clean Roomsでサポートされるポリシータイプ を作成します。

  2. 次の情報をデータ提供の定義に追加します。

    • allowed_analyses: template_and_freeform_sql を設定します。

    • freeform_sql_policies セクションをデータセット定義に追加します。

    • freeform_sql_policies の下に適切なポリシータイプセクションを追加して、作成したSnowflakeポリシーと、それを適用するコラボレーション列をリストします。

コラボレーターが COLLABORATION.VIEW_DATA_OFFERINGS を呼び出したときに、データに適用されたポリシータイプが表示されます。

ポリシーは、複数のテーブルの複数の列に再利用できます。

例:

CREATE OR REPLACE AGGREGATION POLICY my_db.public.my_agg_policy AS ()
  RETURNS AGGREGATION_CONSTRAINT ->
    AGGREGATION_CONSTRAINT(MIN_GROUP_SIZE => 5);
Copy

ソース列の名前変更

テンプレートまたは自由形式 SQL の呼び出し元に公開される列名は、データ提供定義 で列を説明する category および column_type 値によって決定されます。列の名前の変更は、次の規定に従います。

  • 列の categoryjoin_custom または passthrough の場合は、元の列名が公開されます。

  • categoryjoin_standard の場合は、列の名前が column_type 値に変更されます。

  • categorytimestamp の場合は、列の名前がデータ提供の timestamp に変更されます。

たとえば、ソーステーブルの列の名前が user_email_address の場合、この列がテンプレートや自由形式 SQL でどのように公開されるかは、データ提供定義でどのように定義されているかによって異なります。

  • 列のカテゴリが join_standardcolumn_type が存在する場合:

    ... Snippet from data offering yaml ...
    schema_and_template_policies:
         user_email_address:
           category: join_standard
           column_type: hashed_email_sha256
    
    Copy

    column_type 値がクエリとテンプレートで使用されます。

    SELECT HASHED_EMAIL_SHA256 FROM source_table[0];
    
    Copy
  • 列のカテゴリが join_custom の場合:

    ... Snippet from data offering yaml ...
    schema_and_template_policies:
         user_email_address:
           category: join_custom
           column_type: hashed_email_sha256
    
    Copy

    元のソース列名がクエリとテンプレートで使用されます。

    -- column_type is ignored for join_custom columns.
    SELECT user_email_address FROM source_table[0];
    
    Copy

コラボレーションへの参加

コラボレーションに貢献したリソースをコラボレーションで利用可能にしたり、コラボレーションで分析を実行可能にしたりするには、コラボレーションに参加する必要があります。

  • INITIALIZEを呼び出すと、*作成者*は自動的に参加します(``auto_join_warehouse``が指定されている場合を除く)。自動参加が無効になっている場合、作成者は別途JOINを呼び出します。

  • 非作成者 は REVIEW と JOIN を呼び出します。

    重要

    アカウントがコラボレーション所有者と異なるクラウドホスティングリージョンにある場合:

参加は非同期プロセスです。GET_STATUS を呼び出して、ステータスが JOINED としてリストされたことを確認してください。

分析の実行

分析を実行するには、クエリでテンプレートを実行するか、コラボレーションデータに対して自由形式の SQL を実行します。分析を実行するには、コラボレーションで指定されている 分析実行者 である必要があります。テンプレートを実行できるか、結果をアクティブ化できるか、自由形式の SQL クエリを実行できるかは、コラボレーション仕様によって決まります。何ができるか、およびどのデータとテンプレートを使用可能かは、コラボレーション仕様に記載されています。

分析実行のコストは分析実行者が負担します。

テンプレートからの分析実行

テンプレートから分析を実行するには、実行できるテンプレートのリストを表示し、使用できるデータ提供のリストを表示して、COLLABORATION.RUN を呼び出します。値は個別のパラメーターとして、または YAML 形式の分析仕様として指定します。

-- See which data offerings are available.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_DATA_OFFERINGS($collaboration_name);

-- See which templates you can run.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_TEMPLATES($collaboration_name);

-- Pass in the arguments in analysis YAML format.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.RUN(
  $collaboration_name,
  $$
    api_version: 2.0.0
    spec_type: analysis
    name: My_analysis
    description: Sales results Q2 2025
    template: sales_join_template

    template_configuration:
      view_mappings:
        source_tables:
          -  user1_alias.data_offering_v1.table1
          -  user2_alias.another_data_offering_v1.table_2
      arguments:
         conv_purchase_id: PURCHASE_ID
         conv_purchase_amount: PURCHASE_AMOUNT
         publisher_impression_id: IMPRESSION_ID
         publisher_campaign_name: CAMPAIGN_NAME
         publisher_device_type: DEVICE_TYPE
  $$ );
Copy

データに対して自由形式の SQL クエリを有効にする

データプロバイダーは、分析実行者がコラボレーションデータ提供に対して SQL クエリを実行できるようにすることができます。データに対して自由形式の SQL クエリを実行するには、コラボレーションのメンバーであり、データ提供に対する自由形式 SQL 権限を持つ分析実行者ロールを付与されている必要があります。

データプロバイダーのステップ

コラボレーターがコマンドラインからデータセットをクエリできるようにするには、データセットの説明で、:codenowrap: を allowed_analyses: template_and_freeform_sql に設定します。コラボレーションに参加したユーザーは、アクセスできるデータセットに対して自由形式の SQL クエリを実行できます。

次の YAML は、自由形式のクエリを可能にするデータセットを定義します。

api_version: 2.0.0
version: 1
name: my_favorite_dataset
datasets:
  - alias: test_freeform_restricted_agg
    data_object_fqn: samooha_provider_sample_database.audience_overlap.customers
    object_class: custom
    allowed_analyses: template_and_freeform_sql
...
Copy

分析実行者のステップ

  1. どのデータセットが自由形式のクエリをサポートしているかを確認するために、分析実行者は、コラボレーションに参加した後、COLLABORATION.VIEW_DATA_OFFERINGS を実行します。結果の FREEFORM_SQL_VIEW_NAME 列に、自由形式の SQL クエリを使用してアクセスできるテーブル、および SQL クエリで使用するテーブル名が表示されます。

    CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_DATA_OFFERINGS($collaboration_name);
    
    Copy
    +-------------------------------+------------------------+------------------------------+------------------------------+---------------------------------------+
    |   template_view_name          | template_join_columns  | analysis_allowed_columns     | activation_allowed_columns   |      freeform_sql_view_name           |
    +-------------------------------+------------------------+------------------------------+------------------------------+---------------------------------------+
    | useralias.data_offering_alias |     ip_address         | email, name, age             |             SSN              | alias_name.test_data_offering_v0.customers|
    +-------------------------------+------------------------+------------------------------+------------------------------+---------------------------------------+
    
  2. これで、コラボレーターが自由形式の SQL クエリを使用して、FREEFORM_SQL_VIEW_NAME 列にリストされているテーブルをクエリできるようになります。

    SELECT * FROM alias_name.test_data_offering_v0.customers;
    
    Copy

テーブルに適用されるすべてのポリシーが強制されます。

Standard Editionの使用時に、自分のデータを使用して分析を実行する

Standard Editionを使用している場合は、標準の方法 で分析を実行できます。ただし、コラボレーションの説明に自分のデータを追加して、他のユーザーと共有することはできません。

Standard Editionユーザーとして、コラボレーションで自分のデータを使用するには:

  1. データ提供を登録するために、REGISTRY.REGISTER_DATA_OFFERING を呼び出します。列名を指定する必要があります。

  2. COLLABORATION.LINK_LOCAL_DATA_OFFERING を呼び出します。

    COLLABORATION.VIEW_DATA_OFFERINGS を呼び出したとき、自分の提供は自分のみに表示されます。他のコラボレーターのリストには表示されません。

  3. COLLABORATION.RUN を呼び出すとき、local_template_view_names パラメーターで、または分析 YAML で渡す場合は local_view_mappings.my_tables フィールドで、データ提供 ID を使用します。local_template_view_names および local_view_mappings.my_tables は、テンプレートの my_table パラメーターに入力します。

次の例は、実行プロシージャの YAML 形式バージョンを使用してテンプレートを実行する方法を示しています。この例には、my_tables フィールドが含まれており、LINK_LOCAL_DATA_OFFERING を呼び出して入力します。

-- See what data offerings are available. Your own local data will be listed here as well.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_DATA_OFFERINGS($collaboration_name);

-- Pass in the arguments in analysis YAML format.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.RUN(
  $collaboration_name,
  $$
    api_version: 2.0.0
    spec_type: analysis
    name: my_analysis
    description: Cross-purchase results for Q4 2025
    template: mytemplate_v1

    template_configuration:
      view_mappings:
        source_tables:
          - ADVERTISER1.ADVERTISER_DATA_V1.CUSTOMERS
          - PUBLISHER.ADVERTISER_DATA_V1.CUSTOMERS
      local_view_mappings:
        my_tables:
          - PARTNER.MY_DATA_V1.MY_CUSTOMERS # Populate my_table array with my own table.
      arguments:  # Template arguments, as name: value pairs
         conv_purchase_id: PURCHASE_ID
         conv_purchase_amount: PURCHASE_AMOUNT
         publisher_impression_id: IMPRESSION_ID
         publisher_campaign_name: CAMPAIGN_NAME
         publisher_device_type: DEVICE_TYPE
  $$ );
Copy

クエリ結果のアクティブ化

注釈

SAMOOHA_APP_ROLE ロールを使用していない場合、つまり、アクセス管理プロシージャ によって管理されるロールを使用している場合、自分が分析実行者でありコラボレーション仕様に activation_destinations が含まれるコラボレーションに参加するには REGISTERDATAOFFERING 権限が必要です。

クエリの結果をアクティブ化するには:

  1. 適切な仕様で、すべてのアクティベーション列に以下のプロパティが設定されていることを確認してください。

    アクティブ化列を持つテーブルの データ提供仕様 で、その列を activation_allowed: TRUE に設定する必要があります。

     api_version: 2.0.0
     spec_type: data_offering
     name: 2025_orders
     version: 2025_01_01_v1
     description: Activating Cleveland sales results for 2025
    
     datasets:
      - alias: customers
        data_object_fqn: db1.schema1.orders
        allowed_analyses: template_only
        object_class: custom
        schema_and_template_policies:
          email:
            category: join_standard
            column_type: hashed_email_sha256
            activation_allowed: TRUE
          purchase_amount:
            category: passthrough
            activation_allowed: TRUE
    
    Copy

    注釈

    activation_policy フィルターが適用されたテンプレート内のすべての列は、データ提供仕様内で activation_allowed 値が TRUE に設定されている必要があります。以下の例は、分析実行者が提供した2つの列にアクティベーションポリシーが適用されたテンプレートを示しています。

    BEGIN
      CREATE OR REPLACE TABLE cleanroom.activation_data_analysis_results AS
        SELECT count(*) AS ITEM_COUNT, c.status, c.age_band
        FROM IDENTIFIER({{ my_table[0] }}) AS c
        JOIN IDENTIFIER({{ source_table[0] }}) AS p
        ON {{ c_join_col | sqlsafe | activation_policy }} = {{ p_join_col | sqlsafe | activation_policy }}
        GROUP BY c.status, c.age_band
        ORDER BY c.age_band;
      RETURN 'analysis_results';
    END;
    
    Copy
  2. 分析実行者は RUN を呼び出して分析を実行します。

    • 自分に対してアクティブ化する場合、結果は呼び出し元のアカウントのテーブル consumers_database.ACTIVATION_RESULTS.CONSUMER_DIRECT_ACTIVATION_SUMMARY ですぐに利用可能になります。クエリ結果の表示方法について詳しくは、最後のステップを参照してください。

    • 他のコラボレーターに対してアクティブ化する場合:

      1. コラボレーターは SHARED のステータスが返されるまで VIEW_ACTIVATIONS を呼び出します。別のアカウントにアクティブ化すると、大きな結果セットの場合はかなりの時間がかかることがあります。これは、データをコラボレーターのアカウントに転送して復号化する必要があるためです。

      2. アクティベーションのステータスが SHARED になったら、コラボレーターは PROCESS_ACTIVATION を呼び出して結果をアカウントに送信します。PROCESS_ACTIVATION への応答には、テーブル名とセグメント名が含まれます。これにより、アクティベーションステータスが PROCESSED に設定されます。

  3. クエリ結果を取得するには、結果テーブル名と、オプションで結果をフィルターするためのセグメント名を指定して次の SQL コマンドを実行します。

    SELECT *
      FROM <results_table_name>
        [WHERE segment = <segment_name>];
    
    Copy

コラボレーションの終了または削除

  • 非所有者がコラボレーションを終了するには、COLLABORATION.LEAVE を呼び出します。提供したすべてのデータ提供がコラボレーションから削除されます。コラボレーションをいったん終了すると、再び参加できません。

  • コラボレーションの所有者はコラボレーションを終了できません。所有権を譲渡することはできません。コラボレーションの所有者は、COLLABORATION.TEARDOWN を呼び出して、すべてのコラボレーターのコラボレーションをドロップできます。

どちらのプロセスも非同期です。GET_STATUS を呼び出してステータスをモニターし、GET_STATUS でステータスが LOCAL_DROP_PENDING として表示される場合は、LEAVE または TEARDOWN を再び呼び出す必要があります。

クロスクラウド自動フルフィルメントの有効化

コラボレーション所有者と同じクラウドホストリージョンにいない場合、コラボレーションに参加するには、アカウントで クロスクラウド自動フルフィルメント </collaboration/provider-listings-auto-fulfillment>`(LAF)を有効にする必要があります。別のクラウドリージョンでのコラボレーションをレビューしようとしているときにアカウントで LAF が有効になっていないか、適切な権限がない場合は、コラボレーションに対して ``REVIEW` を呼び出すとエラーが表示されます。

注釈

コラボレーションでクロスクラウドの自動フルフィルメントが使用されている場合:

  • データは、そのデータにアクセスできる各コラボレーターのアカウントに複製されます。

  • データは、所有者がデータ提供にアクセスできるかどうかに関係なく、所有者のリージョンにも複製されます。ただし、データにアクセスできるかどうかは、データ提供の共有ルールによって決定されます。

自分のクラウドホストリージョンを特定するには、SELECT CURRENT_REGION(); を実行します。

自分のアカウントでクロスクラウド自動フルフィルメントを有効にするには

  1. 組織管理者が SYSTEM$ENABLE_GLOBAL_DATA_SHARING_FOR_ACCOUNT を呼び出してアカウントの LAF を有効にする必要があります。詳細については、 自動フルフィルメントの権限を管理する をご参照ください。

  2. LAF コラボレーションをレビューまたは参加するための適切な権限を取得するには、SAMOOHA_APP_ROLE を使用するか、または MANAGELISTINGAUTOFULFILLMENT アカウントレベル権限 が付与されたロールを使用します。

別のクラウドホストリージョンにいるコラボレーターには、複製の頻度 のため追加のデータラグが発生します。複製の頻度はCollaboration Data Clean Roomではまだ設定できません。

例:二者間のコラボレーション

次の例は、二者間のコラボレーションを示しています。1人目(「alice」という名前)は、コラボレーションの作成者であり、自身とbobのデータプロバイダーであり、分析実行者です。2人目(「bob」という名前)は、自分自身とaliceのデータプロバイダーであり、分析実行者です。

次の例は、次のアクションを示しています。

  • コラボレーションの作成。

  • テンプレートとデータ提供の登録。

  • コラボレーション作成時のテンプレートとデータ提供の追加。

  • コラボレーションへの参加。

  • 既存のコラボレーションへのテンプレートとリソースの追加。

  • 分析の実行。

この例を実行するには、Snowflake Data Clean Rooms がインストールされた2つの別々のアカウントが必要です。

ファイルをダウンロードしてSnowflakeアカウントにアップロードするか、Snowsight を使用してサンプルコードを2つの別々のアカウントのワークシートにコピーして貼り付けることができます。

ソース SQL ファイルをダウンロードした後、Snowflake Data Clean Rooms がインストールされた2つの別々のアカウントにアップロードします。

  • ダウンロード:コラボレーション所有者「alice」ワークシート </samples/clean-rooms/demo-collaboration-hub-alice.sql>

  • ダウンロード:コラボレーションメンバー「bob」ワークシート </samples/clean-rooms/demo-collaboration-hub-bob.sql>