Slide 1

Slide 1 text

〜Looker Studioの限界を超える!〜 BigQueryのリモート関数で実現する Looker Studioのインタラクティブ化 株式会社キュービック テクノロジーエキスパートセンター Tech Lead/データエンジニア 尾﨑勇太 2025.06.24 開示範囲:公開ドキュメント 
 1

Slide 2

Slide 2 text

自己紹介 2 株式会社キュービック 役割:Tech Lead/データエンジニア 名前: 尾﨑 勇太(おざき ゆうた) 覚え方:尾崎豊(おざきゆたか)と一字違い 業務領域 「データに関わる全て」

Slide 3

Slide 3 text

よくあるモニタリングの課題 3 可視化はゴールではなくスタート・・・・ ・発散ベースの要件で収束しない ・玄人しか使えない ・誰が言ったか>利便性 ・浸透/定着に時間がかかる ・可視化と解釈できる人材育成は別問題 ・貢献利益が見えずらい

Slide 4

Slide 4 text

仕組み化で解決/軽減できないか? 4 共通項は「データの解釈」ができるかどうかという点 ・発散ベースの要件で収束しない ・玄人しか使えない ・誰が言ったか>利便性 ・浸透/定着に時間がかかる ・可視化と解釈できる人材育成は別問題 ・貢献利益が見えずらい

Slide 5

Slide 5 text

5 ツールを導入したい 予算をとってからこ い!! 予算を取りたい 実績が必要だ!! PoCをしたい!! 成果が出るかわからな い施策やるな!! だったらPoC させろよ!! 予算を取れ!! データ人材なら一度は経験する流れ ※あくまで個人の主張です。所属企業とは関係がございません

Slide 6

Slide 6 text

6 そんな時は 隙間時間で爆速でミニマムで技術検証して もう作っちゃったんでとサジェストをし プロトタイプの導入実績を添える

Slide 7

Slide 7 text

7 ツールを導入したい 予算をとってからこ い!! 予算を取りたい 実績が必要だ!! すでに作った!! 効果は出ている!! すぐ内製で作るな! 代替ツールも検討!! だったら最初から導入 させろよ!! いますぐ検証!! こうなる確率はグッと上がる

Slide 8

Slide 8 text

8 まずは調査から

Slide 9

Slide 9 text

9 Gemini in BigQueryのデータキャンバス機能 ▷自然言語を使用してデータの検索、結合、クエリ、可視化を行うことができる機能 BigQuery Studio上でのみ実行可能 Google Cloud 「BigQuery データ キャンバスで分析する」 https://cloud.google.com/bigquery/docs/data-canvas?hl=ja 検索 クエリ 可視化 選択したテーブルに SQL クエリを生成する メタデータから該当テーブルを検索 可視化またはプロンプトで可視化結果の編集 結合 テーブルに検索結果を追加 BigQuery周辺でインサイト抽出できるサービスは?

Slide 10

Slide 10 text

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周辺でインサイト抽出できるサービスは?

Slide 11

Slide 11 text

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ツールでインタラクティブにインサイト抽出できるサービスは?

Slide 12

Slide 12 text

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呼び出し ❌ ❌ ❌ ✅

Slide 13

Slide 13 text

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呼び出し ❌ ❌ ❌ ✅

Slide 14

Slide 14 text

LT内容 14 1.BigQueryのリモート関数を設定する 2.Looker StudioをWEB UI化する

Slide 15

Slide 15 text

15 BIからAPI通信して戻り値を 再表示できれば良い

Slide 16

Slide 16 text

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 「技術的に」こういうことができるはずだ・・・

Slide 17

Slide 17 text

BigQueryのリモート関数とは? 17 BigQueryから外部関数(クラウド関数など)を呼び出せる仕組み 端的にいうと:SQLからCloud Run functionsなどを呼び出すことが可能 もっというと:SQLでAPIの戻り値を擬似的に受け取ることが可能 制約:利用には外部接続コネクションの事前設定が必要 Cloud functions BigQuery Remote function 😈魔改造へのルートはここにあったのです😈 💀無計画に試行すると悲惨なことになるのでご利用は計画的に💀

Slide 18

Slide 18 text

18 よしあとは爆速で仕組み化す るだけだ!!

Slide 19

Slide 19 text

19 コンソール上にそれらしい箇所がない Google Cloud_リモート関数 https://cloud.google.com/bigquery/docs/remote-functions?hl=ja と思ったが・外部接続コネクションの設定箇所がない

Slide 20

Slide 20 text

20 28日後・・・・

Slide 21

Slide 21 text

21 背水の陣 登壇エントリーして、当日までに検証を終わらせる

Slide 22

Slide 22 text

22 時間がない・・・

Slide 23

Slide 23 text

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()

Slide 24

Slide 24 text

24 キタぁああああああああ

Slide 25

Slide 25 text

25 接続さえできるようになればこっちのもの リモート関数を作成する ・外部接続コネクション ・Cloud Run functionsのCALL リモート関数をLooker Studioから呼び出す ・カスタムクエリを設定

Slide 26

Slide 26 text

26 地味にハマったところ コネクション作成時にデフォルトで作成されるがサービスアカウントがいない Cloud Run functionsの起動権限を付与する必要があったが・・・

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

30 そこからはサクサク進み Looker Studio✖Remote functions(リモート関数) Remote functions(リモート関数) Cloud functions BigQuery Remote function Looker Studio custom Query Data Source UPDATE RESPONSE Looker Studio custom Query

Slide 31

Slide 31 text

31 土台となる疎通確認までは成功!! 🎉🎉Looker Studio✖Remote functions(リモート関数)でWEB UI化🎉🎉 Looker Studio custom Query

Slide 32

Slide 32 text

32 リモート関数を呼ぶときの注意点 エラーになるとクエリの実行時間が停止しない 💀危険:いきなりLooker Studioなどから試行 🉐推奨:BigQueryのコンソール上から動作確認する

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

34 展望など EX.Gemini in BigQueryのデータキャンバスの拡張 ▷コンソール以外からの参照を可能に EX.メタデータ変更時のモデルの性能比較 ▷スクラッチの場合との性能の差分を見ながら個別最適が可能に Looker Studio custom Query Data Source UPDATE ポテンシャル

Slide 35

Slide 35 text

35 こんな妄想も・・・ BIツール同士で5・7・5の掛け合いとか大喜利させたりとか Tableau Looker Studio custom Query Data Source UPDATE Tableau custom SQL Data Source UPDATE

Slide 36

Slide 36 text

36 まとめ BigQuery周辺でインサイト抽出できるサービスは? ▷データキャンバスやML.GENERATE_TEXTなどが存在する BIツールでインタラクティブにインサイト抽出できるサービスは? ▷Gemini in LookerやTableau Pulseなどが存在する スクラッチでBIツールでインタラクティブなUIを実現したい場合は? ▷BigQueryのリモート関数を使用する  🉐SQLでリモート関数をCALLすることでCloud Run functionsや  生成AIモデルによるBigQueryのデータリソースの解析が可能に リモート関数を使用する際に注意することは? ▷権限、エラー、実行回数に気を付ける  ⚠用法・容量を守ってPoCを進めましょう

Slide 37

Slide 37 text

37 まなび 外部接続コネクションが作れなくて流れた時間:28日 外部接続コネクションを作れてからの検証時間:1時間 ダラダラ検証はダメ。決めてやり切る!!

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

39 ご清聴、ありがとうございました