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
Looker Studio×BigQuery×スプレッドシートで爆速プロトタイピングする方法!
Search
CUEBiC Inc.
April 25, 2025
Technology
420
3
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
2
180
BigQueryのTVFを型駆動で自動生成する世界
cuebic9bic
0
260
AIに頼りすぎない新人育成術
cuebic9bic
3
900
反脆弱性(アンチフラジャイル)とデータ基盤構築
cuebic9bic
3
600
Tableau API連携の罠!?脱スプシを夢見たはずが、逆に依存を深めた話
cuebic9bic
3
380
今だから言えるセキュリティLT_Wordpress5.7.2未満を一斉アップデートせよ
cuebic9bic
2
1.1k
BigQuery Remote FunctionでLooker Studioをインタラクティブ化
cuebic9bic
4
760
構造化すれば怖くない 画像検索から始める木を見て森に入る勉強法
cuebic9bic
2
570
〜可視化からアクセス制御まで〜 BigQuery×Looker Studioで コスト管理とデータソース認証制御する方法
cuebic9bic
3
500
Other Decks in Technology
See All in Technology
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
0
110
Datadog の学び方 - あるいは、オブザーバビリティを学ぶとは何か
mananyuki
1
560
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
3
860
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
0
130
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
890
Snapshot Testing in Practice: Predictable and Reliable SwiftUI Views
fespinoza
0
210
実践!Cloud Run ハンズオン!! / Cloud Run handson
y0hgi
2
260
夫婦で子育てするための育児標準化
codmoninc
PRO
0
210
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
4
2.3k
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
210
⾮構造化データを価値に変える AI エージェント基盤とその組織
ivry_presentationmaterials
0
150
QA4AI 2026-Oct 生成AI時代の品質保証
tokuty
1
640
Featured
See All Featured
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
580
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
850
Music & Morning Musume
bryan
48
7.4k
Building an army of robots
kneath
307
47k
New Earth Scene 8
popppiees
4
2.7k
It's Worth the Effort
3n
188
29k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
550
Amusing Abliteration
ianozsvald
1
340
Designing for Timeless Needs
cassininazir
1
520
How to Ace a Technical Interview
jacobian
280
24k
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 ご清聴、ありがとうございました