kaizen platform における bigquery 活用事例 #bq_sushi tokyo #2
TRANSCRIPT
2015/11/19 #bq_sushi tokyo #2Yu KawabeKaizen Platform, Inc.
Kaizen Platform におけるBigQuery 活用事例Kaizen Platform におけるBigQuery 活用事例
Self introduction
Yu Kawabe• 2009 - 2014 RICOH Company, Ltd.
Production planning( 生産管理・生産企画 )Supply chain management
VBA, SQL Server• 2014 - Kaizen Platform, Inc.
Product ManagerBigQuery, MySQL, Python
• My hobby囲碁 ( 第 49 回学生本因坊ベスト 8)
Service Site Analysis
What is Kaizen Platform
Optimizer NetworkProvide the 3Cs: Content, Creative
and Conversations.
SaaS A/B Testing PlatformManages workflow of sourcing,
creating and optimizing the 3Cs.
Search
Social
Site Content
Content
Creative
Conversations
+
Display
サービスサイトのアクセス分析• ユーザーのアクセスログを BQ に送り続ける• BQ に貯まったログにクエリをたたく
- Visualization Tool へ連携- Adhoc に分析
User access Access log
Adhoc Analyze
Visualization
Google BigQuery の話 #gcpja by Naoya Itohttps://speakerdeck.com/naoya/google-bigquery-falsehua-number-gcpja
サービスサイトのアクセス OS 別• サービスサイトのアクセスを OS 別にカウント• クエリ結果を Re:dash で Visualize
- ブラウザ種別や時間帯別なども
サービスサイトのアクセス Browser 別
サービスサイトのアクセス 国別[fh-bigquery:geocode.geolite_city_bq_b2b] で国を判別 => visualize
ファネル分析各ユーザーがどのアクションまで到達したかを CASE WHEN 句でファネル定義
ファネル分析Visualization tool でユーザーの サインアップ時系列に集約ファネル毎の ユーザー数を可視化
アドホック分析RDB の集計データを Dimension table として使う例:報酬上位 10% のユーザーはサービス上でどのような行動をしているか?例: A/B テストの月間回数が下位 X% のカスタマーはどこで離脱してるか?
Dimension table(view)user_id reward_percentile
1 10
2 20
3 20
4 10
5 30
+ User Access log
summarizeCopied RDB main Table
App::BigQuery::Importer::MySQL
BQ でアクセスログ分析を行うメリット• Visualization tool 連携の柔軟性が高い• 集計内容を後から簡単に変更できる - Query でファネル定義• Adhoc に分析可能 - Dimension table と join - Time range の調整
PRODUCT for BasicWeb site
Optimization
Variations
OriginalA B
C D
The best variation!
Web Page A/B テスト
A/B テストのログ集計
Customer web site
Kaizen JS
End-user access
顧客サイトに貼られた JS タグで visit, conversion ログを収集サービス用は DynamoDB 、生ログを BQ に格納
Hourlydata
集計前の生ログを格納
サービスサイトから問い合わせ
ログ活用 live-ops
• 「自社の GA データと数値が若干ズレるのですが、 詳細データを調べてもらえませんか?」
• 「自社 IP は除いて評価したいのですが、可能ですか?」 ・ ・ ・これらの問い合わせには全て BQ で対応(BQ 導入前はストレージに zip してたので調査も一苦労。。。 )
ログ活用 重複送信の検知
Customer web site
Kaizen JS
集計前の生ログを格納
サービスサイトから問い合わせ
ログが重複送信されているケースが時折発生している=>BQ で検知できないか?
Kaizen JSよくあるケースはタグ二重貼り
End-user access
Hourlydata
ログの重複送信を検知① 同一 session で発生しているログの時刻を抽出② 閾値時間内に重複送信されている確率を算出
①
②
ログの重複送信を検知重複送信されている割合を A/B テスト毎に可視化
Product for AdvancedPRODUCT for AdvancedAd x Web
Optimization
Ad x Web A/B テストAd Optimization Web Optimization
Maximize the inbound Optimize with clicked banners
Kaizen Platform Optimization System Architecture http://www.slideshare.net/DaisukeTaniwaki/kaizen-platform-optimization-system-architecture
Ad x Web A/B テスト
Customer web site(LP)
Kaizen JS(Web)
サービスサイトから問い合わせ
Media site
Kaizen JS (Ad)
集計前の生ログを格納
Ad banner click LP へ遷移
Ad banner click => LP 到達時に Ad cookie(3rd party) & web cookie(1st party cookie) データを BQ へ格納
Hourlydata
・・・・・
AD x Web cookie sync
Kaizen JS (Ad)
Kaizen JS(Web)
重複あり
Ad x Web cookie sync
・・・・・
AD x Web cookie sync
AD
Web
Sync
Segment を集計時に加工する
• データは 1 Record / visit• Segment 情報は 1 カラムにカンマ区切りで格納
LP ConversionLogin ・・・
End-user access
Referer はLP 到達時点を
採用したい
会員情報はConversion 直前から取得したい
Segment を集計時に加工する
まとめ• とりあえず、データは全部貯めておく• 使い方・集計方法は後から考えても ( 必要になっても )
データがあれば対処できる=>Reactive に運用・分析
• ローンチ前のサービス・機能の検証を低コストでできる
• 一方、力技でだいたいどうにかなってしまうので適当にやると事前の運用設計がおろそかになってしまったり
=> 諸刃の刃的な側面も
Thank You!
EOF