天天看點

基于SLS中台的資料分析實戰:帶你玩轉埋點資料

增長關乎産品的存亡

增長!增長!增長!業務增長是每一個創業者每天面臨的最大問題。無論你的産品是APP,還是web,或者是小程式,隻能不斷的維持使用者的增長,才能向資本市場講出一個好故事,融資活下去。活到最後的産品,才有機會盈利。

為了擷取使用者的增長,可以投放廣告,也可以内容營銷、社交傳播、銷售地推,或者持續的專注于産品優化。無論哪一種方式,我們都面臨這幾個問題:

    1. 營運活動,覆寫了多少使用者?
    1. 多少使用者,開始使用産品?
    1. 多少使用者付費?
    1. 多少使用者持續的活躍?
    1. 下一步,我們應該把精力放在哪些方面?是持續營運?還是開發新功能?
基于SLS中台的資料分析實戰:帶你玩轉埋點資料

如果不能回答這些問題,無疑我們的營運活動或者開發就是盲人摸象,完全靠運氣。為了解答這些問題,我們不妨關注一下growth hacking這種資料驅動的手段。

基于SLS中台的資料分析實戰:帶你玩轉埋點資料

(快速增長隻是冰山一角,冰山之下是各個需要優化的細節。)

改變思維行為、擁抱GrowthHack

“增長黑客”是一個跨越營銷漏鬥、産品開發、銷售部門和業務其他領域的快速試驗過程,以确定最有效的方式來發展業務。增長黑客團隊由市場營銷人員、開發人員、工程師和産品經理組成,他們專門緻力于建立和吸引企業的使用者群。

一種通過創造性的方法、科學的資料分析工具,可以用極低的費用在短時間内吸引數以百萬計的使用者的增長方法。

1. 轉化率思維

轉化率思維指的是将一件事情看作觸達量與轉化率之乘積。一個廣告觸達到100w人,最終1w人做出了購買決定,這個過程轉化率就是1%,100w×1%=1w。這種思維方式告訴大家

    1. 很多事情都要敢于嘗試,說不定有人願意買賬
    1. 永遠不要去用自己的想法推測大衆,因為你的想法不能代表全部
    1. 不要希望讓所有人滿意,而要考慮讓盡量多的人滿意

2. 定量化思維

GH離不開定量化思維。GH的基本任務是回答以下幾個問題:

    1. 我的這項做法,能夠讓目标量增長百分之多少?
    1. 我執行過的做法,已經讓目标量增長了百分之多少?

在GH中采取的不同的措施該如何評價,則是完全取決于這些措施所帶來的目标量改變的比較。在GH中,隻有定量化思考的對象,才能獲得提高。

3. 疊代化操作方式

疊代化的方式就是上面提到過的“小步快跑,知錯就改”。

    1. 小步快跑指每次嘗試的改變都是很小的改變,小到措辭,排版,顔色等等細節。如果一次計劃中需要做出大規模的改變,則最好把這種大改變劃分成諸多小步驟來做
    1. 知錯就該,指的是擷取回報的思想。每次嘗試小改變之後,都要敏銳的捕捉這次改變帶來的定量效果,如果目标量得到提高,則保留這種改變,甚至加強這種改變;否則就要抛棄這種改變。其實這種做法很像自然界生物進化的過程,每次突變都是極小的改變,改變之後受到優勝劣汰的篩選,将優秀的改變保留。
基于SLS中台的資料分析實戰:帶你玩轉埋點資料

采集哪些資料?

所謂埋點就是在應用中特定的流程收集一些資訊,用來跟蹤應用使用的狀況,後續用來進一步優化産品或是提供營運的資料支撐,包括

  • • 通路數(Visits)
  • • 訪客數(Visitor)
  • • 停留時長(Time On Site)
  • • 頁面浏覽數(Page Views)
  • • 跳出率(Bounce Rate)
  • • 管道導流品質(網頁/網站跳轉、搜尋跳轉、掃碼進入等)

這樣的資訊收集可以大緻分為兩種:

  • • 頁面統計(track this virtual page view)
  • • 統計操作行為(track this button by an event)
基于SLS中台的資料分析實戰:帶你玩轉埋點資料
基于SLS中台的資料分析實戰:帶你玩轉埋點資料
device.first_time:  1597393921
device.height:  1098
device.id:  ffffffffffffffffffffffffffff0b38
device.language:  CN
device.width:  720
event.type:  ScanQrCode
ip:  100.68.107.134
os.platform:  Android
os.user_agent:  Mozilla/5.0 (iPhone 4; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 MQQBrowser/7.5.1 Mobile/11A465 Safari/8536.25 MttCustomUA/2 QBWebViewType/1
referer:  http://www.host8.com/def
referer.type:  
session.id:  ffffffffffffffffffffffffffff0b383
session.start_time:  1597393921
site.host:  www.aliyun.com
site.title:  日志服務文檔中心
site.url:  http://www.aliyun.com/page_2
uid:  985912           

GrowthHacking營運大盤

1. 數字化北極星名額

• 先明确我們的北極星名額

“North Star Metric” 北極星名額,又叫做“OMTM” One metric that matters, 唯一重要的名額。

之是以叫北極星名額,是因為這個名額一旦确立,就像北極星一樣,高高閃耀在天空中,指引着全公司上上下下,向着同一個方向邁進。

明确我們目前的現狀是什麼?每周的AU是多少?每天的UV是多少?同前一天的比較?同前一周的比較?

基于SLS中台的資料分析實戰:帶你玩轉埋點資料

在上面的描述資料中,我們可以較為友善的使用SLS計算出對應的名額

• 通過下面的SQL和刻度盤的配合使用我們可以得到WAU的計算結果

* | 
select 
  uv, 
  1000000.0 as total 
from 
  (
    select 
      approx_distinct(uid) as uv 
    from 
      log
  )           
基于SLS中台的資料分析實戰:帶你玩轉埋點資料

• 通過同比函數我們能較為容易的實作對比前一天的觀測名額的差異大小

* | 
select 
  diff[1], 
  diff[2], 
  round(diff[3] * 100 - 100, 2) 
from 
  (
    select 
      compare(uv, 86400) as diff 
    from 
      (
        select 
          approx_distinct(uid) as uv 
        from 
          log
      )
  )           
基于SLS中台的資料分析實戰:帶你玩轉埋點資料

同理,本周AU和上周AU之間的對比圖可以通過調整資料觀測的時間範圍就可以實作了

• 我們也要關注下最近兩個月,每天的DAU的變化

* | 
select 
  date_format(t, '%Y-%m-%d') as t, 
  uv 
from 
  (
    select 
      date_trunc('day', __time__) as t, 
      approx_distinct(uid) as uv 
    from 
      log 
    group by 
      t 
    order by 
      t
  ) 
limit 
  10000           
基于SLS中台的資料分析實戰:帶你玩轉埋點資料

• 接下來我們針對DAU這個次元進行展開,去分析下,相鄰兩周的DAU增長情況

* | 
select 
  from_unixtime(diff[4]), 
  coalesce(diff[1], 0) as "本周", 
  coalesce(diff[2], 2) as "上周", 
  round(
    coalesce(diff[3], 0)* 100 - 100, 
    2
  ) as "增長比例" 
from 
  (
    select 
      ts_compare(uv, 604800) as diff 
    from 
      (
        select 
          date_trunc('day', __time__) as t, 
          approx_distinct(uid) as uv 
        from 
          log 
        group by 
          t
      ) 
    group by 
      t
  )           
基于SLS中台的資料分析實戰:帶你玩轉埋點資料

2. 留存分析

留存的重要時點:

  • 1.0 次日留存
  • 2.0 周期(一個完整的使用周期)留存

留存名額重要的核心原因

  • 1.0 拉新、管道的優化等:也許會提高一定的留存率。
  • 2.0 産品功能設計能否滿足客戶的核心需求:上一步的留存到底能不能留下來。
  • 3.0 産品設計更好的、更快的、更友善地滿足客戶的核心需求。
    基于SLS中台的資料分析實戰:帶你玩轉埋點資料
基于SLS中台的資料分析實戰:帶你玩轉埋點資料
基于SLS中台的資料分析實戰:帶你玩轉埋點資料

• 七日留存率的計算

* | 
select 
  date_format(x.day, '%Y-%m-%d') as "日期", 
  x.regist_num as "新使用者數", 
  round(y.day2 * 100.0 / x.regist_num, 1) as "次日留存", 
  round(y.day3 * 100.0 / x.regist_num, 1) as "3日留存", 
  round(y.day5 * 100.0 / x.regist_num, 1) as "5日留存", 
  round(y.day7 * 100.0 / x.regist_num, 1) as "7日留存" 
from 
  (
    select 
      date_trunc('day', __time__) as day, 
      count(DISTINCT uid) as regist_num 
    from log 
    group by day 
    order by day desc
  ) x 
  join (
    select 
      a.day as day, 
      count_if(
        date_diff('day', a.day, b.day)= 1
      ) as day2, 
      count_if(
        date_diff('day', a.day, b.day)= 2
      ) as day3, 
      count_if(
        date_diff('day', a.day, b.day)= 4
      ) as day5, 
      count_if(
        date_diff('day', a.day, b.day)= 6
      ) as day7 
    from 
      (
        select 
          uid, 
          date_trunc('day', __time__) as day 
        from log 
        group by day, uid
      ) a 
      join (
        select 
          uid, 
          date_trunc('day', __time__) as day 
        from log 
        group by day, uid
      ) b on a.uid = b.uid 
      and (
        date_diff('day', a.day, b.day) = 1 
        or date_diff('day', a.day, b.day) = 2 
        or date_diff('day', a.day, b.day) = 4 
        or date_diff('day', a.day, b.day) = 6
      ) 
    group by day 
    order by day
  ) y on x.day = y.day 
order by y.day           

• 留存率曲線的計算

* | 
select 
  days, 
  counts, 
  round(
    counts * 100.0 /(
      min_by(counts, days) over()
    ), 
    2
  ) as "留存率%" 
from 
  (
    select 
      date_diff('day', a.day, b.day) as days, 
      count(1) as counts 
    from 
      (
        select 
          uid, 
          date_trunc('day', __time__) as day 
        from log 
        group by day, uid
      ) b 
      join (
        select 
          * 
        from 
          (
            select 
              *, 
              min(day) over() as m 
            from 
              (
                select 
                  uid, 
                  date_trunc('day', __time__) as day 
                from log 
                group by day, uid
              )
          ) 
        where 
          day = m
      ) a on a.uid = b.uid 
      and (
        date_diff('day', a.day, b.day) >= 0 
        and date_diff('day', a.day, b.day) <= 7
      ) 
    group by days 
    order by days
  )           

• 不同省份留存率曲線的計算

* | 
select 
  province, 
  days, 
  counts, 
  round(
    counts * 100.0 /(
      min_by(counts, days) over()
    ), 
    2
  ) as "留存率%" 
from 
  (
    select 
      province, 
      date_diff('day', a.day, b.day) as days, 
      count(1) as counts 
    from 
      (
        select 
          uid, 
          date_trunc('day', __time__) as day 
        from log 
        group by day, uid
      ) b 
      join (
        select 
          * 
        from 
          (
            select 
              *, 
              min(day) over() as m 
            from 
              (
                select 
                  ip_to_province(ip) as province, 
                  uid, 
                  date_trunc('day', __time__) as day 
                from log 
                group by province, day, uid
              )
          ) 
        where 
          day = m
      ) a on a.uid = b.uid 
      and (
        date_diff('day', a.day, b.day) >= 0 
        and date_diff('day', a.day, b.day) <= 7
      ) 
    group by days, province 
    order by days
  ) limit 10000           

3. 漏鬥分析

漏鬥分析是一套流程式資料分析,它能夠科學反映使用者行為狀态以及從起點到終點各階段使用者轉化率情況的重要分析模型。漏鬥分析模型已經廣泛應用于流量監控、産品目标轉化等日常資料營運與資料分析的工作中。

例如在一款産品服務平台中,直播使用者從激活APP開始到花費,一般的使用者購物路徑為激活APP、新增賬號、進入直播間、互動行為、禮物花費五大階段,漏鬥能夠展現出各個階段的轉化率,通過漏鬥各環節相關資料的比較,能夠直覺地發現和說明問題所在,進而找到優化方向。

基于SLS中台的資料分析實戰:帶你玩轉埋點資料
(
  os.platform : iOS 
  or os.platform :Android
) 
and event.type :click 
and (
  event.target : register 
  or event.target : button_19 
  or event.target :button_18 
  or event.target : button_17 
  or event.target : button_16 
  or event.target : button_15 
  or event.target : button_14 
  or event.target : button_13 
  or event.target : button_12 
  or event.target : button_11
) | 
select 
  "event.target" as target, 
  count(1) as click_count 
group by 
  target 
order by 
  strpos(
    'register,button_19,button_18,button_17,button_16,button_15,button_14,button_13,button_12,button_11', 
    "event.target"
  )           

4. 事件分析

事件分析法的應用領域非常廣泛,不同學者從本領域視角對其進行了闡述。事件研究是根據某一事件發生前後的資料統計,采用特定技術測量該事件影響性的一種定量分析方法。

營運當中的事件分析,是追蹤或記錄的使用者行為或業務過程的。舉個栗子,一個電商産品可能包含如下事件:使用者注冊、浏覽商品、添加購物車、支付訂單等。

事件細分:對某一行為的無限細分,定位影響行為的因素,也是對使用者分群的過程。

• 浏覽事件分析

基于SLS中台的資料分析實戰:帶你玩轉埋點資料
基于SLS中台的資料分析實戰:帶你玩轉埋點資料

• 注冊事件分析

基于SLS中台的資料分析實戰:帶你玩轉埋點資料

• 掃碼事件分析

基于SLS中台的資料分析實戰:帶你玩轉埋點資料

廣告時間

大家在使用SLS中遇到的任何問題,請加釘釘群,我們有專門的日志服務機器人24小時線上答疑,還有火鍋哥和燒烤哥專業支援!~ SLS微信公衆号定期會釋出各類日志、監控領域的技術分享文章并定期舉行抽獎,歡迎小夥伴們關注~

另外歡迎對大資料、分布式、機器學習等有興趣的同學加入,轉崗、内推,來者不拒,聯系郵箱 [email protected] !~

基于SLS中台的資料分析實戰:帶你玩轉埋點資料