Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
20260323_データ分析基盤でGeminiを使う話
Search
yuichi
March 23, 2026
Technology
290
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
20260323_データ分析基盤でGeminiを使う話
https://aiau.connpass.com/event/386555/
yuichi
March 23, 2026
More Decks by yuichi
See All by yuichi
20250219_一人データエンジニアだからこそ感じるアウトプットの重要性
1210yuichi0
0
760
20240621_フルリモート環境ざっくばらんにご紹介
1210yuichi0
0
1.3k
Other Decks in Technology
See All in Technology
Von-Neumann Machines, Dreams & The Futures of IT
ufried
0
110
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
870
CLIライブラリ開発を支える技術
htnabe
0
140
C#未経験の僕がAIに読めるコードを書かせるまで
maguroalternative
0
120
すぐできる衛星通信対応 あとは山奥に行くだけ
tatetate55
0
140
データ界隈LT祭 第1回LT登壇
taromatsui_cccmkhd
2
1.5k
Issue 駆動でスペシャリストの意図を届ける、AI 実装のアクセシビリティ向上
thkt
0
120
Reactの設計論
uhyo
24
14k
現場で役立つ技術負債の効果的な返済方法
masuda220
PRO
9
4.7k
人間はどの意思決定を手放せるのか
kawasima
15
7.6k
C#コードの結合を可視化する Roslyn解析による設計改善と リファクタリング判断
dora56
0
230
エージェントはローカル、検証はMicroVM — Lambda MicroVMsでつくるServerless CI
fujioka6789
3
540
Featured
See All Featured
Leo the Paperboy
mayatellez
10
2.3k
Navigating Team Friction
lara
192
16k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
300
Art, The Web, and Tiny UX
lynnandtonic
304
22k
The Cost Of JavaScript in 2023
addyosmani
55
10k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Mind Mapping
helmedeiros
1
360
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
890
Git: the NoSQL Database
bkeepers
PRO
432
67k
Scaling GitHub
holman
464
140k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
520
Transcript
データ分析基盤で Gemini を使う話 Yuichi 1210yuichi0 1210yuichi0 #GoogleAIMeetupOsaka
BigQuery の AI.GENERATE 関数とは 関数ファミリーとユースケース システムに組み込む際の設計ポイント 使ってみた感想 この10 分でわかること 2
/ 16
システムに溜まった大量のテキストデータ、どう扱っていますか? カスタマーレビューのネガポジを全件チェックしたい 人手でのラベリングはもう限界 ▶︎ 「全レコードをGemini で評価できたら?」 分析対象の抽出 評価・属性の付与 システムDB ⽣成AI
こんなニーズ、ありませんか? 3 / 16
BigQuery からVertex AI 経由でGemini を呼び出せる関数 BigQuery テーブル AI.GENERATE 関数 Vertex
AI Gemini 評価結果 型付き 1. SQL だけで完結 BigQuery の中で処理実行が完結する 2. 全件一括処理 テーブルの全レコードをGemini が1 行ずつ評価 3. 型付き出力 output_schema でSTRUCT 型として受け取れるので後続処理がシンプル AI.GENERATE 関数 とは 4 / 16
SQL だけで完結できる with base as ( select text_column, ai.generate( 'レビューから感情スコアと評価理由を分析して'
|| text_column, output_schema => 'score INT64, reason STRING' ) as ai_res from reviews ) select text_column, ai_res.score, ai_res.reason from base こんな結果が得られる レビュー文 score reason 「デザインが非常に洗練されていて… 初期設定に少し時間がかかったのが残念で す。 」 80 デザインは高評価だが、セットアップの難易度がマイナス 要因 「注文してから届くまでが遅すぎます… 二度と利用しません。 」 15 配送遅延・梱包の不満、リピート意向も低い 「コスパ最高です!この価格でこの機能性は文句なし。 」 95 価格・機能・操作性すべてにポジティブな評価 実際にやってみた 5 / 16
テキスト ⾮構造化 AI.GENERATE 関数 評価テーブル score 列など BI ダッシュボード ▶︎
ネガティブレビューの急増をすぐ検知できる ネガティブレビュー⽐率(⽉次推移) 1 ⽉ 2 ⽉ 3 ⽉ 4 ⽉ 5 ⽉ 6 ⽉ 50 45 40 35 30 25 20 15 10 5 0 ネガティブ率 (%) 4 月に急増 → アラートで即検知・対応できる AI ラベリング前は「なんとなく悪い気がする」で終わっていたものが、数値で追えるようになる ラベリング後のデータをBI ダッシュボードに繋げると 6 / 16
旧(ML.GENERATE_TEXT 関数) 出力は固定のJSON 文字列 型が不確定 → パース処理が必要 新(AI.GENERATE 関数) ai.generate(
prompt, output_schema => 'sentiment STRING, score INT64' ) → 指定した型のSTRUCT で返ってくる 対応型:STRING 、INT64 、FLOAT64 、BOOL 、ARRAY 、STRUCT 型付きで返ってくるから後処理が楽 7 / 16
SQL の中で、使用モデルを指定可能 select ai.generate( ~, endpoint => 'gemini-2.5-flash', 状況に応じたモデル選択 モデル
コスト 速度 おすすめ用途 gemini-2.5-pro 高 遅い 複雑な推論が必要な場合 gemini-2.5-flash 低 速い 通常の分類・ラベリング 分類・ラベリング用途なら flash で十分 モデルのライフサイクルは注視 用途に応じてGemini モデルを指定可能 8 / 16
汎用 関数 用途 AI.GENERATE 要約・翻訳・抽出・分類。output_schema で型指定 AI.GENERATE_TEXT テーブル→ テーブル。Claude 等も利用可
AI.GENERATE_TABLE 複数項目の構造化抽出 AI.GENERATE_BOOL/INT/DOUBLE 型を絞ったシンプル版 マネージド(軽量) 関数 用途 AI.IF WHERE / JOIN に直書き AI.SCORE スコアリング(内部最適化あり) AI.CLASSIFY ラベルリストを渡すだけ エンベディング 関数 用途 AI.EMBED テキスト/ 画像→ ベクトル AI.SIMILARITY 類似度スコア AI.SEARCH セマンティック検索 目的別に使い分けるAI 関数 9 / 16
with customer_reviews as ( select 101 as review_id, 'デザインが洗練されていて最高です!ただ、バッテリーの持ちがもう少し良ければ完璧でした。' as
review_text union all select 102, '期待外れ。動作が重すぎて使い物になりません。返品を検討しています。' union all select 103, '普通の製品です。可もなく不可もなくといったところ。' ) select review_id, ai.generate( concat('このレビューの感情を分析してください: ', review_text), output_schema => 'sentiment STRING, confidence_score FLOAT64, key_points ARRAY<STRING>', endpoint => 'gemini-2.5-flash' ).* from customer_reviews 非構造化テキストが型付きの構造化データに変わる。 sentiment 列でそのままBI のフィルタ・集計に使える id sentiment confidence_score key_points 101 mixed 0.95 [" 洗練されたデザイン", " バッテリーの持ち"] 102 negative 0.95 [" 期待外れ", " 動作が重すぎる", " 返品を検討"] 103 neutral 0.95 [" 普通の製品", " 可もなく不可もなく"] ユースケース①:レビュー感情分析 10 / 16
with user_comments as ( select 1 as comment_id, 'この記事、非常に参考になりました!ありがとうございます。' as
comment_text union all select 2, '【限定】スマホで月収100万円!?今すぐこちらのURLをクリック! http://example.com' union all select 3, 'この作者はアホなのか?レベルが低すぎて話にならない。' ) select comment_id, ai.generate( concat('このコメントがスパム・誹謗中傷・不適切な内容かどうか判定してください: ', comment_text), output_schema => 'is_anomalous BOOL, reason STRING, severity INT64', endpoint => 'gemini-2.5-flash' ).* from user_comments reason で判定根拠も取得。 severity でモデレーション優先度をBI 上に可視化できる id is_anomalous reason severity 1 false 肯定的なフィードバック。問題なし 0 2 true 高収入を謳いURL クリックを促す典型的なスパム 5 3 true 誹謗中傷・侮辱・攻撃的な言葉を含む 5 ユースケース②:異常コメント抽出 11 / 16
評価対象データのみ プロンプト管理テーブル ソーステーブル AI.GENERATE 関数 AI 評価ディメンションテー ブル ファクトテーブル BI
ダッシュボード 責務の切り出し プロンプト管理テーブル: プロンプトをSQL にハードコードせず、マスタとして管理 AI 評価ディメンションテーブル: AI の出力結果を格納するテーブルを独立 メリット: 後続のBI で「新しい評価項目を追加したい」という要望が出た際も、システム全体を作り直す ことなく、プロンプトや評価テーブルの拡張のみで柔軟に対応可能 データパイプラインに組み込む 12 / 16
AI.GENERATE 関数はトークン課金 — 全件再実行すると費用が跳ね上がる 既に評価済みのレコードはスキップ、新規分だけ実行する増分設計が必須 増分更新やBigQuery のWHERE 句で実現できる 実装の考え方 評価テーブルに結果が存在するレコードは処理対象から除外
定期バッチで1 日1 回実行するだけでコストを最小化 コスト最適化と増分更新 13 / 16
よかった SQL だけで完結。Python スクリプト不要 output_schema で型付き出力が想像以上に便利 flash でも分類精度は十分実用的 パイプラインに組み込んで定期実行できる 気をつけポイント
プロンプトが甘いと出力がブレる → 3 点セット(指示・フォーマット・判断基準)が必要 コストのトラッキングがわかりにくい 増分更新を最初から設計しておかないと後で痛い目を見る 生成AI が判定できないケースも許容する 実際に触れてみて 14 / 16
「AI.GENERATE 関数、使ってみませんか?」 SQL で全レコードをGemini で評価できる時代に 15 / 16
Thank you Yuichi 1210yuichi0 1210yuichi0