開發與維運

基於SLS中臺的數據分析實戰:帶你玩轉埋點數據

增長關乎產品的存亡

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

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

    1. 運營活動,覆蓋了多少用戶?
    1. 多少用戶,開始使用產品?
    1. 多少用戶付費?
    1. 多少用戶持續的活躍?
    1. 下一步,我們應該把精力放在哪些方面?是持續運營?還是開發新功能?

image.png

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

image.png

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

改變思維行為、擁抱GrowthHack

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

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

1. 轉化率思維

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

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

2. 定量化思維

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

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

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

3. 迭代化操作方式

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

    1. 小步快跑指每次嘗試的改變都是很小的改變,小到措辭,排版,顏色等等細節。如果一次計劃中需要做出大規模的改變,則最好把這種大改變劃分成諸多小步驟來做
    1. 知錯就該,指的是獲取反饋的思想。每次嘗試小改變之後,都要敏銳的捕捉這次改變帶來的定量效果,如果目標量得到提高,則保留這種改變,甚至加強這種改變;否則就要拋棄這種改變。其實這種做法很像自然界生物進化的過程,每次突變都是極小的改變,改變之後受到優勝劣汰的篩選,將優秀的改變保留。

image.png

採集哪些數據?

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

  • • 訪問數(Visits)
  • • 訪客數(Visitor)
  • • 停留時長(Time On Site)
  • • 頁面瀏覽數(Page Views)
  • • 跳出率(Bounce Rate)
  • • 渠道導流質量(網頁/網站跳轉、搜索跳轉、掃碼進入等)

這樣的信息收集可以大致分為兩種:

  • • 頁面統計(track this virtual page view)
  • • 統計操作行為(track this button by an event)

image.png
image.png

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是多少?同前一天的比較?同前一週的比較?

image.png

在上面的描述數據中,我們可以較為方便的使用SLS計算出對應的指標
• 通過下面的SQL和刻度盤的配合使用我們可以得到WAU的計算結果

* | 
select 
  uv, 
  1000000.0 as total 
from 
  (
    select 
      approx_distinct(uid) as uv 
    from 
      log
  )

image.png

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

* | 
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
      )
  )

image.png

同理,本週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

image.png

• 接下來我們針對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
  )

image.png

2. 留存分析

留存的重要時點:

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

留存指標重要的核心原因

  • 1.0 拉新、渠道的優化等:也許會提高一定的留存率。
  • 2.0 產品功能設計能否滿足客戶的核心需求:上一步的留存到底能不能留下來。
  • 3.0 產品設計更好的、更快的、更方便地滿足客戶的核心需求。

    image.png

image.png
image.png

• 七日留存率的計算

* | 
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、註冊賬號、進入直播間、互動行為、禮物花費五大階段,漏斗能夠展現出各個階段的轉化率,通過漏斗各環節相關數據的比較,能夠直觀地發現和說明問題所在,從而找到優化方向。

image.png

(
  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. 事件分析

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

運營當中的事件分析,是追蹤或記錄的用戶行為或業務過程的。舉個栗子,一個電商產品可能包含如下事件:用戶註冊、瀏覽商品、添加購物車、支付訂單等。
事件細分:對某一行為的無限細分,定位影響行為的因素,也是對用戶分群的過程。

• 瀏覽事件分析

image.png
image.png

• 註冊事件分析

image.png

• 掃碼事件分析

image.png

廣告時間

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

另外歡迎對大數據、分佈式、機器學習等有興趣的同學加入,轉崗、內推,來者不拒,聯繫郵箱 [email protected] !~

image.png

Leave a Reply

Your email address will not be published. Required fields are marked *