先日受験した Professional Cloud Data Engineer 認定試験 は不合格でしたが、9月に再挑戦する予定です。そのため、今回も、私が勉強した内容をアウトプットしていきます。
今回は、BigQuery連携クエリ、BigQueryデータクリーンルーム、BigQueryエンティティ解決について説明します!
ぜひ、最後までご覧いただけると嬉しいです!
BigQuery連携クエリ
BigQueryでデータ分析を行う際、「まず全てのデータをBigQueryのストレージにロード(コピー)しないといけない」わけではありません。実は、その手間を省き、外部データベースにあるデータを直接、最新のデータでクエリできる強力な機能があります。それが連携クエリです。
この記事では、連携クエリの基本から、具体的な使い方までを解説します。
連携クエリとは?
連携クエリは、BigQueryからデータを移動させることなく、Cloud SQL (MySQL, PostgreSQL) や Cloud Spanner といった外部データベースに直接クエリを実行できる機能です。これにより、データのコピーやETL処理を行わずに、最新のデータにアクセスできます。また、BigQuery上で保持しているデータと外部データを統合して分析できるため、分散したシステムのデータを横断的に活用することが可能になります。さらに、データ移動が不要なためセキュリティリスクや運用コストを抑える効果も期待できます。
連携クエリの3つの強力なメリット
連携クエリには、主に3つの大きなメリットがあります。
1. 最新なデータへのアクセス
ETL処理には、データの抽出からロード完了までにタイムラグが発生します。そのため、分析対象は数時間前や1日前のデータになりがちです。連携クエリなら、外部データベース(Cloud SQL等)にある最新のライブデータに対して直接クエリを実行できるため、常に最新の状況に基づいた分析が可能になります。
2. パイプラインの簡素化
データを移動させるためのパイプライン(Dataflowなど)を構築・管理する必要がありません。これにより、インフラがシンプルになり、開発・運用コストを削減できます。
3. 異種データベース間の統合分析
連携クエリの真価は、BigQuery内のデータと外部データベースのデータを1つのクエリで結合(JOIN)できる点にあります。これまで分断されていたOLTP(Online Transaction Processing)とOLAP(Online Analytical Processing)の世界をシームレスに繋ぎ、高度な分析を実現します。
<統合分析の例>
- BigQuery:過去数年分の巨大な販売履歴データ
- Cloud SQL:最新の顧客マスタデータ
- Spanner:最新の在庫数や注文ステータス
これらを1つのクエリでJOINし、「過去の購買傾向と、現在の顧客ステータスや在庫状況を組み合わせた需要予測」といった分析が最新のデータで行えるようになります。ステータスを組み合わせた分析」を最新のデータで行う、といった高度な分析が簡単に実現できます。
仕組みと使い方
連携クエリは、EXTERNAL_QUERY
という非常にシンプルな関数を使って実行します。使い方はたったの2ステップです。
【ステップ1 外部接続の作成】
まず、BigQueryの管理画面からCloud SQLやSpannerのデータベースへの接続情報(外部データソース接続)を作成します。これは一度だけ行えばOKです。
【ステップ2 EXTERNAL_QUERY
関数でクエリを実行】
あとは、BigQueryからこの関数を使って、外部データベースで実行したいSQL文を送信するだけです。
<基本構文>
SELECT ...
FROM ...
JOIN EXTERNAL_QUERY(
'接続ID',
'外部データベースで実行したいSQLクエリ'
) AS alias
ON ...
ベストプラクティスと注意点
連携クエリは非常に強力ですが、万能ではありません。特性を理解して使いこなしましょう。
最適なユースケース
- 外部データが比較的小さい場合
マスタデータや設定テーブルなど、GB単位に収まるデータセットとの連携に最適です。 - データを絞り込んで取得する場合
EXTERNAL_QUERY
内のSQLでWHERE
句を使い、外部データベース側でしっかりデータ量を絞り込むことが重要です。これにより、BigQueryへのデータ転送量が減り、パフォーマンスとコストが向上します。 - リアルタイムなアドホック分析
最新のデータを使って、その場限りの分析を行いたい場合に真価を発揮します。
ETLを検討すべきケース
- 外部データが非常に巨大な場合:外部の巨大なテーブル全体に対して頻繁に集計・分析を行う場合は、従来通りデータをBigQueryのネイティブストレージにコピー(ETL)した方が、クエリのパフォーマンスとコスト面で有利になります。
BigQuery連携クエリのまとめ
連携クエリは、データベース間の壁を取り払い、データ分析の俊敏性と柔軟性を飛躍的に向上させる機能です。データの移動という手間と時間から解放され、より迅速な意思決定を実現するために、この強力な機能をぜひ活用してみてください。
BigQueryデータクリーンルーム
Google Cloudのデータクリーンルームは、機密性の高いデータを保護しながら、複数の組織やパートナー間で安全にデータを共有し、共同で分析を行うための強力なソリューションです。BigQueryの機能を活用することで、プライバシーを侵害するリスクを最小限に抑えつつ、データの価値を最大限に引き出すことが可能になります。
データクリーンルームとは?
データクリーンルームは、厳格なアクセス制御とプライバシー保護技術を適用した、隔離された分析環境です。この環境では、各参加者が自身の生データを直接相手に公開することなく、集計された分析結果のみを共有できます。
例えば、広告主と小売業者がそれぞれの顧客データを持ち寄り、個人が特定されない形で「どの広告がどの商品の購入につながったか」といったインサイトを得るために利用されます。
アーキテクチャ
BigQueryのデータクリーンルームは、データをコピーせずに安全に共有するための仕組みです。コンピューティングとストレージが分離されているBigQueryの特長を活かし、データ提供者は元データを一度共有するだけで、複数の利用者(サブスクライバー)に分析環境を提供できます。
このシステムは以下の要素で成り立っています。
- データクリーンルーム:データへの直接アクセスを防ぎ、許可された利用者のみがクエリを実行できる環境です。
- 共有リソース:クリーンルームで共有されるテーブルやビューなどのデータ本体です。
- リスティング:共有データの説明やサンプルクエリを含む、カタログのような情報です。
- リンク済みデータセット:利用者がアクセスするための、元データへの参照(シンボリックリンク)です。データのコピーは作成されません。
- 分析ルールとデータ下り(外向き)制御:提供者が設定するアクセス制限です。これにより、利用者が実行できるクエリの種類を限定したり、結果のコピーやエクスポートを防いだりすることで、データの機密性を保護します。
このアーキテクチャにより、データ提供者は厳格な管理下で安全にデータを共有し、利用者は許可された範囲でデータを分析することが可能になります。
主なユースケース
データクリーンルームは、特にプライバシーが重視される以下のような分野で活用されます。
- 広告効果測定:広告プラットフォームと広告主がデータを持ち寄り、広告キャンペーンの効果を分析します。
- 共同研究:医療機関や研究施設が、患者のプライバシーを保護しながら臨床データを共有し、新たな治療法の開発などに役立てます。
- サプライチェーン最適化:製造業者と小売業者が販売・在庫データを共有し、需要予測の精度向上や在庫の最適化を図ります。
BigQueryのデータクリーンルームを利用することで、企業はプライバシー規制を遵守しながら、パートナーとのデータコラボレーションを促進し、新たなビジネス価値を創出することができます。
制限事項
BigQueryデータクリーンルームには、安全なデータ共有を実現する上でいくつかの制限事項があります。
主な制限は以下の通りです。
- 分析ルールの対象:分析ルールはビューにしか適用できず、テーブルやマテリアライズドビューには設定できません。そのため、ルールなしでリソースを共有するとデータに直接アクセスされる可能性があります。
- 公開・検索の制限:
- データセット全体や、モデル、ルーティンは共有できません。
- 共有リソースはDataplexやData Catalogで検索できません。
INFORMATION_SCHEMA
(メタデータ)へのクエリは許可されません。
- プラットフォーム上の制約:
- 利用できるのは共有リージョンのみです。
- 1つのクリーンルームで共有できるリソースは最大100個です。
- BigQueryの標準的なデータ共有に適用される制限も引き継がれます。
これらの制約を理解した上で利用することが、安全かつ効果的な運用につながります。
BigQueryデータクリーンルームのまとめ
BigQueryデータクリーンルームは、プライバシーを保護しながら組織間で安全にデータを共有・分析できる強力な仕組みです。広告効果測定や医療分野での共同研究、サプライチェーン最適化など、幅広いユースケースで活用されています。これにより、企業は法規制を遵守しつつ、データ活用の幅を広げることができます。
BigQueryのデータクリーンルームは、安全性とビジネス価値の両立を実現する重要なソリューションといえるでしょう。
BigQueryエンティティ解決
企業が保有するデータは、CRM、販売、マーケティングなど様々なシステムに散在しがちです。その結果、「同じ顧客なのに異なるレコードが存在する」といったデータの重複や分断が発生し、顧客一人ひとりを正確に理解することが困難になります。
この課題を解決するのが、Google CloudのBigQueryエンティティ解決です。IDプロバイダー提供の照合ロジック/アルゴリズムをリモート関数で呼び出して、異なるデータソースにまたがる顧客レコードを照合し、重複を特定して、統合された顧客の全体像(シングルビュー)を構築します。
エンティティ解決とは
エンティティ解決とは、「同一人物(または同一企業、同一製品など)を異なるデータソースから識別し、統合するプロセス」を指します。例えば、
- Aシステムでは「佐藤 太郎」、Bシステムでは「佐藤 Taro」、Cシステムでは「T. Sato」と記録されている場合
- これらを同一人物として扱えるようにまとめることがエンティティ解決です。
ビジネスにおいては、顧客360度ビューを作成したり、正確な分析を行ったりするために不可欠な技術です。
エンティティ解決の仕組みと主な用途
エンティティ解決は、リモート関数の呼び出し時にマッチングパラメータを指定する方式で、指定されたデータソース内のレコードを比較します。氏名、住所、メールアドレス、電話番号といった情報を基に、それらがIDプロバイダーが定義する照合ルールにより判断し、マッチングさせます。
この機能により、以下のようなことが可能になります。
- 顧客理解の深化(360度ビュー):分断された顧客情報を統合し、行動や嗜好をより深く理解できます。
- マーケティングROIの向上:正確な顧客リストに基づき、パーソナライズされたアプローチや無駄な広告費の削減が実現します。
- コンプライアンスと不正検出:複数の記録を照合することで、不正行為のパターンを特定しやすくなります。
エンティティ解決の具体的な流れ(構成)
- エンドユーザー側で、IDプロバイダーのサービスアカウントに対して、入力データ(input dataset)への読み取りアクセスと、出力先(output dataset)への書き込みアクセスを付与。
- エンドユーザーはリモート関数(Remote Function)を呼び出し、マッチング用のパラメータとともにデータを送信。
- IDプロバイダー側が受け取ったデータをマッチング処理にかけ、結果を生成。
- 結果はエンドユーザーのプロジェクトの出力データセットに書き込まれます。
この方式により、データ移動を必要とせずインプレースで照合処理が実行され、ETLや追加のデータ転送費用を回避できます。
利用シナリオ
BigQuery のエンティティ解決は、以下のようなケースで活用できます。
- 顧客統合:複数システムの顧客情報を1人の顧客として集約。
- 不正検知:同一人物が複数のアカウントを作成している可能性を検出。
- マーケティング:ユーザーの行動履歴を統合し、パーソナライズ施策に活用。
BigQueryエンティティ解決のまとめ
BigQueryエンティティ解決は、分散・重複した顧客データを統合し、正確な「顧客の単一ビュー」を実現するソリューションです。
IDプロバイダー提供の照合ロジック/アルゴリズムを活用して、氏名や住所などの情報を照合し、同一人物を特定して重複を排除します。
これにより、顧客理解の深化、マーケティングROIの向上、不正検出の強化といったメリットが得られます。
企業はこの仕組みを活用することで、データに基づいたより正確で効果的な意思決定を推進できます。
まとめ
今回は、下記3点について説明しました。
- BigQuery連携クエリ
- BigQueryデータクリーンルーム
- BigQueryエンティティ解決
BigQueryは、単なるデータウェアハウスにとどまらず、外部データベースとの連携やプライバシーを重視したデータ共有、顧客データの高度な統合までを可能にする包括的なプラットフォームです。連携クエリにより、データ移動の手間なく俊敏な分析を実現でき、データクリーンルームでは安全かつ価値あるデータ活用を促進します。さらに、エンティティ解決を通じて顧客の単一ビューを構築し、ビジネスの意思決定を一段と精緻化できます。これらを組み合わせることで、企業は信頼性の高いデータ基盤を築き、競争優位性を強化することが可能となります。
これからも、Macのシステムエンジニアとして、日々、習得した知識や経験を発信していきますので、是非、ブックマーク登録してくれると嬉しいです!
それでは、次回のブログで!