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
Looker Studio×BigQuery×スプレッドシートで爆速プロトタイピングする方法!
Search
CUEBiC Inc.
April 25, 2025
Technology
360
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Looker Studio×BigQuery×スプレッドシートで爆速プロトタイピングする方法!
CUEBiC Inc.
April 25, 2025
More Decks by CUEBiC Inc.
See All by CUEBiC Inc.
BigQueryのメタデータ管理を、スクラッチで やったはなし
cuebic9bic
1
160
BigQueryのTVFを型駆動で自動生成する世界
cuebic9bic
0
220
AIに頼りすぎない新人育成術
cuebic9bic
3
820
反脆弱性(アンチフラジャイル)とデータ基盤構築
cuebic9bic
3
480
Tableau API連携の罠!?脱スプシを夢見たはずが、逆に依存を深めた話
cuebic9bic
3
370
今だから言えるセキュリティLT_Wordpress5.7.2未満を一斉アップデートせよ
cuebic9bic
2
1k
BigQuery Remote FunctionでLooker Studioをインタラクティブ化
cuebic9bic
3
680
構造化すれば怖くない 画像検索から始める木を見て森に入る勉強法
cuebic9bic
2
530
〜可視化からアクセス制御まで〜 BigQuery×Looker Studioで コスト管理とデータソース認証制御する方法
cuebic9bic
3
470
Other Decks in Technology
See All in Technology
Bedrock AgentCore RuntimeでAuth0 Changelog調査AIをアップグレードした話
t5u8a5a
1
140
AIの性能が向上しても未解決な組織の重大問題は何か?/An Unsolved Organizational Problem in the Age of AI
moriyuya
4
670
【セミナー資料】Claude Code をセキュアに使うための考え方と設定の勘どころ / Claude Code Webinar 20260616
masahirokawahara
2
310
プロダクト開発から業務改善コンサルまで。事業全体へ「染み出す」ことで広がるエンジニアの可能性
ham0215
0
130
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
1k
SONiCで構築・運用する生成AI向けパブリッククラウドネットワーク ~実装編~
sonic
0
210
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
スキルと MCP ツール、責務をどう分けるか? AI が迷わないインターフェース設計の戦略
cdataj
1
1.1k
Chainlitで作るお手軽チャットUI
ynt0485
0
240
AIソロプレナー時代に2ヶ月で20人増員した事業創造会社の開発組織の話
miyatakoji
0
660
AIエージェントが名古屋の猛暑からあなたを守る
happysamurai294
0
120
中期計画、2回作ってみた ~業務委託と正社員、両方の視点から~
demaecan
1
750
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Done Done
chrislema
186
16k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
170
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
310
Music & Morning Musume
bryan
47
7.2k
Practical Orchestrator
shlominoach
191
11k
Leo the Paperboy
mayatellez
7
1.8k
Paper Plane (Part 1)
katiecoart
PRO
0
8.9k
Building AI with AI
inesmontani
PRO
1
1.1k
Accessibility Awareness
sabderemane
1
140
A Soul's Torment
seathinner
6
2.9k
Transcript
〜初級から魔改造まで〜 Looker Studio×BigQuery×スプレッドシート で爆速プロトタイピングする方法! 株式会社キュービック テクノロジーエキスパートセンター Tech Lead/データエンジニア 尾﨑勇太 2025.04.18
開示範囲:公開ドキュメント 1
自己紹介 2 株式会社キュービック 役割:Tech Lead/データエンジニア 名前: 尾﨑 勇太(おざき ゆうた) 覚え方:尾崎豊(おざきゆたか)と一字違い
業務領域 「データに関わる全て」
わたくしごとですが Tableau DATA Saber始めました 3 2025年4月1日からTry中🔥
LT内容 4 1.初級編:スプレッドシートで爆速プロトタイプ作成 2.中級編:カスタムクエリで独自データソース作成 3.上級編:クエリストリングでURLパラメータを渡してフィルタ 4.鬼編:UDFにパラメータを渡して動的に集計する
最軽量のデータ連携 5 アーキテクチャ データ収集 データ可視化 軽量データであればデータ出しの段階でDWHにデータ蓄積しなくともアウトプットイメージや 分析軸の合意形成ができる データ蓄積
6 これで済んだらデータエンジニ アはいらねぇんだよな
幾多のSpread Sheet使いを挫折させてきた 7 ・何か妖精さんが毎日データをとってきてくれる ▷節子それ自動化やなくて手動や ・1000万セルの限界 ・表示まで5分以上かかるページ ・再読み込みしたら壊れるグラフ ・データ統合でしか結合できない ・計算フィールドの条件分岐に上限がある
LT内容 8 1.初級編:スプレッドシートで爆速プロトタイプ作成 2.中級編:カスタムクエリで独自データソース作成 3.上級編:クエリストリングでURLパラメータを渡してフィルタ 4.鬼編:UDFにパラメータを渡して動的に集計する
サーバレス化によるデータ連携 9 アーキテクチャ データ収集 データ可視化 GCPのサーバレスアーキテクチャなどでBigQueryへのデータ蓄積部分は自動化しつつ Looker Studioからカスタムクエリで独自データソースを作成することで生産性を向上 データ蓄積 BigQuery
Cloud Run functions Cloud Scheduler
10 ちゃんとBQ蓄積できると理想 系だけど、BIツールでETLせざ る得ないパターンもあるよね
どこでデータ加工するのが正解なのか? 11 新規でデータ蓄積が 必要か? SQLで 加工可能か? YES YES NO BI上で動的な変更が
あるか? GAS YES NO Dataform カスタムSQL YES 冗長な収集が必要か? (アカウント違いなど) スケジュール実行が 必要か? NO NO Google Colaboratory BigQueryの既存デー タを加工するか? サービスアカウント 認証は必要か? NO NO Cloud Run functions Workflows NO YES BigQuery YES
ここで差がつく データエンジニアリング 12
具体的なケースを考える 13 1.時系列の売上データを10%〜◯%まで増加を見れるようにしたい 2.最新のマスタで前日までの最新データが見たい
14 BigQuery 集計値をテーブルにカラム追加 ▷仮で200%まで用意しておいて、後から考えよう 要望1:時系列の売上データを10%〜◯%まで増加を見れるようにしたい 集計パターンをそれぞれローデータとして蓄積 ▷5%刻みでテーブルを用意しよう 間違いではないが非合理的なソリューション例
15 BigQuery Looker Studioの計算フィールドで動的に集計 ▷取得した売上データ×パラメータで計算フィールドを作成 要望1:時系列の売上データを10%〜◯%まで増加を見れるようにしたい カスタムクエリ中で、パラメータで動的にフィルタ ▷データソース生成時に再集計をかける シンプルなソリューション例 一工夫したソリューション例
16 要望2:最新のマスタで前日までの最新データが見たい 間違いではないが非合理的なソリューション例 BigQuery 常に◯年分のデータを最新のマスタで洗い替え ▷めちゃくちゃ重い・・・ マスタ更新があった際に、過去まで遡求して更新 ▷過去のマスタが書き変わってもしょうがないよね ▷本当に???
17 要望2:最新のマスタで前日までの最新データが見たい シンプルなソリューション例 BigQuery 前日から1ヶ月間のデータを最新のマスタで洗い替え ▷ユーザー/運用者が見たいスコープを絞り、品質を担保する 品質が担保される期間を前提にモニタリングする ▷中長期のデータが参照したい場合と分析軸を分ける
どこでデータ加工するのが最適 なのかはもう一度考えよう 18
LT内容 19 1.初級編:スプレッドシートで爆速プロトタイプ作成 2.中級編:カスタムクエリで独自データソース作成 3.上級編:クエリストリングでURLパラメータを渡してフィルタ 4.鬼編:UDFにパラメータを渡して動的に集計する
Looker Studioを仮想的にAPI化 20 アーキテクチャ ページ内表示 パラメータをクエリストリングで連携することで、Looker Studioのカスタムクエリの集計条件 を描画前に調整し、ユーザーがみたい閾値で可視化が可能 BigQuery ページ参照
https://lookerstudio.google.com/u/0/reporting/54f a38e1-b459-4606-9a20-d86359802901/page/p_mnpnn34y nd?params={"ds76.roas_times_param":"0.5"} 表示要素演算 ユーザー フィルタ結果
イメージ 21 https://lookerstudio.google.com/u/0/r eporting/54fa38e1-b459-4606-9a20-d863 59802901/page/p_mnpnn34ynd?params={"d s76.roas_times_param":"0.5"} SELECT campaign_id, campaign_name, ad_group_id,
ad_group_name, impressions, clicks, cost, revenue, revenue / NULLIF(cost, 0) AS roas FROM your_dataset.your_table WHERE revenue / NULLIF(cost, 0) >= @roas_times_param ORDER BY roas DESC ROASはデフォルト値 クエリストリングでデ フォルト値を更新 データソースを再集計
22 動きを見ながらユーザーとアウ トプットを爆速で詰められそう
23 まだだ、まだ足りない SQLの限界に挑戦したい
LT内容 24 1.初級編:スプレッドシートで爆速プロトタイプ作成 2.中級編:カスタムクエリで独自データソース作成 3.上級編:クエリストリングでURLパラメータを渡してフィルタ 4.👹鬼編:UDFにパラメータを渡して動的に集計する🔥
SQLで複雑な処理をUDFでjavascriptで書いてしまう 25 アーキテクチャ ページ内表示 計算フィールドやカスタムクエリ内でのメンテナンス性を考慮し、集計や分岐条件のコアロ ジックをUDFに切り出しつつ、結果のみを動的に可視化できるようにする BigQuery ページ参照 https://lookerstudio.google.com/u/0/reporting/54fa38e1-b4 59-4606-9a20-d86359802901/page/p_mnpnn34ynd?params
={"ds76.roas_times_param":"0.5"} 表示要素演算 ユーザー フィルタ結果 UDF(ユーザー定義関数の呼び出し)
イメージ 26 CREATE OR REPLACE FUNCTION `your-project.your_dataset.label_roas` (roas_time s_param FLOAT64,
roas FLOAT64) RETURNS STRING LANGUAGE js AS R""" if (roas < roas_times_param ) { return `ROAS < ${Math.round( roas_times_param * 100)}%`; } else if (roas >= roas_times_param ) { return `ROAS ≧ ${Math.round( roas_times_param * 100)}%`; } else { return '不明'; } """; ルーティーンのクエリ BigQuery カスタムクエリ パラメータ閾値更新 SELECT campaign_id, campaign_name, ad_group_id, ad_group_name, impressions, clicks, cost, revenue, revenue / NULLIF(cost, 0) AS roas, `your-project.your_dataset.label_roas`( @roas_ times_param, revenue / NULLIF(cost, 0)) AS roas_label FROM your_dataset.your_table ORDER BY roas DESC
まとめ 27 今回は初級から鬼編までさまざまなアプローチを紹介しました。 本格的な運用やメタデータ管理の観点でよりbetterな方法論はたくさんあると思い ます。だけれども、そこに至るまでの課題が多いのが業界あるあるですよね。。。 常に考えたいこと:最小工数で成果を出す方法はないのか? そのための、「プロトタイプ開発でQuick Winする方法」を 今回はご紹介しました。
28
データマート TROCCOがあればそんなにやり込まなくても良い説 29 BigQuery データ収集はノーコードでOK DWH連携だって朝飯前 頑張れば動的な変更も可能 BigQuery 整形もTROCCOのUI上で完結
30 ご清聴、ありがとうございました