Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
BigQuery Remote FunctionでLooker Studioをインタラクティブ化
Search
CUEBiC Inc.
June 24, 2025
Technology
3
460
BigQuery Remote FunctionでLooker Studioをインタラクティブ化
データの可視化後の課題である「データの解釈」を自動で行えるAIサービスの紹介とBigQuery Remote FunctionとLooker Studioでスクラッチで開発した事例を解説します
CUEBiC Inc.
June 24, 2025
Tweet
Share
More Decks by CUEBiC Inc.
See All by CUEBiC Inc.
BigQueryのメタデータ管理を、スクラッチで やったはなし
cuebic9bic
1
110
BigQueryのTVFを型駆動で自動生成する世界
cuebic9bic
0
140
AIに頼りすぎない新人育成術
cuebic9bic
3
460
反脆弱性(アンチフラジャイル)とデータ基盤構築
cuebic9bic
3
280
Tableau API連携の罠!?脱スプシを夢見たはずが、逆に依存を深めた話
cuebic9bic
3
290
今だから言えるセキュリティLT_Wordpress5.7.2未満を一斉アップデートせよ
cuebic9bic
2
260
構造化すれば怖くない 画像検索から始める木を見て森に入る勉強法
cuebic9bic
2
450
〜可視化からアクセス制御まで〜 BigQuery×Looker Studioで コスト管理とデータソース認証制御する方法
cuebic9bic
3
380
〜基礎から発展まで〜 BigQuery×Looker Studio のクエリコスト削減方法!
cuebic9bic
3
290
Other Decks in Technology
See All in Technology
DMMの検索システムをSolrからElasticCloudに移行した話
hmaa_ryo
0
370
Kotlinで型安全にバイテンポラルデータを扱いたい! ReladomoラッパーをAIと実装してみた話
itohiro73
3
270
MCP サーバーの基礎から実践レベルの知識まで
azukiazusa1
23
10k
Mackerelにおけるインシデント対応とポストモーテム - 現場での工夫と学び
taxin
0
110
今日から使える AWS Step Functions 小技集 / AWS Step Functions Tips
kinunori
4
320
AIとの協業で実現!レガシーコードをKotlinらしく生まれ変わらせる実践ガイド
zozotech
PRO
2
340
文字列操作の達人になる ~ Kotlinの文字列の便利な世界 ~ - Kotlin fest 2025
tomorrowkey
2
520
Gov-JAWS4回_某団体でのAmazon Bedrock活用検証で見えた“使う側”の課題精度よりもリテラシー
takuma818t
0
120
触れるけど壊れないWordPressの作り方
masakawai
0
680
戦えるAIエージェントの作り方
iwiwi
22
11k
QAEが生成AIと越える、ソフトウェア開発の境界線
rinchsan
0
390
メタプログラミングRuby読書会の活用
willnet
1
120
Featured
See All Featured
Balancing Empowerment & Direction
lara
5
720
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
YesSQL, Process and Tooling at Scale
rocio
174
15k
jQuery: Nuts, Bolts and Bling
dougneiner
65
7.9k
Facilitating Awesome Meetings
lara
57
6.6k
A better future with KSS
kneath
239
18k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Speed Design
sergeychernyshev
32
1.2k
Fireside Chat
paigeccino
41
3.7k
Building a Modern Day E-commerce SEO Strategy
aleyda
44
8k
Bash Introduction
62gerente
615
210k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Transcript
〜Looker Studioの限界を超える!〜 BigQueryのリモート関数で実現する Looker Studioのインタラクティブ化 株式会社キュービック テクノロジーエキスパートセンター Tech Lead/データエンジニア 尾﨑勇太
2025.06.24 開示範囲:公開ドキュメント 1
自己紹介 2 株式会社キュービック 役割:Tech Lead/データエンジニア 名前: 尾﨑 勇太(おざき ゆうた) 覚え方:尾崎豊(おざきゆたか)と一字違い
業務領域 「データに関わる全て」
よくあるモニタリングの課題 3 可視化はゴールではなくスタート・・・・ ・発散ベースの要件で収束しない ・玄人しか使えない ・誰が言ったか>利便性 ・浸透/定着に時間がかかる ・可視化と解釈できる人材育成は別問題 ・貢献利益が見えずらい
仕組み化で解決/軽減できないか? 4 共通項は「データの解釈」ができるかどうかという点 ・発散ベースの要件で収束しない ・玄人しか使えない ・誰が言ったか>利便性 ・浸透/定着に時間がかかる ・可視化と解釈できる人材育成は別問題 ・貢献利益が見えずらい
5 ツールを導入したい 予算をとってからこ い!! 予算を取りたい 実績が必要だ!! PoCをしたい!! 成果が出るかわからな い施策やるな!! だったらPoC
させろよ!! 予算を取れ!! データ人材なら一度は経験する流れ ※あくまで個人の主張です。所属企業とは関係がございません
6 そんな時は 隙間時間で爆速でミニマムで技術検証して もう作っちゃったんでとサジェストをし プロトタイプの導入実績を添える
7 ツールを導入したい 予算をとってからこ い!! 予算を取りたい 実績が必要だ!! すでに作った!! 効果は出ている!! すぐ内製で作るな! 代替ツールも検討!!
だったら最初から導入 させろよ!! いますぐ検証!! こうなる確率はグッと上がる
8 まずは調査から
9 Gemini in BigQueryのデータキャンバス機能 ▷自然言語を使用してデータの検索、結合、クエリ、可視化を行うことができる機能 BigQuery Studio上でのみ実行可能 Google Cloud 「BigQuery
データ キャンバスで分析する」 https://cloud.google.com/bigquery/docs/data-canvas?hl=ja 検索 クエリ 可視化 選択したテーブルに SQL クエリを生成する メタデータから該当テーブルを検索 可視化またはプロンプトで可視化結果の編集 結合 テーブルに検索結果を追加 BigQuery周辺でインサイト抽出できるサービスは?
10 BigQuery単体でもVertex AIのGeminiモデルを呼び出せる モデルの作成 CREATE OR REPLACE MODEL `your_project.dataset.gemini_model` OPTIONS
( MODEL_TYPE = 'TEXT_GENERATION', MODEL_PATH = 'projects/your_project/locations/us-central1/publishers/google/models/gemini-1.0-pro', REMOTE_MODEL = TRUE ); SELECT * FROM ML.GENERATE_TEXT( MODEL `your_project.dataset.gemini_model`, STRUCT('売上の上位 20位は?' AS prompt) ); ML.GENERATE_TEXT経由でモデルを呼び出し Google Cloud 「Gemini モデルと ML.GENERATE_TEXT 関数を使用してテキストを生成する」 https://cloud.google.com/bigquery/docs/generate-text-tutorial-gemini?hl=ja BigQuery周辺でインサイト抽出できるサービスは?
11 Gemini in Lookerを使用することで、GeminiがSQLを自動生成し、 LookerのExploreを叩き、自然言語で要約・説明・指示生成が可能 https://cloud.google.com/gemini/docs/looker/overview?hl=ja Tableau AIを活用したTableau Pulseを使うことでサジェストに対 してデータのインサイト抽出が可能
https://www.salesforce.com/analytics/tableau/pulse/ Looker Studio Proに契約することで、Gemini in Lookerを使用可能 BI✖AI的なのはすでにあり、課金すれば実現もできそう BIツールでインタラクティブにインサイト抽出できるサービスは?
12 まとめると Tableau Pulse Gemini in Looker Gemini in BigQuery
ML_GENERATE_TEXT 主な機能 KPI変化の検知/通知 Tableau上で自然言語で探索 Looker上で自然言語で探索 BQ UI上でSQL自動生成・要約 GeminiをSQLから直接呼び出し 使える場所 Tableau Cloud/Desktop Looker(旧Looker)UI BigQueryコンソール上限定 BigQuery SQL(Anywhere) モデル Einstein GPT(Salesforce) Gemini (Vertex AI 統合) Gemini (UI統合) Gemini (Vertex AI Preview) UIで自然言語入力 🔺(自由入力不可) ✅ ✅ ❌ 自然言語 → SQL生成 ❌ ✅ ✅ ✅ 自然言語 → 要約・説明 🔺(自由入力不可) ✅ ✅ ✅ Looker Studio 等から呼べる? ❌ 🔺(Proのみ可) ❌ ✅ Remote Functionで叩ける? ❌ ❌ ❌ ✅ API呼び出し ❌ ❌ ❌ ✅
13 良い所取りしたい Tableau Pulse Gemini in Looker Gemini in BigQuery
ML_GENERATE_TEXT 主な機能 KPI変化の検知/通知 Tableau上で自然言語で探索 Looker上で自然言語で探索 BQ UI上でSQL自動生成・要約 GeminiをSQLから直接呼び出し 使える場所 Tableau Cloud/Desktop Looker(旧Looker)UI BigQueryコンソール上限定 BigQuery SQL(Anywhere) モデル Einstein GPT(Salesforce) Gemini (Vertex AI 統合) Gemini (UI統合) Gemini (Vertex AI Preview) UIで自然言語入力 🔺(自由入力不可) ✅ ✅ ❌ 自然言語 → SQL生成 ❌ ✅ ✅ ✅ 自然言語 → 要約・説明 🔺(自由入力不可) ✅ ✅ ✅ Looker Studio 等から呼べる? ❌ 🔺(Proのみ可) ❌ ✅ Remote Functionで叩ける? ❌ ❌ ❌ ✅ API呼び出し ❌ ❌ ❌ ✅
LT内容 14 1.BigQueryのリモート関数を設定する 2.Looker StudioをWEB UI化する
15 BIからAPI通信して戻り値を 再表示できれば良い
16 Cloud functions BigQuery Remote function Looker Studio custom Query
Tableau Data Source UPDATE Cloud functions Tableau custom SQL Data Source UPDATE BigQuery Remote function RESPONSE RESPONSE 「技術的に」こういうことができるはずだ・・・
BigQueryのリモート関数とは? 17 BigQueryから外部関数(クラウド関数など)を呼び出せる仕組み 端的にいうと:SQLからCloud Run functionsなどを呼び出すことが可能 もっというと:SQLでAPIの戻り値を擬似的に受け取ることが可能 制約:利用には外部接続コネクションの事前設定が必要 Cloud functions
BigQuery Remote function 😈魔改造へのルートはここにあったのです😈 💀無計画に試行すると悲惨なことになるのでご利用は計画的に💀
18 よしあとは爆速で仕組み化す るだけだ!!
19 コンソール上にそれらしい箇所がない Google Cloud_リモート関数 https://cloud.google.com/bigquery/docs/remote-functions?hl=ja と思ったが・外部接続コネクションの設定箇所がない
20 28日後・・・・
21 背水の陣 登壇エントリーして、当日までに検証を終わらせる
22 時間がない・・・
23 しょうがないので力技を使います 解決策:Google ColaboratoryからBigQuery Connection APIで作成 # BigQuery Connection API
のサービスクライアントを作成 service = build('bigqueryconnection', 'v1', credentials=credentials) # 接続の親パスと接続名(※マスク済み) project_id = "your-project-id" location = "asia-northeast1" connection_id = "your-connection-id" parent = f"projects/{project_id}/locations/{location}" # 接続の本体(今回は cloudResource タイプ) body = { "friendlyName": "BQ Remote Function Connection", "cloudResource": {} } # 外部接続の作成 response = service.projects().locations().connections().create( parent=parent, connectionId=connection_id, body=body ).execute()
24 キタぁああああああああ
25 接続さえできるようになればこっちのもの リモート関数を作成する ・外部接続コネクション ・Cloud Run functionsのCALL リモート関数をLooker Studioから呼び出す ・カスタムクエリを設定
26 地味にハマったところ コネクション作成時にデフォルトで作成されるがサービスアカウントがいない Cloud Run functionsの起動権限を付与する必要があったが・・・
27 しょうがないのでこちらもColab経由で付与 解決策:Google ColaboratoryからCliコマンドを実行 # サービスアカウントで gcloud CLI を初期化 import
os os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = bq_json_file # gcloud の初期化 !gcloud auth activate-service-account --key-file="$GOOGLE_APPLICATION_CREDENTIALS" # Cloud Run サービスへの IAM 権限付与(※マスク済み) !gcloud run services add-iam-policy-binding your-service-name \ --member="serviceAccount:
[email protected]
" \ --role="roles/run.invoker" \ --region=asia-northeast1 \ --project=your-project-id
28 そこからはサクサク進み BigQuery Remote functions(リモート関数)✖Cloud Run functions CREATE OR REPLACE
FUNCTION `project_id.dataset.remote_function_test`(input STRING) RETURNS STRING REMOTE WITH CONNECTION `project_id.asia-northeast1.bq_remote_functions` OPTIONS (endpoint = 'https://asia-northeast1-project_id.cloudfunction s.net/test', max_batching_rows = 0); plies}) 外部接続関数 Cloud Run functionsエンドポイント Cloud functions BigQuery Remote function Looker Studio custom Query Data Source UPDATE RESPONSE
29 そこからはサクサク進み import functions_framework from flask import jsonify @functions_framework.http def
hello_http(request): request_json = request.get_json(silent=True) calls = request_json.get("calls", []) replies = [] for row in calls: name = row[0] if row else "World" replies.append(f"Hello {name}!") return jsonify({"replies": replies}) Cloud functions
30 そこからはサクサク進み Looker Studio✖Remote functions(リモート関数) Remote functions(リモート関数) Cloud functions BigQuery
Remote function Looker Studio custom Query Data Source UPDATE RESPONSE Looker Studio custom Query
31 土台となる疎通確認までは成功!! 🎉🎉Looker Studio✖Remote functions(リモート関数)でWEB UI化🎉🎉 Looker Studio custom Query
32 リモート関数を呼ぶときの注意点 エラーになるとクエリの実行時間が停止しない 💀危険:いきなりLooker Studioなどから試行 🉐推奨:BigQueryのコンソール上から動作確認する
33 リモート関数を呼ぶときの注意点 1レコード単位で評価される 💀危険:数千レコード以上をSELECT/UPDATEするような処理内容 🉐推奨:更新対象を絞るか、テーブル関数(TVF)内で配列でCALLする SELECT id, remote_func(col) AS result
FROM my_table SELECT x.id, x.result FROM UNNEST( remote_func_batch( ARRAY( SELECT AS STRUCT id, col FROM my_table ) ) ) AS x
34 展望など EX.Gemini in BigQueryのデータキャンバスの拡張 ▷コンソール以外からの参照を可能に EX.メタデータ変更時のモデルの性能比較 ▷スクラッチの場合との性能の差分を見ながら個別最適が可能に Looker Studio
custom Query Data Source UPDATE ポテンシャル
35 こんな妄想も・・・ BIツール同士で5・7・5の掛け合いとか大喜利させたりとか Tableau Looker Studio custom Query Data Source
UPDATE Tableau custom SQL Data Source UPDATE
36 まとめ BigQuery周辺でインサイト抽出できるサービスは? ▷データキャンバスやML.GENERATE_TEXTなどが存在する BIツールでインタラクティブにインサイト抽出できるサービスは? ▷Gemini in LookerやTableau Pulseなどが存在する スクラッチでBIツールでインタラクティブなUIを実現したい場合は?
▷BigQueryのリモート関数を使用する 🉐SQLでリモート関数をCALLすることでCloud Run functionsや 生成AIモデルによるBigQueryのデータリソースの解析が可能に リモート関数を使用する際に注意することは? ▷権限、エラー、実行回数に気を付ける ⚠用法・容量を守ってPoCを進めましょう
37 まなび 外部接続コネクションが作れなくて流れた時間:28日 外部接続コネクションを作れてからの検証時間:1時間 ダラダラ検証はダメ。決めてやり切る!!
38 参考文献/出典 Classmethod 「知らないと危ないかも? BigQuery リモート関数の意外な落とし穴」 https://dev.classmethod.jp/articles/gcp-bigquery-remote-functions-caution/ 株式会社カホエンタープライズ 「よくわかる GoogleCloud
#3:BigQuery Remote Functionsを使って分かち書きと感情分析する」 https://note.com/kaho_enterprise/n/ned5d68f78aae 伊藤忠テクノソリューションズ( CTC) 「Looker Studio、BigQuery、Vertex AI を利用した生成 AIチャットボット搭載ダッシュボード」 https://www.ctc-g.co.jp/solutions/google/blog/8.html
39 ご清聴、ありがとうございました