Analytics Hubを使ってプロジェクト間でデータのやり取りを簡単にする
はじめに
こんにちは、D2Cエンジニアの羽原です。
社内の一部プロジェクトにおいて、Google CloudのBigQueryを使用してデータの利活用が行われています。
利活用を行う中で、異なるGoogle CloudのプロジェクトにおいてBigQuery上のデータを共有するシステム要件が出たため、調査を行った結果BigQueryのサービスの一部であるAnalytics Hubが最も最適であるとともに、社内のデータ利活用において非常に有用なサービスと感じたため紹介させて頂きます。
Analytics Hubとは
Analytics Hubとは主に、
- 組織間のデータアセットを安全に交換できる
- データストレージを一元管理することでコスト面で削減が図れる
- Publicに公開されたデータセットを登録することで。自身がもつBigQuery上のデータとかけ合わせることができる
などの特徴を持っています。
例えば、同じ会社内で特定のデータを持っているチームとそれを活用したいと思っているチーム間で異なるGoogle Cloud環境を使っている場合、Analytics Hubで簡単にデータの共有と管理と権限付与が一元的に行なるということを示しています。
仕組み
仕組みとしては、データを提供したいPublisherとデータを利用したいSubscriberの2者をつなぐ役割を果たしています。下の図はGoogle Cloud公式サイトに示されている概要図となります。
AnalyticsHubの概要図(公式サイトより引用)
より詳細なPublisherとSubscriberの関係を示した図が下の図になります。
PublisherとSubscriberの関係(公式サイトより引用)
主な流れとしては、
- データを共有したいPublisherが共有するデータセットをBigQueryに作成
- 作成したデータセットをAnalitics HubのListingsへ登録
- この際、Privateなデータセットの場合は、Subscriberも設定
- Subscriberは、自身のGoogle Cloud環境上のAnalytics HubでListingsを購読設定する
- SubsciberのBigQuery環境でクエリの実行が可能になる
といった流れとなります。
従来は、
- データを共有したいPublisherがGoogle Cloud Storage(GCS)などにデータを置く or BigQuery(BQ)へ外部公開用のデータセットを作成
- Publisher側に環境にSubscriberのIAM権限を作成した後、GCSやBQデータセットへ権限付与
- SubscriberがGCSから自身のGoogle Cloud環境でBQの外部テーブルの作成を行う or Publisher側のGoogle Cloud環境にかけ合わせしたいデータを入れる
- Subscriberがクエリを実行
といった複雑な流れと権限設定を経る必要があり、以下のような問題が発生していました。
- データの保管場所がバラバラになることでデータの整合性の保証が取れない
- 一つのGoogle Cloud環境で複数人が作業を行うと、利用料金の按分に対して手間がかかる
- GCSからBQの外部テーブルを作成することでパフォーマンスが低下し、クエリ実行において時間がかかる
これらの問題を解決し、シンプルにデータ共有を行えるシステムがAnalytics Hubとなります。
使ってみた感想
実際のチュートリアルとして、Google Cloud Japanのエンジニアの方が発信されているブログ記事を参考に進めます。
Publisher側の操作
- BigQuery(BQ)に共有したいデータセットとテーブルを作ります。
- BQ上にデータセットとテーブルの作成し、データを入れます
- 今回は、
share_dataset_Publisher
データセットを作成し2つのテーブルを定義しました
Publisher側のBQ画面
- Analytics HubでExchangeを作成
- Analytics Hubにてエクスチェンジを作成
- リージョンは、日本(大阪・東京)に対応
- Subscriberユーザーもここで権限設定
Exchange作成画面
- Analytics Hubにてエクスチェンジを作成
- Listingsを作成
- Listingsを画面より以下を設定し作成
- 表示名
- 共有データセット
- 下りデータ
Listing設定画面
- Listingsを画面より以下を設定し作成
- Listingsの確認
- Exchangeの画面よりリスティングを確認
Publisher側のExchange画面
- Exchangeの画面よりリスティングを確認
Subscriber側の操作
- Subscriber側のGoogleCloud環境にて、Analytics Hubよりリスティングの検索を選択
検索画面 - 先程作成したlisting名で検索・データセットをプロジェクトに追加を選択
追加確認画面 - 接続するプロジェクト名とリンクデータセット名を確認
確認画面 - BigQuery(BQ)の画面より、共有されたデータセットを確認とクエリ実行
- 接続時のリンクデータセット名でBQ上に表示される
BQデータセット画面
BQ実行画面
- 接続時のリンクデータセット名でBQ上に表示される
利用して感じたポイント
- 共有されたデータセットは、読み取り専用となるため
INSERT
やUPDATE
などの操作は行えません - 料金体系について
- Analytics Hubの利用料金:無料
- ストレージ料金:Publisher側のGoogle Cloud環境へ課金
- クエリ実行料金:Subscriber側のGoogle Cloud環境へ課金
- 外部テーブルを共有する際、テーブル作成時に「Cloud リソース接続を使用して BigLake テーブルを作成する」をチェックをつけないとSubscriberが参照できないため注意が必要
チュートリアルを通して、簡単にデータセットの共有やリスト追加・削除が行える印象を持ちました。また、リスティングではドキュメントなども記載できるため、このデータがどのようなデータであるかをSubscriberが確認でき取捨選択できる点は非常に良いなと感じました。
おわりに
本記事では、Analytics Hubを用いてGoogle Cloudのプロジェクト間でデータの共有を行いました。
チュートリアルを通して以下のような特徴を持っていると感じました。
- Listingによって管理することでデータセットの共有権限をPublisher側で握ることができ管理しやすい点
- Publicなデータセットを登録することで、自社の持つデータとかけ合わせて新たなビジネスへ拡大できる点
- Subscriber側が自身の環境に必要なデータを選び導入できるとともに、ストレージ料金を気にすることなく分析環境を簡単に構築できる点
この記事を参考に、社内でのデータ利活用やデータシェアリングを加速させるための一助になれば幸いです。最後までお読みいただきありがとうございました。
参考
株式会社D2C d2c.co.jp のテックブログです。 D2Cは、NTTドコモと電通などの共同出資により設立されたデジタルマーケティング企業です。 ドコモの膨大なデータを活用した最適化を行える広告配信システムの開発をしています。
Discussion