こんにちは、KIYONOエンジニアです。
本日はBigQueryからCloudSQLのデータ参照を紹介します。
Webアプリケーションでよく使われるCloudSQLのデータを分析したい…ただ分析に関してはCloudSQLで集計するより、BigQueryの方が扱いやすかったり、また分析データはBigQueryで一元管理するという企業様も多いかと思います。そんな方々の参考になればと思います。
BigQueryからCloudSQLのデータ参照をしたいと思った背景
弊社プロダクトMAGNET SFAのデータ(CloudSQL)をBigQueryでデータ分析したいというニーズがありました。一方、BigQueryのデータをCloudSQLに「データ連携」という選択肢を取ると、CloudSQLのデータ更新がリアルタイムに反映されない、またはリアルタイム反映には整合性の担保が難しいという課題がありました。
CloudSQL上でもデータ分析は可能ですが、BIとの相性が悪かったり、RDBの特性上、正規化されていて毎回JOINが必要になるのが面倒でした。
そこで今回弊社では、以下リンクの通り、BigQueryからCloudSQLのデータを参照しに行く方法を採用しました。

今後の展望
BigQueryからCloudSQLのデータ参照するという機能を応用して、SFAのチャット開発を予定してます。
先日、ADK(Agent Development Kit)がGoogle Cloud Next @ラスベガスで報告されましたね。現地での熱について色々以下にまとめておりますのでよろしければ併せて参照ください。
ADKとは、Googleが提供するAIエージェントを構築するためのオープンソースフレームワークです。特徴としては、Googleサービスと連携するためのToolsが豊富に用意されていることです。
設定方法
ここからは設定方法の解説をします。以下公式ページにもやり方の記載はありますが、ややわかりにくい部分もあるので解説となります。

Cloud SQL 接続の作成
- Google Cloud コンソールで [BigQuery] ページに移動します。
2. 左側のナビゲーションメニューから 添付のを選択し、[データを追加] をクリックします。
3. [データソースを検索] で、使用しているCloudSQLデータベースに併せて「mysql」または「postgresql」と入力します。
4. [特徴量データソース]を選択します。
5. [外部データに関する BigQuery テーブルの設定(フェデレーション)]を選択します。
6. 接続情報を入力して、[接続を作成]します
7. 添付の流れで接続情報ができていることを確認できます。権限設定でサービスアカウントIDを使用するのでコピーしておきましょう。
必要権限の付与
大きく①BigQueryがCloudSQLにアクセスするための権限と、②作成した外部接続をユーザが使うための権限 の2つを設定する必要があります。
①については、[IAM]より先ほど、コピーしたサービスアカウントIDをプリンシパルとし、「Cloud SQL クライアント」という事前定義ロールを付与します。
②については添付の導線より、[共有]をクリックします。
そうすると、以下添付の通り、IAM設定できるのでBigQuery Connection Userの事前定義ロールを対象のユーザーに付与します。(リソース単位ではなく、プロジェクト単位でIAM付与してももちろん問題ないです。)
クエリの実行
SELECT
*
FROM
EXTERNAL_QUERY(
"プロジェクトID.リージョン.接続ID",
"SELECT * FROM データベース名.テーブル名"
);
上記の形式でSQLを書くと実行できます。
最後に
いかがだったでしょうか。本日BigQueryからCloudSQLのデータを参照する方法を解説しました。参考になればと思います。
コメント