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
2
110
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.
構造化すれば怖くない 画像検索から始める木を見て森に入る勉強法
cuebic9bic
2
340
〜可視化からアクセス制御まで〜 BigQuery×Looker Studioで コスト管理とデータソース認証制御する方法
cuebic9bic
3
320
〜基礎から発展まで〜 BigQuery×Looker Studio のクエリコスト削減方法!
cuebic9bic
3
210
Looker Studio×BigQuery×スプレッドシートで爆速プロトタイピングする方法!
cuebic9bic
2
170
Terraform Registryで公開されているTerraform Modulesが便利だった件
cuebic9bic
2
1.4k
CUEBiC 会社説明資料 デザイナー向け
cuebic9bic
0
3.4k
trocco第5回ユーザー会_troccoとAmazon Redshiftで挑んだコンテンツマーケティングの分析基盤構築
cuebic9bic
1
820
CUEBiC社のデジタルメディア事業を支えるデータ分析基盤の変遷
cuebic9bic
1
780
CUEBiC Presentation デザイナー採用イベント用
cuebic9bic
0
110
Other Decks in Technology
See All in Technology
(非公式) AWS Summit Japan と 海浜幕張 の歩き方 2025年版
coosuke
PRO
1
300
TODAY 看世界(?) 是我們在看扣啦!
line_developers_tw
PRO
0
280
JSX - 歴史を振り返り、⾯⽩がって、エモくなろう
pal4de
3
1k
マルチテナント+マルチプロダクト SaaS への AI Agent の組み込み方
kworkdev
PRO
2
390
工具人的一生: 開發很多 AI 工具讓我 慵懶過一生
line_developers_tw
PRO
0
260
API の仕様から紐解く「MCP 入門」 ~MCP の「コンテキスト」って何だ?~
cdataj
0
170
Securing your Lambda 101
chillzprezi
0
300
Copilot Agentを普段使いしてわかった、バックエンド開発で使えるTips
ykagano
1
1.3k
OAuth/OpenID Connectで実現するMCPのセキュアなアクセス管理
kuralab
5
530
Amazon Q Developer for GitHubとAmplify Hosting でサクッとデジタル名刺を作ってみた
kmiya84377
0
3.5k
Navigation3でViewModelにデータを渡す方法
mikanichinose
0
110
ハノーバーメッセ2025座談会.pdf
iotcomjpadmin
0
120
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
GitHub's CSS Performance
jonrohan
1031
460k
For a Future-Friendly Web
brad_frost
179
9.8k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
137
34k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
How to train your dragon (web standard)
notwaldorf
92
6.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Balancing Empowerment & Direction
lara
1
310
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 ご清聴、ありがとうございました