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
330
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
Rust で関数型ドメインモデリング
takonda
0
170
CTO Night|NotionのAIエージェントとFDE
kzkhykw1991
0
240
古い指輪から広がった JAVA コミュニティ とのつながり
yamad
0
130
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
840
Claude の新機能を、 出た日に触って社内に届けるまで
rfdnxbro
1
190
JAWS-UGグッズ職人仕事の流儀
kentapapa
0
120
hackers_champloo_2026_tidb
makocchi
0
170
QA4AI 2026-Oct 生成AI時代の品質保証
tokuty
1
900
Conditional PED-ANOVA: Hyperparameter Importance in Hierarchical & Dynamic Search Spaces
pfn
PRO
0
140
PHPカンファレンス関西の招待状 / Invitation to PHP Conference Kansai
ykanoh
0
210
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
190
DBについての基礎説明(MySQL編) - コロプラ 2026年度 新卒研修
colopl
0
130
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
53
4k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.1k
Visualization
eitanlees
153
17k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
WENDY [Excerpt]
tessaabrams
14
40k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
580
Optimizing for Happiness
mojombo
378
71k
Navigating Team Friction
lara
192
16k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
540
A Soul's Torment
seathinner
8
3.8k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
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