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
Redashダッシュボード・クエリ作成の時短方法
Search
Kentaro Ueda
May 28, 2021
Programming
0
880
Redashダッシュボード・クエリ作成の時短方法
https://redash-meetup.connpass.com/event/211861/
での発表資料です
Kentaro Ueda
May 28, 2021
Tweet
Share
More Decks by Kentaro Ueda
See All by Kentaro Ueda
DMM総合トップのグロースハック - ABテスト高速化・精度向上への取り組み -
kentaroueda36
2
1.8k
信頼性の高いRedashクエリを作る方法を考える
kentaroueda36
0
42
Other Decks in Programming
See All in Programming
Reduxモダナイズ 〜コードのモダン化を通して、将来のライブラリ移行に備える〜
pvcresin
2
690
GraphQL×Railsアプリのデータベース負荷分散 - 月間3,000万人利用サービスを無停止で
koxya
1
1.1k
『毎日の移動』を支えるGoバックエンド内製開発
yutautsugi
2
190
ポスターセッション: 「まっすぐ行って、右!」って言ってラズパイカーを動かしたい 〜生成AI × Raspberry Pi Pico × Gradioの試作メモ〜
komofr
0
970
XP, Testing and ninja testing ZOZ5
m_seki
3
310
そのpreloadは必要?見過ごされたpreloadが技術的負債として爆発した日
mugitti9
2
3k
開発者への寄付をアプリ内課金として実装する時の気の使いどころ
ski
0
350
株式会社 Sun terras カンパニーデック
sunterras
0
230
LLMとPlaywright/reg-suitを活用した jQueryリファクタリングの実際
kinocoboy2
4
670
CSC509 Lecture 03
javiergs
PRO
0
330
タスクの特性や不確実性に応じた最適な作業スタイルの選択(ペアプロ・モブプロ・ソロプロ)と実践 / Optimal Work Style Selection: Pair, Mob, or Solo Programming.
honyanya
3
140
なぜあの開発者はDevRelに伴走し続けるのか / Why Does That Developer Keep Running Alongside DevRel?
nrslib
3
370
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
9
610
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
850
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
A Modern Web Designer's Workflow
chriscoyier
697
190k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
32
2.2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.1k
Statistics for Hackers
jakevdp
799
220k
The World Runs on Bad Software
bkeepers
PRO
71
11k
A Tale of Four Properties
chriscoyier
160
23k
The Cult of Friendly URLs
andyhume
79
6.6k
Transcript
© DMM.com Redashダッシュボード・クエリ作成の時短方法 合同会社 DMM.com プラットフォーム事業本部 総合トップ開発部 送客グループ 2021/5/21 @Redash meetup v7.0.0
上田 健太郎
© DMM.com 自己紹介 1 • 2017年入社 Compass ID: KentaroUeda0138 •
総合トップページの開発・KPI 改善に従事 • 上田 健太郎 Twitterハッシュタグ: #redashmeetup
© DMM.com 総合トップとは 2 • 50以上のサービスにユーザーを送客する、DMM 一丁目一番地のページ • 月間5,000万PV以上 ※
版権の都合上、一部画像を伏せております Twitterハッシュタグ: #redashmeetup
© DMM.com Redashの活用状況・課題 • 総合トップのKPI計測・A/Bテスト・分析に活用 3 • ダッシュボードの枚数が増え、作成/運用コストの増大が課題に • KPIツリーやA/Bテストの事例はこちら:
DMM meetup#22 (DMM総合トップのグロースハック) • 要因別に対策方法 (時短方法) をご紹介 Twitterハッシュタグ: #redashmeetup
© DMM.com ダッシュボード作成/運用コストの増大要因① • 個々のクエリの汎用性の低さ (=深堀りできない) 4 • クエリのforkが頻発し、管理が困難になった •
例: サイトAのCTRは集計できるが、サイトBのCTRは集計できない Twitterハッシュタグ: #redashmeetup
© DMM.com 5 • クエリパラメータ • フィルター • rollup関数 対策:
Redash・SQLの機能を活用し、クエリの汎用性を高める ・クエリに変数を埋め込むための機能 ・文字列/日付/数値/プルダウンメニュー など、様々な形式に対応 Twitterハッシュタグ: #redashmeetup
© DMM.com 6 • クエリパラメータ • フィルター • rollup関数 対策:
Redash・SQLの機能を活用し、クエリの汎用性を高める ・クエリに変数を埋め込むための機能 ・文字列/日付/数値/プルダウンメニュー など、様々な形式に対応 ・URLの指定、like文との併用も可能 ・case式と併用することで、 条件式をパラメータ化することも可能 Twitterハッシュタグ: #redashmeetup
© DMM.com 7 対策: Redash・SQLの機能を活用し、クエリの汎用性を高める • クエリパラメータ • フィルター •
rollup関数 Twitterハッシュタグ: #redashmeetup ・集計結果をフィルターする機能 (=クエリの再実行が不要) ・テーブル出力だけでなく、グラフでも利用できる
© DMM.com 8 対策: Redash・SQLの機能を活用し、クエリの汎用性を高める ・集計結果をフィルターする機能 (=クエリの再実行が不要) 出力値に番号を振っておくと、 ソートされて見やすくなる •
クエリパラメータ • フィルター • rollup関数 ・テーブル出力だけでなく、グラフでも利用できる Twitterハッシュタグ: #redashmeetup
© DMM.com ・AWS Athena (Presto) や Google BigQuery などに実装させている関数 ・group
by に rollup(“カラム名”) を指定すると、当該カラム粒度の全体分を集計できる 対策: Redash・SQLの機能を活用し、クエリの汎用性を高める • クエリパラメータ • フィルター • rollup関数 9 Twitterハッシュタグ: #redashmeetup
© DMM.com ダッシュボード作成/運用コストの増大要因② • 過去の資産を再利用できいていなかった 10 • テーブルのパーティションをwhere句に指定 • 過去の資産
= 多くのクエリに頻出するテンプレ的なSQL処理 • 集計日の前日をwhere句に指定 • データマート化できていない便利な集計 Twitterハッシュタグ: #redashmeetup
© DMM.com • クエリスニペット • Query Results 対策: Redashの機能を活用し、過去の資産を再利用する ・特定のキーワードに対してスニペットを登録できる
・集計の前日指定「__cur: substr(cast(date_add('day', -1, current_date) as varchar), 1, 10)」のように登録 スニペット名に「__」など付けておと 迷惑になりにくい 11 Twitterハッシュタグ: #redashmeetup
© DMM.com 12 ・既存クエリの集計結果に対してクエリできる強力な機能 ・権限の制約がなければ、ぜひ利用したい機能 引用元: https://redash.io/help/user-guide/querying/query-results-data-source 対策: Redashの機能を活用し、過去の資産を再利用する •
クエリスニペット • Query Results Twitterハッシュタグ: #redashmeetup
© DMM.com ダッシュボード作成/運用コストの増大要因③ • ダッシュボードの構成を、クエリを書きながら同時に考えていた 13 • 結果、途中で没になるクエリが発生したり、 運用開始後に指標の粒度を変えたくなりforkする事態が発生 Twitterハッシュタグ:
#redashmeetup
© DMM.com 対策: まず、ダッシュボードの構成図を書く • ダッシュボードの全体像を意識しつつ、本当に必要なクエリのみを作成できる 14 • クエリ・検算に迷いが無くなり、構成図無しよりも早く作成できる Twitterハッシュタグ:
#redashmeetup
© DMM.com ダッシュボード作成/運用コストの増大要因④ • 集計の一部をRedashで行い、残りを別ツール (スプレッドシート) に分けていた 15 • 例:
KPIツリーの集計・可視化 • 可視化としては上出来だったものの、 更新・計算の再現が困難に Twitterハッシュタグ: #redashmeetup
© DMM.com 16 <中略> ダッシュボード化のコツ (KPI ツリーの場合) ・ツリーの構成図は別に作っておく ・ダッシュボードの構成図を元に作成する ・ウィジェットは大粒度→小粒度の順に並べる
対策: 集計をRedashで完結させる • KPIのようなツリー状のものも、ウィジェットの粒度・配置を工夫すれば、 可視化に問題が生じなかった • 更新・計算の再現コストを大幅に削減 Twitterハッシュタグ: #redashmeetup ・フィルターを活用する
© DMM.com まとめ 17 • Redashダッシュボード・クエリ作成の時短方法をご紹介 • クエリの汎用性を高める (Redash・SQLの機能を活用) •
ダッシュボードの構成図を書く • エンジニアは知っていても、非エンジニアは知らないことがある → 是非拡散してください • 過去のクエリ資産を再利用する (Redashの機能を活用) • 集計はできるだけRedashで完結させる Twitterハッシュタグ: #redashmeetup