Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Firebase & BigQuery 實戰分享

Steven Hsieh
February 24, 2017

Firebase & BigQuery 實戰分享

2017.02.24 @ iChef

Steven Hsieh

February 24, 2017
Tweet

More Decks by Steven Hsieh

Other Decks in Technology

Transcript

  1. Gogolook Sr. Product Planner, Growth Team HTC Sr. Engineer, Data

    Insight Management StorySense Web Developer & Project Manager Hi, I’m Steven 2
  2. • Firebase Introduction • Access raw data à BigQuery •

    Export/Pricing/Structure • 操作語法 (SQL) • How to save money? • Application Case • Debug View • Calculate churn retention (with A/B test) • Monitor performance • Last action before removing app • What’s next? 3 Agenda
  3. 5 Firebase Analytics is now Google’s recommended solution for mobile

    app analytics (from Google‘s official blog)
  4. Firebase Analytics • 免費 & 事件記錄總數量無上限 (500 個 unique 事件)

    • 專為 App 設計的自動事件 (Android & iOS) • first open, in app purchase • app update, app remove, os update, app exception • notification receive, notification open, notification dismiss 6
  5. Firebase Analytics • 自動記錄的 user properties • first open time

    • brand, model, OS version, app version • language, country, city • acquisition source, acquisition campaign (Google UTM), install store 7
  6. Case: Uninstall Detection Mar 8, 2013 #stackoverflow “It’s not possible”

    Workaround: 自己定義「用戶流失」,例如:7天無任何活動 如果 user 出國 / 都沒電話? 8
  7. Case: Uninstall Detection Device Not Registered è Uninstalled Mar 6,

    2014 #hackfindings “A quick answer is GCM” Workaround: 每天發送數千萬個 silent push 若要深入到每小時? 9 • As-is: 利用 GCM server 的回覆狀態判定
  8. Case: Uninstall Detection • 只要整合 SDK,自動記錄 • Android only •

    想算每微秒的用戶流失率也可以唷 10 • To-be: Firebase auto collected events
  9. Firebase Analytics • 切分目標受眾 (Audience Segmentation) • By user properties

    (國家、地區、語言、版本、型號…) • By events 15
  10. Case: Suggest Update • 只能同時對所有 user 設定 (要做彈性 targeting,要自己整合資料、設定規則) •

    要修改 DB 內的資料值 • As-is: 在自己的 DB 內設定,透過 server API 回給 app Developer API Show 17
  11. Case: Suggest Update • To-be: Firebase Remote Config • 彈性的

    user group 設定 • Web 後台修改 18 Show PM/Marketer
  12. Firebase Cloud Messaging (FCM) • GCM è FCM: Android &

    iOS • 鎖定 目標受眾 • 追蹤 轉換事件 • 自定義參數 • 在地化 • 語言 / 國家 • 當地時間 20
  13. Dynamic Links • Dynamic Link: 根據平台,導至不同頁面 • iOS - 開

    app 特定頁面 or App Store (未安裝) • Android - 開 app 特定頁面 or Google Play (未安裝) • Desktop - 官網 • Deep Link: 安裝前後不中斷體驗 • 個人化初次開啟流程 • Attribution Analysis • 從哪個渠道下載的用戶黏度最高? • 從哪個渠道下載的用戶邀請最多朋友安裝? • 從哪個渠道下載的用戶消費最高? 21
  14. Firebase Analytics • 免費,無總數上限 • App 專屬的自動事件記錄 • 支援原始資料匯出 •

    分析 çè 行動 (Actionable metrics) • 推播訊息 • A/B testing • 分眾內容 • Deep links 23
  15. BigQuery , which is part of the growing serverless computing

    trend, is described as a "fully managed, petabyte scale, low-cost analytics data warehouse" with a pay-as-you-go pricing model. The new standard- based SQL dialect may open it up to a new universe of developers. 26
  16. 27 Schema app_events_YYYYMMDD user_dim event_dim: <array> device_info: model, brand, os_version…

    geo_info: country, region, city… app_info: version, store… traffic_source: channel, campaign... user_properties: <Array> key, int_value, float_value, str_value key, int_value, float_value, str_value . . . date, name, time… params: <Array> key, int_value, float_value, str_value key, int_value, float_value, str_value . . . date, name, time… params: <Array> key, int_value, float_value, str_value key, int_value, float_value, str_value . . . . . .
  17. Standard SQL • From Jun. 2016,取代 Legacy SQL • 和

    SQL 2011 (ISO standard) 更一致 • 可以寫更多更複雜的子查詢 • 更好的最佳化 (more advanced query optimization) • 提供更多資料型態 date, time, array, structs • Theta (θ) JOIN: 連結的條件可以不只是 ‘=’ • 例如:列出在至少兩個不同日期有借閱的人 SELECT DISTINCT Firsts.borrower_id FROM Checkouts Firsts, Checkouts Seconds WHERE Firsts.date > Seconds.date AND Firsts.borrower_id = Seconds.borrower_id; 29
  18. Pricing 33 Product Daily count Size Cost for 1-day data

    Cost for 1-year data 小熊來電 150萬 1.5 GB $0.9 NTD/m $330 NTD/m Whoscall 2.5億 150GB $90 NTD/ m $33000 NTD/ m
  19. Pricing 34 Query Product Data processed Query cost 每日反安裝數 小熊來電

    150MB $0.02 NTD Whoscall 13GB $1.95 NTD 一週的 retention 小熊來電 500MB $0.075 NTD Whoscall 500GB $75 NTD
  20. How to save money? • 縮小時間範圍計算 FROM `xxxxproject.app_events_2017*` WHERE _TABLE_SUFFIX

    BETWEEN '0220' AND '0220' • 要操作很多次的 è 匯出小 table 35
  21. How to save money? • 善用 Common Table Expression (CTE)

    à 合併一個 Query 36 Select 3 times (about 2TB processed) WITH xxx AS (SELECT xxx) (about 500G processed)
  22. 40 Case 1: Calculate A/B test churn retention 找出參與實驗的 device

    id 以及組別 找出這些 device id 的反安裝時間 (若有反安裝) device_id, exp_group, remove_time GROUP BY exp_group, remove_time JOIN
  23. 41 Case 2: Monitor performance • 算平均 à 算分布 (percentile)

    PERCENT_RANK() OVER (PARTITION BY app_ver ORDER BY response_time DESC) • 暫存到新 table • Query 快 / 省錢 • 避免 BQ 運算資源不足 • 隨時查某個百分位的值
  24. 42 Case 3: Last action before removing app • LAG()

    LAG(event_dim.name, 1) OVER (PARTITION BY user_dim.device_info.resettable_device_id ORDER BY event_dim.timestamp_micros ASC)
  25. 43 What’s next? (Google I/O 2017) • A/B test suite

    • 現有架構,需自己記錄 (可能有欄位不足問題) • 新版 console • Compare with Facebook App Analytics