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
AIエージェント時代のPlatform as a Product —— テックリードがPdMとして回す発見・導入・計測 / Platform as a Product in the AI Agent Era
toshi0607
1
540
10年欲しかった音楽管理アプリを、AIと一緒に作りはじめた
judau
1
190
データ品質を壊しながらSnowflakeのAIに分析させてみた
kawanago
0
320
企業の現実世界をグラフで写し取る
sansantech
PRO
0
220
BedrockとLambdaで作る リアルタイム進行型推理ゲーム
kawametho
0
120
DORA_Metrics.pdf
wagnerfusca
1
140
AWS DevOps Agent スキルをつかいこなそう / Master AWS DevOps Agent Skills
kinunori
2
640
Lambda MicroVMsは常駐サーバーの代わりに なるか? Kiro Crew を動かして検証してみた / Kiro Crew on Lambda MicroVMs
k_adachi_01
2
340
ScotSecure West 2026 - Glasgow
raybugg
0
210
プラットフォームを「作る」、 チームに「入り込む」
sansantech
PRO
0
400
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
350
Claude Designがめちゃくちゃ便利なので使ってほしい
diggymo
0
170
Featured
See All Featured
Paper Plane
katiecoart
PRO
4
53k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
The Cult of Friendly URLs
andyhume
79
7k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
590
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
470
Product Roadmaps are Hard
iamctodd
55
13k
Designing Experiences People Love
moore
143
24k
How Software Deployment tools have changed in the past 20 years
geshan
2
34k
The Curse of the Amulet
leimatthew05
3
15k
Building the Perfect Custom Keyboard
takai
2
890
Designing for Timeless Needs
cassininazir
1
510
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
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