2015/11/19 #bq_sushi tokyo #2
Yu Kawabe
Kaizen 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 Manager
BigQuery, MySQL, Python
• My hobby
囲碁(第49回学生本因坊ベスト8)
Service Site Analysis
What is Kaizen Platform
Optimizer Network
Provide the 3Cs: Content, Creative and
Conversations.
SaaS A/B Testing Platform
Manages workflow of sourcing, creating
and optimizing the 3Cs.
Search
Social
Email
Site Content
Content
Creative
Conversations
+
Display
サービスサイトのアクセス分析
• ユーザーのアクセスログをBQに送り続ける
• BQに貯まったログにクエリをたたく
- Visualization Tool へ連携
- Adhocに分析
User access Access log
Adhoc Analyze
Visualization
Google BigQuery の話 #gcpja by Naoya Ito
https://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 Basic
Web site Optimization
Variations
Original
A 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 に格納
Hourly
data
集計前の生ログ
を格納
サービスサイト
から問い合わせ
ログ活用 live-ops
• 「自社のGAデータと数値が若干ズレるのですが、
詳細データを調べてもらえませんか?」
• 「自社IPは除いて評価したいのですが、可能ですか?」
・
・
・
これらの問い合わせには全てBQで対応
(BQ導入前はストレージにzipしてたので調査も一苦労。。。)
ログ活用 重複送信の検知
Customer web site
Kaizen JS
集計前の生ログ
を格納
サービスサイト
から問い合わせ
ログが重複送信されているケースが時折発生している
=>BQで検知できないか?
Kaizen JS
よくあるケース
はタグ二重貼り
End-user access
Hourly
data
ログの重複送信を検知
①同一 session で発生しているログの時刻を抽出
②閾値時間内に重複送信されている確率を算出
①
②
ログの重複送信を検知
重複送信されている割合をA/Bテスト毎に可視化
Product for Advanced
PRODUCT for Advanced
Ad 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へ格納
Hourly
data
・・・・・
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

Kaizen Platform における BigQuery 活用事例 #bq_sushi tokyo #2