Slide 1

Slide 1 text

© DMM.com Redashダッシュボード・クエリ作成の時短方法 合同会社 DMM.com プラットフォーム事業本部 総合トップ開発部 送客グループ 2021/5/21 @Redash meetup v7.0.0 上田 健太郎

Slide 2

Slide 2 text

© DMM.com 自己紹介 1 ● 2017年入社 Compass ID: KentaroUeda0138 ● 総合トップページの開発・KPI 改善に従事 ● 上田 健太郎 Twitterハッシュタグ: #redashmeetup

Slide 3

Slide 3 text

© DMM.com 総合トップとは 2 ● 50以上のサービスにユーザーを送客する、DMM 一丁目一番地のページ ● 月間5,000万PV以上 ※ 版権の都合上、一部画像を伏せております Twitterハッシュタグ: #redashmeetup

Slide 4

Slide 4 text

© DMM.com Redashの活用状況・課題 ● 総合トップのKPI計測・A/Bテスト・分析に活用 3 ● ダッシュボードの枚数が増え、作成/運用コストの増大が課題に ● KPIツリーやA/Bテストの事例はこちら: DMM meetup#22 (DMM総合トップのグロースハック) ● 要因別に対策方法 (時短方法) をご紹介 Twitterハッシュタグ: #redashmeetup

Slide 5

Slide 5 text

© DMM.com ダッシュボード作成/運用コストの増大要因① ● 個々のクエリの汎用性の低さ (=深堀りできない) 4 ● クエリのforkが頻発し、管理が困難になった ● 例: サイトAのCTRは集計できるが、サイトBのCTRは集計できない Twitterハッシュタグ: #redashmeetup

Slide 6

Slide 6 text

© DMM.com 5 ● クエリパラメータ ● フィルター ● rollup関数 対策: Redash・SQLの機能を活用し、クエリの汎用性を高める ・クエリに変数を埋め込むための機能 ・文字列/日付/数値/プルダウンメニュー など、様々な形式に対応 Twitterハッシュタグ: #redashmeetup

Slide 7

Slide 7 text

© DMM.com 6 ● クエリパラメータ ● フィルター ● rollup関数 対策: Redash・SQLの機能を活用し、クエリの汎用性を高める ・クエリに変数を埋め込むための機能 ・文字列/日付/数値/プルダウンメニュー など、様々な形式に対応 ・URLの指定、like文との併用も可能 ・case式と併用することで、  条件式をパラメータ化することも可能 Twitterハッシュタグ: #redashmeetup

Slide 8

Slide 8 text

© DMM.com 7 対策: Redash・SQLの機能を活用し、クエリの汎用性を高める ● クエリパラメータ ● フィルター ● rollup関数 Twitterハッシュタグ: #redashmeetup ・集計結果をフィルターする機能 (=クエリの再実行が不要) ・テーブル出力だけでなく、グラフでも利用できる

Slide 9

Slide 9 text

© DMM.com 8 対策: Redash・SQLの機能を活用し、クエリの汎用性を高める ・集計結果をフィルターする機能 (=クエリの再実行が不要) 出力値に番号を振っておくと、 ソートされて見やすくなる ● クエリパラメータ ● フィルター ● rollup関数 ・テーブル出力だけでなく、グラフでも利用できる Twitterハッシュタグ: #redashmeetup

Slide 10

Slide 10 text

© DMM.com ・AWS Athena (Presto) や Google BigQuery などに実装させている関数 ・group by に rollup(“カラム名”) を指定すると、当該カラム粒度の全体分を集計できる 対策: Redash・SQLの機能を活用し、クエリの汎用性を高める ● クエリパラメータ ● フィルター ● rollup関数 9 Twitterハッシュタグ: #redashmeetup

Slide 11

Slide 11 text

© DMM.com ダッシュボード作成/運用コストの増大要因② ● 過去の資産を再利用できいていなかった 10 ● テーブルのパーティションをwhere句に指定 ● 過去の資産 = 多くのクエリに頻出するテンプレ的なSQL処理 ● 集計日の前日をwhere句に指定 ● データマート化できていない便利な集計 Twitterハッシュタグ: #redashmeetup

Slide 12

Slide 12 text

© DMM.com ● クエリスニペット ● Query Results 対策: Redashの機能を活用し、過去の資産を再利用する ・特定のキーワードに対してスニペットを登録できる ・集計の前日指定「__cur: substr(cast(date_add('day', -1, current_date) as varchar), 1, 10)」のように登録 スニペット名に「__」など付けておと 迷惑になりにくい 11 Twitterハッシュタグ: #redashmeetup

Slide 13

Slide 13 text

© DMM.com 12 ・既存クエリの集計結果に対してクエリできる強力な機能 ・権限の制約がなければ、ぜひ利用したい機能 引用元: https://redash.io/help/user-guide/querying/query-results-data-source 対策: Redashの機能を活用し、過去の資産を再利用する ● クエリスニペット ● Query Results Twitterハッシュタグ: #redashmeetup

Slide 14

Slide 14 text

© DMM.com ダッシュボード作成/運用コストの増大要因③ ● ダッシュボードの構成を、クエリを書きながら同時に考えていた 13 ● 結果、途中で没になるクエリが発生したり、  運用開始後に指標の粒度を変えたくなりforkする事態が発生 Twitterハッシュタグ: #redashmeetup

Slide 15

Slide 15 text

© DMM.com 対策: まず、ダッシュボードの構成図を書く ● ダッシュボードの全体像を意識しつつ、本当に必要なクエリのみを作成できる 14 ● クエリ・検算に迷いが無くなり、構成図無しよりも早く作成できる Twitterハッシュタグ: #redashmeetup

Slide 16

Slide 16 text

© DMM.com ダッシュボード作成/運用コストの増大要因④ ● 集計の一部をRedashで行い、残りを別ツール (スプレッドシート) に分けていた 15 ● 例: KPIツリーの集計・可視化 ● 可視化としては上出来だったものの、  更新・計算の再現が困難に Twitterハッシュタグ: #redashmeetup

Slide 17

Slide 17 text

© DMM.com 16 <中略> ダッシュボード化のコツ (KPI ツリーの場合) ・ツリーの構成図は別に作っておく ・ダッシュボードの構成図を元に作成する ・ウィジェットは大粒度→小粒度の順に並べる 対策: 集計をRedashで完結させる ● KPIのようなツリー状のものも、ウィジェットの粒度・配置を工夫すれば、  可視化に問題が生じなかった ● 更新・計算の再現コストを大幅に削減 Twitterハッシュタグ: #redashmeetup ・フィルターを活用する

Slide 18

Slide 18 text

© DMM.com まとめ 17 ● Redashダッシュボード・クエリ作成の時短方法をご紹介 ● クエリの汎用性を高める (Redash・SQLの機能を活用) ● ダッシュボードの構成図を書く ● エンジニアは知っていても、非エンジニアは知らないことがある → 是非拡散してください ● 過去のクエリ資産を再利用する (Redashの機能を活用) ● 集計はできるだけRedashで完結させる Twitterハッシュタグ: #redashmeetup