データ クリーンルームを使用して機密データを共有する

データ クリーンルームは、基盤となるデータを移動または公開することなく、複数の関係者がデータアセットを共有、結合、分析できる、セキュリティが強化された環境を提供します。

BigQuery データ クリーンルームは、Analytics Hub プラットフォーム上に構築されています。標準の Analytics Hub データ エクスチェンジは、組織の境界を越えてデータを共有する大規模な方法を提供しますが、データ クリーンルームは機密および保護されたデータ共有のユースケースに対処するのに役立ちます。データ クリーンルームは、基盤となるデータを保護し、データオーナーが定義した分析ルールを適用するための追加のセキュリティ管理を提供します。

主なユースケースは次のとおりです。

  • キャンペーンのプランニングとオーディエンス分析。 2 つの当事者(販売者と購入者など)がファーストパーティ データを組み合わせて、プライバシーを重視した方法でデータ拡充を改善できるようにします。
  • 測定とアトリビューション。顧客とメディアのパフォーマンス データを照合することで、マーケティング活動の効果を詳細に把握し、十分な情報に基づくビジネス上の意思決定を行うことができます。
  • アクティベーション。顧客データと他社のデータを組み合わせて顧客に対する理解を深め、セグメンテーション機能の向上と効果的なメディア アクティベーションを可能にします。

マーケティング業界以外にも、データ クリーンルームのユースケースはいくつかあります。

  • 小売、日用品(CPG)。小売業者の POS データと日用品企業のマーケティング データを組み合わせることで、マーケティング活動とプロモーション活動を最適化します。
  • 金融サービス。他の金融機関や政府機関の機密データを組み合わせて、不正行為の検出を改善します。複数の銀行の顧客データを集計して、信用リスクのスコアリングを構築します。
  • 医療。医師と製薬研究者の間でデータを共有すると、患者に対する治療の効果を把握できます。
  • サプライ チェーン、物流、輸送。サプライヤーとマーケターからのデータを組み合わせて、ライフサイクル全体を通じた商品のパフォーマンスの全体像を把握します。

ロール

BigQuery データ クリーンルームには、主に 3 つのロールがあります。

  • データ クリーンルームのオーナー: プロジェクト内の 1 つ以上のデータ クリーンルームの権限、公開設定、メンバーを管理するユーザー。このロールは Analytics Hub 管理者に似ています。
  • データ提供者: データ クリーンルームのオーナーによって、データ クリーンルームにデータを公開するように割り当てられたユーザー。多くの場合、データ クリーンルームのオーナーはデータ提供者でもあります。このロールは Analytics Hub パブリッシャーに似ています。
  • サブスクライバー: データ クリーンルームのオーナーによって、データ クリーンルームで公開されたデータに登録できるように割り当てられたユーザーであり、データに対してクエリを実行できます。このロールは、Analytics Hub サブスクライバーAnalytics Hub サブスクリプション オーナーを組み合わせたロールに似ています。サブスクライバーは、オンデマンド料金または Enterprise Plus エディションを利用している必要があります。

アーキテクチャ

BigQuery データ クリーンルームは、BigQuery データのパブリッシュ / サブスクライブ モデル上に構築されています。BigQuery アーキテクチャでは、コンピューティングとストレージが分離されているため、データ提供者はデータのコピーを複数作成する必要なくデータを共有できます。次の図は、BigQuery データ クリーンルーム アーキテクチャの概要を示しています。

データ提供者はデータをデータ クリーンルームにパブリッシュし、サブスクライバーはプライバシー フィルタを使用してデータをクエリできます。

データ クリーンルーム

データ クリーンルームは、直接的なアクセスを防止し、クエリ制限を適用して機密データを共有する環境です。共有データを利用できるのは、データ クリーンルームのサブスクライバーとして追加されたユーザーまたはグループだけです。データ クリーンルームのオーナーは、Analytics Hub で必要な数だけデータ クリーンルームを作成できます。

共有リソース

共有リソースは、データ クリーンルームでのデータ共有単位です。リソースは BigQuery テーブルまたはビューである必要があります。データ提供者は、プロジェクトでサブスクライバーと共有する BigQuery リソースを作成するか、既存のものを使用します。

リスティング

データ提供者がデータ クリーンルームにデータを追加すると、リスティングが作成されます。これには、データ提供者の共有リソースへの参照と、サブスクライバーがデータを使用する際に役立つ説明情報が含まれます。データ提供者は、リスティングを作成して、説明、サンプルクエリ、サブスクライバー向けドキュメントへのリンクなどの情報を含めることができます。

リンク済みデータセット

リンク済みデータセットは、データ クリーンルームのすべてのデータへのシンボリック リンクとして機能する読み取り専用の BigQuery データセットです。サブスクライバーがリンク済みデータセット内のリソースをクエリすると、データ提供者が設定した分析ルールを満たす共有リソースのデータが返されます。サブスクライバーがデータ クリーンルームに登録されると、プロジェクト内にリンク済みデータセットが作成されます。データのコピーは作成されず、ビュー定義などの特定のメタデータはサブスクライバーに表示されません。

分析ルール

データ提供者は、データ クリーンルームで共有するリソースに分析ルールを構成します。分析ルールは、基盤となるデータへの直接的なアクセスを防止し、クエリ制限を適用します。たとえば、データ クリーンルームは集計しきい値の分析ルールをサポートしています。このルールは、サブスクライバーに対して集計クエリによるデータの分析のみを許可します。

データ下り(外向き)の制御

データ下り(外向き)の制御は自動的に有効になり、サブスクライバーによるデータ クリーンルームの元データのコピーやエクスポートを防止します。データ提供者は、サブスクライバーが取得したクエリ結果のコピーとエクスポートを防止するために、追加の制御を構成できます。

制限事項

BigQuery データ クリーンルームには次の制限があります。

  • 分析ルールはビューにのみ設定できます。テーブルやマテリアライズド ビューには設定できません。この制限により、データ提供者がテーブルまたはマテリアライズド ビュー(または分析ルールのないビュー)をデータ クリーンルームで共有すると、サブスクライバーはそれらのリソース内のデータに直接アクセスできるようになります。
  • データ クリーンルームは Analytics Hub プラットフォーム上に構築されているため、すべての Analytics Hub の制限が適用されます。
  • データ クリーンルームは、Analytics Hub リージョンでのみ使用できます。
  • サブスクライバーは、Dataplex または Data Catalog で共有リソースを検索できません。
  • サブスクライバーは、リンク済みデータセットの INFORMATION_SCHEMA ビューにクエリを実行できません。
  • データ提供者は、データセット全体をデータ クリーンルームに直接公開することはできません。
  • データ提供者は、データ クリーンルームにモデルやルーティンを公開できません。
  • データ クリーンルームに追加できる共有リソースは最大 100 個です。この上限を増やす必要がある場合は、bq-dcr-feedback@google.com 宛てにメールをお送りください。

始める前に

このドキュメントの各タスクを行うために必要な権限をユーザーに与える Identity and Access Management(IAM)ロールを付与し、Analytics Hub API を有効にして、Analytics Hub 管理者のロールをデータ クリーンルームの所有者(データ クリーンルームを作成するユーザー)に割り当てます。

必要な権限

データ クリーンルームの使用に必要な権限を取得するには、BigQuery データ編集者 roles/bigquery.dataEditor)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

この事前定義ロールには、データ クリーンルームの使用に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

データ クリーンルームを使用するには、次の権限が必要です。

  • serviceUsage.services.get
  • serviceUsage.services.list
  • serviceUsage.services.enable

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

BigQuery における IAM ロールと権限の詳細については、IAM の概要をご覧ください。

Analytics Hub API を有効にする

Analytics Hub API を有効にするには、次のいずれかのオプションを選択します。

コンソール

Google Cloud プロジェクトの Analytics Hub API ページを開き、有効にします。

Analytics Hub API を有効にする

bq

gcloud services enable コマンドを実行します。

gcloud services enable analyticshub.googleapis.com

Analytics Hub API を有効にすると、Analytics Hub ページにアクセスできるようになります。

Analytics Hub 管理者ロールを割り当てる

データ クリーンルームのオーナーには、Analytics Hub 管理者のロールroles/analyticshub.admin)が必要です。このロールを他のユーザーに付与する方法については、Analytics Hub 管理者の作成をご覧ください。

データ クリーンルームのオーナーのワークフロー

データ クリーンルームのオーナーは、次のことができます。

  • データ クリーンルームを作成する。
  • データ クリーンルームのプロパティを更新する。
  • データ クリーンルームを削除する。
  • データ提供者を管理する。
  • サブスクライバーを管理する。
  • データ クリーンルームを共有する。

データ クリーンルームのオーナーの追加の権限

データ クリーンルームのオーナーのタスクを実行するには、プロジェクトでの Analytics Hub 管理者のロールroles/analyticshub.admin)が必要です。このロールは、必要に応じてフォルダレベルまたは組織レベルで割り当てることもできます。

データ クリーンルームを作成する

コンソール

  1. Google Cloud コンソールで、[Analytics Hub] ページに移動します。

    Analytics Hub に移動

  2. [データ クリーンルームを作成] をクリックします。

  3. [プロジェクト] で、データ クリーンルームのプロジェクトを選択します。プロジェクトに対して Analytics Hub API を有効にする必要があります。

  4. データ クリーンルームの場所、名前、連絡先担当者、アイコン(省略可)、説明を指定します。データ クリーンルームでは、データ クリーンルームと同じリージョンにあるリソースのみをリストに含めることができます。

  5. [データ クリーンルームを作成] をクリックします。

  6. 省略可: [データ クリーンルームの権限] セクションで、他のデータ クリーンルームのオーナー、データ提供者、サブスクライバーを追加します。

    [データ クリーンルームを作成] ペイン

API

projects.locations.dataExchanges.create メソッドを使用し、共有環境dcrExchangeConfig に設定します。

次の例は、curl コマンドを使用して projects.locations.dataExchanges.create メソッドを呼び出す方法を示しています。

  curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -L -X POST https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/dataExchanges?data_exchange_id=CLEAN_ROOM_ID -d
  '{
    display_name: "CLEAN_ROOM_NAME",
    sharing_environment_config: {dcr_exchange_config: {}}
  }'

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • LOCATION: データ クリーンルームの場所
  • CLEAN_ROOM_ID: データ クリーンルームの ID
  • CLEAN_ROOM_NAME: データ クリーンルームの表示名

データ クリーンルームを更新する

コンソール

  1. Google Cloud コンソールで、[Analytics Hub] ページに移動します。

    Analytics Hub に移動

  2. 更新するデータ クリーンルームの表示名をクリックします。

  3. [詳細] タブで、[クリーンルームの詳細を編集] をクリックします。

  4. 必要に応じて、データ クリーンルームの名前、連絡先担当者、アイコン、説明を更新します。

  5. [保存] をクリックします。

API

projects.locations.dataExchanges.patch メソッドを使用し、共有環境dcrExchangeConfig に設定します。

次の例は、curl コマンドを使用して projects.locations.dataExchanges.patch メソッドを呼び出す方法を示しています。

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -L -X PATCH https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/dataExchanges/data_exchange_id=CLEAN_ROOM_ID?updateMask=displayName -d
'{
  display_name: "CLEAN_ROOM_NAME",
  sharing_environment_config: {dcr_exchange_config: {}}
}'

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • LOCATION: データ クリーンルームの場所
  • CLEAN_ROOM_ID: データ クリーンルームの ID
  • CLEAN_ROOM_NAME: データ クリーンルームの表示名

データ クリーンルームを削除する

コンソール

  1. Google Cloud コンソールで、[Analytics Hub] ページに移動します。

    Analytics Hub に移動

  2. 削除するデータ クリーンルームの行で、 [その他の操作] > [削除] をクリックします。

  3. 確定するには、「delete」と入力して [削除] をクリックします。この操作は取り消せません。

API

projects.locations.dataExchanges.delete メソッドを使用し、共有環境dcrExchangeConfig に設定します。

次の例は、curl コマンドを使用して projects.locations.dataExchanges.delete メソッドを呼び出す方法を示しています。

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -L -X DELETE https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/dataExchanges?data_exchange_id=CLEAN_ROOM_ID

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • LOCATION: データ クリーンルームの場所
  • CLEAN_ROOM_ID: データ クリーンルームの ID
  • CLEAN_ROOM_NAME: データ クリーンルームの表示名

データ クリーンルームを削除すると、その中のすべての項目が削除されます。ただし、共有リソースとリンク済みデータセットは削除されません。リンク済みデータセットはソース データセットからリンク解除されるため、データ クリーンルーム内のリソースへのサブスクライバーによるクエリは失敗するようになります。

データ提供者を管理する

データ クリーンルームのオーナーは、データ クリーンルームにデータを追加できるユーザー(データ提供者)を管理します。ユーザーがデータ クリーンルームにデータを追加できるようにするには、特定のデータ クリーンルームに対する Analytics Hub パブリッシャーのロールroles/analyticshub.publisher)を付与します。

コンソール

  1. Google Cloud コンソールで、[Analytics Hub] ページに移動します。

    Analytics Hub に移動

  2. 権限を付与するデータ クリーンルームの表示名をクリックします。

  3. [詳細] タブで [権限を設定] をクリックします。

  4. [プリンシパルを追加] をクリックします。

  5. [新しいプリンシパル] で、追加するデータ提供者のユーザー名またはメールアドレスを入力します。

  6. [ロールを選択] で、[Analytics Hub] > [Analytics Hub パブリッシャー] を選択します。

  7. [保存] をクリックします。

[権限を設定] をクリックすることで、いつでもデータ提供者の削除および更新を行えます。

API

projects.locations.dataExchanges.setIamPolicy メソッドを使用します。

次の例は、curl コマンドを使用して projects.locations.dataExchanges.setIamPolicy メソッドを呼び出す方法を示しています。

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -L -X POST https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/dataExchanges/data_exchange_id=CLEAN_ROOM_ID:setIamPolicy -d
'{
  "policy": {
    "bindings": [
      {
        "members": [
          "my-service-account@my-project.iam.gserviceaccount.com"
        ],
        "role": "roles/analyticshub.publisher"
      }
    ]
  }
}'

リクエスト本文のポリシーは、ポリシーの構造を遵守している必要があります。

IAM ページから、プロジェクト全体に対する Analytics Hub パブリッシャーのロールを付与できます。これにより、プロジェクト内の任意のデータ クリーンルームにデータを追加する権限をユーザーに付与できます。ただし、ユーザーに大きすぎる権限を付与する結果になる可能性があるため、おすすめしません。

サブスクライバーを管理する

データ クリーンルームのオーナーは、データ クリーンルームに登録できるユーザー(サブスクライバー)を管理します。ユーザーがデータ クリーンルームに登録できるようにするには、ユーザーに特定のデータ クリーンルームでの Analytics Hub サブスクライバーroles/analyticshub.subscriber)と Analytics Hub サブスクリプション オーナーroles/analyticshub.subscriptionOwner)のロールを付与します。

コンソール

  1. Google Cloud コンソールで、[Analytics Hub] ページに移動します。

    Analytics Hub に移動

  2. 権限を付与するデータ クリーンルームの表示名をクリックします。

  3. [詳細] タブで [権限を設定] をクリックします。

  4. [プリンシパルを追加] をクリックします。

  5. [新しいプリンシパル] で、追加するサブスクライバーのユーザー名またはメールアドレスを入力します。

  6. [ロールを選択] で、[Analytics Hub] > [Analytics Hub サブスクライバー] を選択します。

  7. [別のロールを追加] をクリックします。

  8. [ロールを選択] で、[Analytics Hub] > [Analytics Hub サブスクリプション オーナー] を選択します。

  9. [保存] をクリックします。

[権限を設定] をクリックすることで、いつでもサブスクライバーの削除および更新を行えます。

API

projects.locations.dataExchanges.setIamPolicy メソッドを使用します。

次の例は、curl コマンドを使用して projects.locations.dataExchanges.setIamPolicy メソッドを呼び出す方法を示しています。

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -L -X POST https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/dataExchanges/data_exchange_id=CLEAN_ROOM_ID:setIamPolicy -d
'{
  "policy": {
    "bindings": [
      {
        "members": [
          "user:mike@example.com"
        ],
        "role": "roles/analyticshub.subscriptionOwner"
      },
      {
        "members": [
          "user:mike@example.com"
        ],
        "role": "roles/analyticshub.subscriber"
      }
    ]
  }
}'

リクエスト本文のポリシーは、ポリシーの構造を遵守している必要があります。

IAM ページで、プロジェクト全体の Analytics Hub サブスクライバーと Analytics Hub サブスクリプション オーナーのロールを付与して、プロジェクトの任意のデータ クリーンルームに登録する権限を付与できます。ただし、ユーザーに大きすぎる権限を付与する結果になる可能性があるため、おすすめしません。

データ クリーンルームを共有する

データ クリーンルームをサブスクライバーと直接共有できます。

  1. Google Cloud コンソールで、[Analytics Hub] ページに移動します。

    Analytics Hub に移動

  2. 共有するデータ クリーンルームの行で、 [その他の操作] > [共有リンクをコピー] をクリックします。

  3. コピーしたリンクをサブスクライバーと共有して、サブスクライバーがデータ クリーンルームを表示して登録できるようにします。

データ提供者のワークフロー

データ提供者は、次のことを行えます。

  • リスティングを作成してデータ クリーンルームにデータを追加する。
  • リスティングを更新する。
  • リスティングを削除する。
  • データ クリーンルームを共有する。
  • リスティングを監視する。

データ提供者の追加の権限

データ提供者のタスクを実行するには、データ クリーンルームでの Analytics Hub パブリッシャーのロールroles/analyticshub.publisher)が必要です。

また、データ クリーンルームのリストに追加するリソースを含むデータセットに対する bigquery.datasets.link 権限が必要です。現在のプロジェクトに含まれない、組織内のデータ クリーンルームを表示する場合は、resourcemanager.organization.get 権限も必要です。

リスティングを作成する(データを追加する)

分析ルールを使用してデータを準備し、データ クリーンルームにリスティングとして公開するには、次の操作を行います。

コンソール

  1. Google Cloud コンソールで、[Analytics Hub] ページに移動します。

    Analytics Hub に移動

  2. リスティングを作成するデータ クリーンルームの表示名をクリックします。

    データ クリーンルームのオーナーとは別の組織に所属しており、データ クリーンルームが表示されない場合は、データ クリーンルームのオーナーに直接リンクを依頼してください。

  3. [データを追加] をクリックします。

  4. [データセットを選択] と [テーブル / ビューの名前] に、データクリーン ルームとそれに対応するデータセットに追加するテーブルまたはビューを入力します。分析ルールを追加して基盤となるデータへのアクセスを制限するには、いくつかの操作が必要です。

  5. 公開するリソースの列を選択します。

  6. リスティングのビュー名、連絡先担当者、説明(省略可)を設定します。

  7. [次へ] をクリックします。

  8. リスティングの分析ルールを選択し、詳細を構成します。

  9. リスティングのデータ下り(外向き)制御を設定します。

  10. [次へ] をクリックします。

  11. データ クリーンルームに追加するデータと分析ルールを確認します。

  12. [データを追加] をクリックします。データのビューが作成され、データ クリーンルームにリスティングとして追加されます。ソーステーブルまたはビュー自体は追加されません。

API

projects.locations.dataExchanges.listings.create メソッドを使用します。

次の例は、curl コマンドを使用して projects.locations.dataExchanges.listings.create メソッドを呼び出す方法を示しています。

  curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -H 'x-goog-user-project:DCR_PROJECT_ID' -X POST https://analyticshub.googleapis.com/v1/projects/DCR_PROJECT_ID/locations/LOCATION/dataExchanges/data_exchange_id=CLEAN_ROOM_ID/listings?listingId=LISTING_ID -d
  '{"bigqueryDataset":{"dataset":"projects/PROJECT_ID/datasets/DATASET_ID","selectedResources":[{"table":"projects/PROJECT_ID/datasets/DATASET_ID/tables/VIEW_ID"}],},"displayName":LISTING_NAME"}'

次のように置き換えます。

  • DCR_PROJECT_ID: データ クリーンルームが作成されたプロジェクトのプロジェクト ID
  • PROJECT_ID: ソース データセットが含まれていたプロジェクトのプロジェクト ID
  • DATASET_ID: ソース データセット ID
  • LOCATION: データ クリーンルームの場所
  • CLEAN_ROOM_ID: データ クリーンルームの ID
  • LISTING_ID: リスティング ID
  • LISTING_NAME: リスティング名
  • VIEW_ID: ビュー ID。データ クリーンルームに追加するビューは、分析ルールで構成された承認済みビューである必要があります。

データ クリーンルームのリソースをリストに含めることで、データ クリーンルームの現在および将来のすべてのサブスクライバーに、共有リソース内のデータへのアクセス権を付与することになります。

分析ルールのない共有リソースを使用してリスティングを作成しようとすると、サブスクライバーがそのリソースの元データにアクセスできることを示す警告が表示されます。分析ルールのないリソースを意図的に公開する場合は、リスティングを作成できます。

Failed to save listing エラーが発生した場合は、データ提供者のタスクの実行に必要な権限があることを確認してください。

リスティングを更新する

コンソール

  1. Google Cloud コンソールで、[Analytics Hub] ページに移動します。

    Analytics Hub に移動

  2. リスティングを含むデータ クリーンルームの表示名をクリックします。

  3. 更新するリスティングの行で、 [その他の操作] > [リスティングを編集] をクリックします。

  4. 必要に応じて、連絡先担当者または説明を更新します。

  5. [次へ] をクリックします。

  6. 必要に応じて分析ルールを更新します。更新できるのは、選択したルールのパラメータだけです。別のルールに切り替えることはできません。

  7. [次へ] をクリックします。

  8. リスティングを確認し、[データを追加] をクリックします。

API

projects.locations.dataExchanges.listings.patch メソッドを使用します。

次の例は、curl コマンドを使用して projects.locations.dataExchanges.listings.patch メソッドを呼び出す方法を示しています。

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -H 'x-goog-user-project:DCR_PROJECT_ID' -X PATCH https://analyticshub.googleapis.com/v1/projects/DCR_PROJECT_ID/locations/LOCATION/dataExchanges/data_exchange_id=CLEAN_ROOM_ID/listings/listingId=LISTING_ID?updateMask=displayName -d
'{"displayName":LISTING_NAME"}'

次のように置き換えます。

  • DCR_PROJECT_ID: データ クリーンルームが作成されたプロジェクトのプロジェクト ID
  • LOCATION: データ クリーンルームの場所
  • CLEAN_ROOM_ID: データ クリーンルームの ID
  • LISTING_ID: リスティング ID
  • LISTING_NAME: リスティング名

リスティングの作成後に、そのソースリソースまたはデータ下り(外向き)の制御を変更することはできません。

リスティングを削除する

コンソール

  1. Google Cloud コンソールで、[Analytics Hub] ページに移動します。

    Analytics Hub に移動

  2. リスティングを含むデータ クリーンルームの表示名をクリックします。

  3. 削除するリスティングの行で、 [その他の操作] > [リスティングを削除] をクリックします。

  4. 確定するには、「delete」と入力して [削除] をクリックします。この操作は元に戻せません。

API

projects.locations.dataExchanges.listings.delete メソッドを使用します。

次の例は、curl コマンドを使用して projects.locations.dataExchanges.listings.delete メソッドを呼び出す方法を示しています。

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -H 'x-goog-user-project:DCR_PROJECT_ID' -X DELETE https://analyticshub.googleapis.com/v1/projects/DCR_PROJECT_ID/locations/LOCATION/dataExchanges/data_exchange_id=CLEAN_ROOM_ID/listings?listingId=LISTING_ID

次のように置き換えます。

  • DCR_PROJECT_ID: データ クリーンルームが作成されたプロジェクトのプロジェクト ID
  • LOCATION: データ クリーンルームの場所
  • CLEAN_ROOM_ID: データ クリーンルームの ID
  • LISTING_ID: リスティング ID

リスティングを削除しても、共有リソースとリンク済みデータセットは削除されません。リンク済みデータセットはソース データセットからリンク解除されるため、そのリスティング内のデータへのサブスクライバーによるクエリは失敗するようになります。

データ クリーンルームを共有する

データ クリーンルームをサブスクライバーと直接共有できます。

  1. Google Cloud コンソールで、[Analytics Hub] ページに移動します。

    Analytics Hub に移動

  2. 共有するデータ クリーンルームの行で、 [その他の操作] > [共有リンクをコピー] をクリックします。

  3. コピーしたリンクをサブスクライバーと共有して、サブスクライバーがデータ クリーンルームを表示して登録できるようにします。

リスティングを監視する

データ クリーンルームで共有するリソースのソース データセットの使用状況の指標を表示するには、INFORMATION_SCHEMA.SHARED_DATASET_USAGE ビューをクエリします。

リスティングのサブスクライバーを表示するには、次の操作を行います。

  1. Google Cloud コンソールで、[Analytics Hub] ページに移動します。

    Analytics Hub に移動

  2. データ クリーンルームの表示名をクリックします。

  3. 表示するリスティングの行で、 [その他の操作] > [サブスクリプションを表示] をクリックします。

サブスクライバーのワークフロー

サブスクライバーは、データ クリーンルームを表示して登録できます。データ クリーンルームに登録すると、サブスクライバーのプロジェクトにリンク済みデータセットが 1 つ作成されます。リンク済みデータセットの名前はデータ クリーンルームと同じです。

データ クリーンルーム内の特定のリスティングに登録することはできません。データ クリーンルームそのものにだけ、登録できます。

サブスクライバーの追加の権限

サブスクライバーのタスクを実行するには、データ クリーンルームでの Analytics Hub サブスクライバーroles/analyticshub.subscriber)と Analytics Hub サブスクリプション オーナーroles/analyticshub.subscriptionOwner)のロールが必要です。

また、データ クリーンルームに登録する際にリンク済みデータセットを作成するには、プロジェクトでの bigquery.datasets.create 権限が必要です。

データ クリーンルームに登録する

データ クリーンルームに登録すると、プロジェクトにリンク済みデータセットを作成することで、リンク済みのデータセットをクエリするためのアクセス権が付与されます。データ クリーンルームに登録する手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. [エクスプローラ] ペインで、 [追加] をクリックします。

  3. [Analytics Hub] を選択します。ディスカバリー ページが開きます。

  4. アクセス可能なデータ クリーンルームを表示するには、フィルタリストで [データ クリーンルーム] を選択します。

  5. 登録するデータ クリーンルームをクリックします。データ クリーンルームの説明ページが開きます。

  6. [登録] をクリックします。

  7. サブスクリプションの宛先プロジェクトを選択し、[登録] をクリックします。

API

projects.locations.dataExchanges.subscribe メソッドを使用します。

次の例は、curl コマンドを使用して projects.locations.dataExchanges.subscribe メソッドを呼び出す方法を示しています。

  curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -L -X POST https://analyticshub.googleapis.com/v1/projects/DCR_PROJECT_ID/locations/LOCATION/dataExchanges/CLEAN_ROOM_ID:subscribe  --data '{"destination":"projects/SUBSCRIBER_PROJECT_ID/locations/LOCATION","subscription":"SUBSCRIPTION"}'

次のように置き換えます。

  • DCR_PROJECT_ID: データ クリーンルームが作成されたプロジェクトのプロジェクト ID
  • SUBSCRIBER_PROJECT_ID: サブスクライバー プロジェクトのプロジェクト ID
  • LOCATION: データ クリーンルームの場所
  • CLEAN_ROOM_ID: データ クリーンルームの ID
  • SUBSCRIPTION: サブスクリプションの名前

これで、指定したプロジェクトにリンク済みのデータセットが追加され、クエリで使用できるようになります。

サブスクライバーは、リンク済みデータセットのメタデータの一部(説明やラベルなど)を編集できます。リンク済みデータセットに権限を設定することもできます。ただし、リンク済みデータセットに変更を加えても、ソース データセットには影響しません。また、ビューの定義も表示できません。

リンク済みデータセットに含まれるリソースは読み取り専用です。サブスクライバーは、リンク済みデータセット内のリソースのデータまたはメタデータを編集できません。また、リンク済みデータセット内の個別のリソースに権限を指定することもできません。

データ クリーンルームの登録を解除するには、リンク済みデータセットを削除します。

リンク済みデータセット内のデータをクエリする

リンク済みデータセット内のデータをクエリするには、SELECT WITH AGGREGATION_THRESHOLD 構文を使用します。この構文を使用すると、分析ルールが適用されたビューに対してクエリを実行できます。この構文の例については、集計しきい値の分析ルールが適用されたビューをクエリするをご覧ください。

サンプル シナリオ: 広告主とパブリッシャーのアトリビューション分析

広告主は、マーケティング キャンペーンの効果を追跡したいと考えています。広告主は、購入履歴、ユーザー属性、興味 / 関心など、顧客に関するファーストパーティ データを持っています。パブリッシャーは自社のウェブサイトから取得したデータ(訪問者に表示された広告とそのコンバージョンなど)を保持しています。

広告主とパブリッシャーは、データ クリーンルームを使用してデータを統合し、キャンペーンの結果を測定することに同意します。この場合、パブリッシャーはデータ クリーンルームを作成し、広告主がデータを分析できるようにします。その結果、どの広告が売上に最も貢献したかを示すアトリビューション レポートが作成されます。広告主は、この情報を使用して将来のマーケティング キャンペーンを改善できます。

広告主とパブリッシャーは、次の手順で BigQuery のデータ クリーンルームをオーケストレートします。

データ クリーンルームを作成する(パブリッシャー)

  1. パブリッシャー組織のデータ クリーンルームのオーナーが、BigQuery プロジェクトで Analytics Hub API を有効にし、ユーザー A をデータ クリーンルームのオーナー(Analytics Hub 管理者)として割り当てます。
  2. ユーザー A が Campaign Analysis というデータ クリーンルームを作成し、次の権限を割り当てます。
    • データ提供者(Analytics Hub パブリッシャー): ユーザー B(パブリッシャー組織のデータ エンジニア)。
    • サブスクライバー(Analytics Hub サブスクライバーとサブスクリプション オーナー): ユーザー C(広告主の組織のマーケティング アナリスト)。

データ クリーンルームにデータを追加する(パブリッシャー)

  1. ユーザー B が、データ クリーンルームに Publisher Conversion Data という新しいリスティングを作成します。リスティングの作成の一環として、分析ルールを含む新しいビューが作成されます。

データ クリーンルームに登録する(広告主)

  1. ユーザー C がデータ クリーンルームに登録し、Publisher Conversion Data リスティングを含むデータ クリーンルームのすべてのリスティングのリンク済みデータセットを作成します。
  2. ユーザー C は、集計クエリを実行してこのリンク済みデータセットのデータを自社のファーストパーティ データと組み合わせて、キャンペーンの効果を測定できます。

エンティティ解決

データ クリーンルームのユースケースでは、共通の識別子が含まれない、データ提供者のデータセットとサブスクライバーのデータセットの間で、エンティティをリンクする必要があります。サブスクライバーとデータ提供者は、複数のデータセットで同じレコードを異なる方法で表現している場合があります。データセットが異なるデータソースに由来しているか、データセットが異なる名前空間の識別子を使用しているためです。

データの準備の一環として、BigQuery のエンティティ解決では次の処理が行われます。

  • データ提供者に対しては、選択した共通プロバイダからの識別子を使用して、共有リソースのレコードの重複除去と解決を行います。このプロセスにより、提供者間の結合が可能になります。
  • サブスクライバーに対しては、ファースト パーティ データセット内のレコードの重複除去と解決を行い、データ提供者のデータセットのエンティティへのリンク付けを行います。このプロセスにより、サブスクライバーのデータとデータ提供者のデータを結合できます。

選択した ID プロバイダでエンティティ解決を設定するには、BigQuery でエンティティ解決を構成して使用するをご覧ください。

データ クリーンルーム アセットを見つける

アクセスできるすべてのデータ クリーンルームを見つける手順は次のとおりです。

  • データ クリーンルームのオーナーとデータ提供者は、Google Cloud コンソールで [Analytics Hub] ページに移動します。

    Analytics Hub に移動

    アクセスできるすべてのデータ クリーンルームが一覧表示されます。

  • サブスクライバーは、次の操作を行います。

    1. Google Cloud コンソールで [BigQuery] ページに移動します。

      [BigQuery] に移動

    2. [エクスプローラ] ペインで、 [追加] をクリックします。

    3. [Analytics Hub] を選択します。ディスカバリー ページが開きます。

    4. アクセス可能なデータ クリーンルームを表示するには、フィルタリストで [データ クリーンルーム] を選択します。

プロジェクト内のデータ クリーンルームによって作成されたすべてのリンク済みデータセットを確認するには、コマンドライン環境で次のコマンドを実行します。

PROJECT=PROJECT_ID \
for dataset in $(bq ls --project_id $PROJECT | tail +3); \
do [ "$(bq show -d --project_id $PROJECT $dataset | egrep LINKED)" ] \
&& echo $dataset; done

PROJECT_ID は、リンク済みデータセットを含むプロジェクトに置き換えます。

料金

データ提供者は、データ ストレージに対してのみ課金されます。サブスクライバーは、クエリを実行した場合にのみ、コンピューティング(分析)に対して課金されます。

サブスクライバーは、オンデマンド料金または Enterprise Plus エディションを利用している必要があります。

次のステップ