BigQuery Analytics Hub を使用して組織間でデータセットを共有する
Google Cloud Japan Team
※この投稿は米国時間 2023 年 10 月 20 日に、Google Cloud blog に投稿されたものの抄訳です。
Analytics Hub は、BigQuery 内のデータ エクスチェンジ プラットフォームであり、組織がデータアセットや分析アセットへのアクセスを効率化するのに役立ちます。データ アナリスト、データ サイエンティスト、一般ユーザーによるコラボレーションやデータ共有が可能になり、統合環境を利用してさまざまなデータソースからインサイトを得ることができます。
以下に、Analytics Hub を使用するメリットをいくつかご紹介します。
- 大規模なデータ共有: Analytics Hub を使用することで、データ アナリスト、データ サイエンティスト、一般ユーザーによるコラボレーションが容易になり、大規模にデータを共有できます。
- データ セキュリティの向上: Analytics Hub は BigQuery 上に構築されているため、不正アクセスからデータを保護する堅牢なセキュリティ対策が可能です。
- 一般公開データセットへのアクセス: Analytics Hub は、Google のファースト パーティ データを含む数千もの貴重なデータセットへのアクセスを提供します。
- データ プロバイダ向けの組み込み機能: Analytics Hub は、データ プロバイダ向けに、サブスクライバーの使用指標へのアクセスやサブスクリプションの管理機能を提供します。
このブログ投稿では、Google Cloud を使用して組織間でデータセットを共有できるよう Analytics Hub を設定する方法の詳細を、重要な手順や考慮事項とともに説明します。
アーキテクチャの概要


上の図は、組織の関係を表したもので、Publisher と Subscriber という 2 つの組織があります。Publisher 組織下の Project A には、限定公開データ エクスチェンジが含まれており、これには、同じ組織下の他のすべてのプロジェクトからのデータセットがリスティングされます。
上記のアーキテクチャでは、Analytics Hub データ エクスチェンジの設定に専用のプロジェクトを使用します。これは以下の点で役立ちます。
- 管理の強化: 専用のプロジェクトを使用することで、複数の一般公開および限定公開のデータ エクスチェンジの管理が容易になります。カスタムの権限やロールを作成することも、課金やコストの管理ツールを使用して支出を追跡することもできます。
- サブスクライバーの使用指標へのアクセス: 専用のプロジェクトを使用することで、プロジェクトから INFORMATION_SCHEMA ビューを使用してサブスクライバーの使用指標を簡単に収集できます。
- セキュリティの向上: 専用のプロジェクトを使用することで、承認されたサブスクライバーを一元管理できるため、不正アクセスやデータ漏洩のリスクを軽減できます。
デフォルトでは、データ エクスチェンジは限定公開であり、そのエクスチェンジにアクセスできるユーザーまたはグループのみがデータの表示やサブスクライブを行えます。ユーザーがリスティングをサブスクライブすると、リンクされたデータセットがターゲットのプロジェクト内に作成され、そのユーザーは BigQuery の読み取り専用データセットとしてアクセスできるようになります。
データ エクスチェンジとリスティングを作成する
以下のコマンドを使用して Analytics Hub API を有効にします。
gcloud services enable
analyticshub.googleapis.com
データ エクスチェンジを作成する
Publisher プロジェクト内にデータ エクスチェンジを作成します。上記の手順を実行するには、analyticshub.dataExchanges.create
権限が必要です。IAM 権限を付与する方法については、リンクを参照してください。
リスティングを作成する
上記で作成したデータ エクスチェンジにリスティングを作成します。リスティングを作成するには、少なくとも以下の権限が必要です。
analyticshub.listings.create
(データ エクスチェンジ レベル以上)bigquery.datasets.get
(データセット レベル以上)bigquery.datasets.update
(データセット レベル以上)
上記の権限は、Analytics Hub パブリッシャー / Analytics Hub 管理者および BigQuery データオーナー / BigQuery 管理者のロールでカバーされます。
サブスクライバー ロールを追加する
サブスクライバーに限定公開リスティングへのアクセスを許可するには、そのリスティングのユーザーに Analytics Hub サブスクライバー
のロールを付与する必要があります。
以降のセクションでは、サブスクライバー ユーザー / グループがデータ エクスチェンジで利用可能なリスティングを表示する方法と、それらをプログラマティックにサブスクライブする方法について紹介します。
リスティングを表示およびサブスクライブする手順
ターゲットのプロジェクトのリスティングをサブスクライブするには、以下の IAM ロールと権限のセットが必要です。
bigquery.datasets.create
権限: Subscriber 組織内のプロジェクト レベル。これにより、リンクされたデータセットをユーザー固有のプロジェクト内に作成できるようになります。この権限は、roles/bigquery.user
ロールの一部としてカバーされます。roles/analyticshub.subscriber
ロール: Publisher 組織内のリスティング レベルまたはデータ エクスチェンジ レベル。
必要な権限を持つ既存のサービス アカウントを gcloud(または Cloud Shell)で認証します。以下のコマンドを使用します。
鍵ファイルの生成が許可されていない場合は、代わりに、VM を作成して上記のサービス アカウントを割り当てます。VM にログインして作業を進めます。
以下の手順は、ユーザー認証情報を使用して実施することもできます。
利用可能なリスティングを表示する
データ エクスチェンジで利用可能なすべてのリスティングを表示するには、以下の curl コマンドを実行します。
ここで、project
は、projectId または project_number を指し、locationId
は Google Cloud リージョンを指し、DATA_EXCHANGE_ID
はデータ エクスチェンジ ID を指します。レスポンスの例の一部を以下に示します。
出力
リスティングをサブスクライブする
Publisher 組織のリスティングをサブスクライブするには、そのデータ エクスチェンジへのリンクとプロジェクト ID をサブスクライバーと共有するように Analytics Hub 管理者が設定する必要があります。このリンクには、ユーザーがサブスクライブ プロセスに使用する data_exchange_id および listing_id
フィールドがあります。以下の cURL コマンドを実行して、目的のリスティングをサブスクライブします。リクエストが成功すると、レスポンスの本文は空になります。詳しくは、API ドキュメントをご覧ください。
リクエスト本文の「-d」には、宛先プロジェクトとデータセットを指定します。このリンクされたデータセットは Subscriber 組織内で作成される必要があります。
新しいリスティングに関するユーザーへのアラート
監査ログを有効にする
以下で説明するログベースのアラートを設定する前に、BigQuery Analytics Hub API 監査ログを有効にする必要があります。
リスティング作成のアラートを設定する
Cloud Monitoring でアラートを設定すると、データ エクスチェンジでリスティングが作成されるたびにインシデントが作成されます。以下は、指定したプロジェクトで新しいリスティングが作成されるたびにログベースのアラートを作成する policy.json ファイルの例です。
このアラートをアクティブにする gcloud コマンドは以下のとおりです。
SCHEMATA_LINK ビューを使用したサブスクリプション指標
サブスクリプションのメタデータは、INFORMATION_SCHEMA.SCHEMATA_LINKS ビューを介して公開されます。また、メタデータを集約することで、有用な指標を構築し、サブスクライバーの使用パターンを理解できます。以下に、すぐに利用できるサンプルのクエリをいくつか示します。
- 各リスティングに対して作成されたリンクされたデータセット(例: サブスクリプション)の数。サブスクリプションの数を降順で表示します。
REGION
は任意のデータセット リージョンです(例: region-us
)。
2. 各リスティングのユニーク サブスクライバーの数(プロジェクト レベルまたは組織レベルに基づく)
ユニーク サブスクライバーの数は、プロジェクト レベルまたは組織レベルに基づきます。組織レベルのユニーク サブスクライバーの数を取得するには、以下のクエリを使用します。
プロジェクト レベルに基づくユニーク サブスクライバーの数を取得するには、上記のクエリの LINKED_SCHEMA_ORG_DISPLAY_NAME
列を LINKED_SCHEMA_CATALOG_NAME
に置き換えます。
このブログ投稿が、BigQuery Analytics Hub を使用して組織間でデータを共有する方法や、サブスクライバーの使用指標を分析する方法の参考になることを願います。Analytics Hub の概要ページで詳細をご確認のうえ、ぜひお試しください。
ー データ部門戦略的クラウド エンジニア Urvashi Chaudhary
ー データ部門戦略的クラウド エンジニア Manan Kshatriya