數據分析入門:初始數據埋點(二)

92 評論 101663 瀏覽 990 收藏 16 分鐘

本文主要針對Key-Value字段的價值展開討論,并簡析其靈活運用的方法。

Hi,各位看官老爺們好O(∩_∩)O~,在第一篇《數據分析-初識數據埋點》中已經對工作中應用的數據埋點的基礎概念、基本分類、定義規范、流程以及應用場景做了簡單的介紹,基于部分看官老爺反饋Key-Value字段晦澀不易讀的一些問題。

所以本篇將在之前介紹的基礎之上,深入一步,詳細討論Key-Value字段的價值,以及靈活運用的方法。期望能幫助各位看官老爺基于業務需求在自己進行產品的埋點方案設計時提供一些解決問題的思路。

第一篇文章埋點定義規范部分對應Key-Value字段沒有向看官老爺交代清楚,本汪痛定思痛,面壁思過,還望各位海涵。在本篇中針對遺留問題做了詳細的圖文解釋,還望之前留言的看官笑納。

正文

在上篇中我們已經知道,一個完整的埋點需要定義哪些字段,回顧如下:

  • 功能字段
  • 中文名字段
  • 事件類型字段
  • 事件ID字段
  • Key字段
  • Value字段
  • 記錄規則字段
  • 備注字段

寫到這里,看官老爺可能會問:埋點中定義Key-Value有什么價值?接下來本篇第一部分的篇幅將與大家一起一探究竟。討論到底Key-Value是做什么用的。

先寫結論:

設計事件埋點時:

  • 同種屬性的多個事件,建議命名一個埋點事件ID,并通過Key-Value鍵值對進行區分。
  • 不同屬性的多個事件,建議命名多個埋點事件ID,不建議使用Key-Value鍵值對進行區分。

乍一看,可能有些晦澀難懂,以下將舉兩個實例,自然就能明白易懂。

實例背景:某汽車互聯網公司,領導對負責新車業務的產品經理X君、負責二手車業務的產品經理Y君提出需求:對新車APP和二手車APP銷售線索數據指標進行數據監控,如有超過5%的數據變動,則需要向上級匯報波動數值以及波動原因。

名詞注釋:

  • 銷售線索:通過事件記錄到用戶有明確的購買意向,記錄行為的事件例如:電話咨詢、短信詢價、加入心愿單、收藏、特別關注等類型事件。記錄一個用戶即代表一個線索。
  • 數據波動:即((當日數據-昨天數據)/昨日數據)*100%=環比數據波動

根據領導需求,假設定義短信砍價按鈕與電話咨詢按鈕為銷售線索指標,銷售線索按鈕頁面的入口來源頁面包含:頁面A與頁面B。

X君與Y君分別設計了埋點方案,如圖所示:

X君埋點方案:

X君經梳理得出,在商品詳情頁共計有兩個按鈕是銷售線索的核心指標分別是按鈕一:短信砍價、按鈕二:電話咨詢。并且有外部入口導流到詳情頁的有兩個頁面,分別是:頁面A、頁面B。根據流量來源的不同與事件類型的不同分為4個埋點事件,每一個埋點事件代表一種情況,如上圖所示。

方案分析:

X君對每一種情況都單獨設置了一個埋點事件ID,初步看上去還沒什么問題,X君只需每天用這四個事件ID去后臺搜索即可滿足領導的需求:對核心指標進行監控。

假設隨著業務的快速增長,新增更多的外部入口頁面,由原來的頁面A、頁面B的2個入口頁面增加至4個、8個、12個,同樣隨著產品優化需求的上線,新增更多的銷售線索事件,由原短信砍價和電話咨詢2個銷售線索事件增加至4個、8個、12個。

在極限情況(12個外部頁面入口、12個銷售線索事件)下X均需要共計維護:

12*12=144個埋點事件ID。

假設分析場景:12個流量來源、12個銷售線索事件,分析X天共計提交了多少線索?,來自頁面A的有多少?

問題一:分析X天提交的銷售線索中來自頁面A的有多少?

解決以上問題,X君首先需要將流量來源是:頁面A的12個不同類型銷售線索埋點事件ID找出來求合算出數值。

問題二:分析X天用戶共計提交了多少線索?

其次需要將剩下的11個流量來源各維度下12個不同銷售線索事件的ID一一取出數據加上流量來源是頁面A維度下的所有類型線索取出的數據,并進行最終求合算出X天共計提交線索數…寫到這里,各位客官老爺可能會說:X君好累啊~,其實不僅累,并且會帶來嚴重效率問題

  • 產品經理自身的工作效率會極大的降低,埋點事件ID越多,效率越低,最后極限情況下會無限逼近于零效率、零產出。
  • 埋點事件無論是普通埋點還是關鍵核心指標埋點,不僅產品經理需要監控自身產品健康情況,兄弟部門像:數據運營同事、數據分析同事都會基于部門需求對產品進行數據分析與監控,如果像剛才這種情況,數據運營同事每周寫數據周報時,單單是一個埋點事件就要計算12個流量來源進行求合,效率極低,會嚴重拖累運營同事的工作效率。并且對于數據分析師來說,假設在統計整體的銷售線索指標時,如通過X君定義的埋點進行分析,在寫查詢語句SQL時,單是事件ID就要寫144個,(大家腦補下數據分析師有節奏的拷貝事件ID 144下時這個畫面),數據分析時會毫不猶豫的說:“來來來,X君我有事找你談談~~”可能有的看官會說:一個按鈕用一個埋點事件ID記錄就好了,不用區分頁面流量來源,那問題來了:當數據產生異常波動時怎么確定是哪個頁面的流量入口的流量變動導致最終的結果?
  • 由于每天產品經理需要大量的埋點事件ID來統計一個指標,導致工作效率低下,可能會讓領導對你產生工作能力差,產出效率低下的不好印象…

那客官老爺會問:那怎么辦?稍安勿躁,馬上揭曉,請繼續向下看。

Y君埋點方案:

首先Y君對于銷售線索有關的內容從各個維度,按照邏輯關系進行拆分,梳理出以下腦圖:

寫到這里就不賣關子了,基于思維導圖中的邏輯關系,Key-Value閃亮登場?。?!

Y君基于思維導圖中的邏輯關系,使用Key字段表示分析的維度,使用Value字段表示不同維度下對應的唯一參數標識,從而將每個維度下眾多不同的參數區分開來。通過Key-Value與同屬性事件ID的配合,像銷售線索這個指標就可以用一個事件ID來表示。在未來即使擴展N個外部入口流量頁面,也只需要在當前事件ID在表示流量來源Key維度下在首次開發時新增N個Value參數即可。在未來應用于數據分析時,只需要搜索或寫一個事件ID即可對各維度(Key)下不同參數(Value)進行分析,簡介、高效。

例如假設分析場景:12個流量來源、12個銷售線索事件,分析X天共計提交了多少線索?,來自頁面A的有多少?

問題一:分析X天提交的銷售線索中來自頁面A的有多少?

Y君只需在后臺查一個事件ID,并指定維度Key=指標來源(source)、Value=對應維度下參數為:頁面A,最終求出的結果,即代表來自頁面A的總數。

問題二:分析X天共計提交了多少線索?

同理,Y君只需要寫一個事件ID,并指定維度Key=指標來源(source),Value=無。最終查詢出的結果即代表總的線索數。

注釋:

  • 當不指定Value時,默認為包含該維度下所有參數(本例中即代表所有來源)。
  • 各位看官可能會問:當不指定Value參數,且不指定Key維度,Key=無,Value=無 時,對最終總線索數有影響嗎?答案是沒有。
  • 同理,一個事件ID,指定Key=其他的維度,例如:Key=指標類別(type),不指定Value參數,例如Value=無,對最終總線索數統計有影響嗎?同理答案是沒有。

Y君通過梳理邏輯關系,將同屬性的埋點事件使用一個總事件ID表示,結合Key-Value細分不同維度下的不同參數,方便日后數據分析。通過此方式很好的解決了X君面臨的問題,不僅如此,并且具備以下優點:

  • Y君的維護成本低,更加簡潔,新增時只需要首次開發時加一個Value參數即可。
  • 提高Y君自身、數據運營、數據分析師等兄弟部門在數據分析時的工作效率。
  • 擴展性好,對未來新增業務需求有良好的擴展性。

相信介紹到這里,大家對埋點事件中Key字段、Value字段配合使用帶來的價值已經有了一定的了解。當然如果不同屬性的埋點指標還是建議分開,一個屬性定義一個事件ID,不能將八竿子打不著兩種屬性的埋點強行捆綁在一個埋點事件ID上,為了用Key-Value而用Key-Value,生搬硬套,最后只會適得其反,沒有實際意義。

例如:在實際業務中,將用戶點擊“注冊賬號提交”按鈕的行為放在銷售線索這個屬性事件ID中也通過Key字段、Value字段進行區分標識。結果沒有參考價值,更沒有實際意義。

綜上所述,得出在正本第一篇幅中給出的結論:

設計事件埋點時:

  • 同種屬性的多個事件,建議命名一個事件ID,并通過Key-Value鍵值對進行區分。
  • 不同屬性的多個事件,建議命名多個事件ID,不建議使用Key-Value鍵值對進行區分。

各位看官老爺可根據自己產品的實際業務需求靈活運用,希望對大家在進行埋點方案設計時提供一些邏輯思路,幫助大家解決實際問題。O(∩_∩)O~

總結:

通過上一篇文章的基礎理論鋪墊,以及本篇中對埋點Key-Value字段的進一步介紹,涉及埋點方案規劃的內容已基本討論完成,期望本文中涉及埋點的篇幅能夠幫助0-1歲的產品老爺在工作中規劃以及維護埋點時提供一些邏輯思路,以及針對不同情況下解決問題的一些方案。

使最終交付的產物具備良好的擴展性、健壯性、易用性、高效性、可維護性等特性,以達到使自己以及兄弟部門花最少的時間成本獲得最高數據價值的目的!

下篇預告:

經過詳細且周密的準備工作以及產品線上各個環節童鞋的齊心協力,需求以及埋點方案終于上線啦。部分看官認為上線了即代表大頭的活都完成了,實際上,上線后才是埋點剛剛開始收集數據的開端,這才剛剛開始~

埋點上線后可能會面臨以下問題:

  • 上線后等多長時間取數?1天?…10天?,取幾天是正確反映事實的?取數邏輯是什么?為什么?
  • 同一份數據,不同的人給出了不同的結論?該相信誰?是數據錯了還是分析錯了?

基于以上疑問,下篇與大家一起利用統計學上的理論與方法與大家深入討論,幫我們找到真相!敬請期待O(∩_∩)O~

看到這里,看官老爺們會說:看到問題剛勾起了本看官的探索欲,正在勁頭上,文章內容怎么就更寫完了?解決方案呢?。兀?? ?說!雙汪你是不是在偷懶? ̄へ ̄

各位看官老爺息怒、息怒。且聽我解釋:

本文除了與大家交流學習的目的外,作為一只產品汪,最重要的當然是為各位看官老爺提供一個良好的閱讀體驗啦O(∩_∩)O~ ?因為雙汪通過數據分析垂直資訊類網站的文本內容發現,單篇文章在5000以及5000字以下時,綜合起來給用戶帶來的閱讀體驗是最好的。

讀到這里相信大家也已經有些小累了,不如泡杯熱茶,小憩一會兒,在下篇文章中與各位看官老爺討論解決方案,雙汪加班加點,第三篇已經在路上了,o(*^@^*)o敬請期待~~

最后一句:以上我說的都是錯的,只有適合你的才是正確的!

再加一句:各位看官老爺,如果您覺的本文對您有幫助,記得給個贊哦,(*  ̄3)謝謝啦。

相關閱讀

數據分析入門:初識數據埋點(一)

 

本文由 @Aaron 原創發布于人人都是產品經理。未經許可,禁止轉載

題圖來自 Unsplash ,基于 CC0 協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 你好,能夠給個聯系方式,想找你學習數據埋點相關知識。

    來自廣東 回復
  2. 研究了一小會兒,發現某盟是做不到這樣的效果的,國內有沒有較好的數據分析工具推薦,偏產品使用數據層面的。

    來自四川 回復
    1. 做不到嘛!

      回復
  3. 行文思路、結構就如同埋點思路結構一樣精辟、縝密

    來自遼寧 回復
  4. 數據產品小白……最近被數據埋點問題弄的暈頭轉向,看了這篇文章感覺清晰很多!

    來自北京 回復
  5. 受益匪淺!??!數據分析入門:初始數據埋點(三)呢?沒有搜到哈哈

    來自北京 回復
  6. 非常詳盡實用了!必須贊一個!

    來自浙江 回復
  7. 半懂不懂,不過感覺很深奧,我還沒有接觸到埋點呢,,,

    來自北京 回復
  8. 那假如我想知道頁面A詢價按鈕被點擊多少次 該怎么寫公式呀 為什么你沒有提到key=type

    回復
    1. 同問。。。Key=source只是來源,Key=type才是線索,求銷售線索肯定會用到Key=type的條件,這兩個Key應該聯合查詢的,但具體怎么用呢?請教~~

      來自上海 回復
    2. select count(事件id) from 表A where type=”電話” and source=”頁面A”

      來自上海 回復
    3. 這樣寫不行吧? 字段名是 key和value; type 和 source 都是key

      來自四川 回復
  9. 干貨

    來自上海 回復
  10. 我也問一個問題哈:web、wap產品的埋點數據上報時機一般什么時候好呢?

    來自四川 回復
  11. 請教一下埋點之前,腦圖時應該以事件為中心去拓展還是以指標為中心去拓展?

    來自江蘇 回復
    1. 業務核心指標為中心

      來自北京 回復
  12. 精辟,案例多點會更好,我比較笨

    回復
  13. 終于搞懂了?。「兄x感謝??! :mrgreen:

    來自北京 回復
  14. 安排!

    來自廣東 回復
  15. 我想知道第三篇在哪,這個真的是干貨啊,系統全面,邏輯清晰有木有

    來自陜西 回復
  16. 不指定key和Value 為什么會滅有影響的

    來自安徽 回復
  17. 可以留個聯系方式嗎?給你介紹對象 ??

    來自廣東 回復
    1. 這位看官,您是認真的么 ??

      來自北京 回復
  18. 看到一半忍不住先下來點個贊,解釋的非常清楚,非常棒??!收獲很大??!感謝?。?!

    來自北京 回復
  19. 送你兩個字:大神!請收下我的膝蓋 ??

    來自廣東 回復
  20. 感謝大神分享

    來自河北 回復
  21. 這兩種埋點方式都有埋點維護的問題。而且大神的埋點設計是基于分析目的設計的,我的理解是基于各頁面和控件埋點至上的指標,若要這種埋點方式,前期需要把各頁面和控件的埋點做好吧。

    來自北京 回復
  22. 很有意思,學習了,必須給贊

    來自廣東 回復
  23. 大神 恕我說一句啊,其實 一個事件一個id 淘寶就是這么做的,至于你說統計分析工作效率低下,就看開發牛不牛逼了。我當時作為開發我也問過為什么不能 歸類出一個大id ,產品經理表示其實是一樣的,只是他們的規范就是一個事件一個id. 后來他們也有改進就是有子id 了,一個大類id后 有了子id 而不是通過key value , kv對反而記不住那么多內容。而你說的純寫sql 確實會碰到100多個id 的問題,但是 開發如果長點心,就會把這個做成可以可視化并選擇 讓bi 去拼整個sql 而不是自己寫。

    來自上海 回復
    1. 各公司的規范不同,方案會有細微的差別,但總的原則都是一致的,最低的維護成本,最高的效率維護數據。

      來自北京 回復
  24. hello,方式一和二的區別,是不是只是方式一沒有冗余更多的類型判斷的字段?其他我看不出差別???

    來自上海 回復
  25. 您好我問下,某盟統計漏斗是那種不連續的漏斗,這樣會導致數據不準確吧?
    比如我想看AB兩個按鈕的轉化,會出現轉化率大于1的情況下吧? 通過某盟提供的方法可以避免這個情況嗎?

    來自上海 回復
    1. 轉化率大于1和數據準確性問題是兩件事。
      轉化率的問題建議檢查下計算公式,
      準確性的問題是相對而談的,某盟還是比較準的,如果對精度有要求,可以自己公司的數據部門搭建Hive,自己跑報表,代價就是開發成本高

      來自北京 回復
  26. 受益匪淺!

    來自江蘇 回復
  27. hi 你好,咨詢一下友盟埋點里怎么通過K-value方式埋點呢?謝謝

    來自上海 回復
    1. 同問!

      來自廣東 回復
  28. 大神,求第三篇呀,很急很關鍵。

    來自浙江 回復
    1. 第三篇已上傳啦 ??

      來自北京 回復
  29. 寫的真好!受益匪淺 看的意猶未盡 發現之前自己對埋點的認知太模糊 期待第三篇??!

    來自北京 回復
  30. 如果按照Y君的做法,此時有問題三:分析X天提交的銷售線索中是電話咨詢的,來自頁面A的有多少?

    來自廣東 回復
    1. 數據庫肯定能并列搜索的啊,如source=1and type=2

      來自廣東 回復
    2. 不是按照key ,value進行列建表的嗎?你這樣的話 就需要按照所有的key中的所有值為一列了。麻煩請教一下

      來自四川 回復
    3. 同問

      來自廣東 回復
    4. Hi,這位看官所言極是,如果在問題三這樣的場景下,在查詢數據時,查詢語句是支持同時指定兩個Key的,這樣就可以解決您的問題,希望能幫到您呢 ??

      來自北京 回復
    5. 沒有明白作者的意思呢。如果是在查詢中用“并且”關系的話,source和type應該是兩個并列的字段才對,但是現在這兩個是key字段中的兩條不同的記錄。沒有明白怎么找到source和type二者的交集

      來自北京 回復
    6. 同問 ??

      來自廣東 回復
    7. 同感,其實source和type應該是兩個并列的字段,放在表頭。
      頁面A、頁面B是source的兩個value,電話咨詢和短信咨詢是type的兩個value。
      作者說的key是字段的統稱,不應該放在表頭。

      來自浙江 回復
    8. 是的,應該表里面source和types是2個字段(即表頭,表里面A列第一行和B列第一行),頁面A、頁面B是source的兩個值(表A列第二、A列第三行),短信砍價、電話咨詢是types的兩個值(表B列第二、B列第三行),而不是key,value這兩個是字段(表頭)

      來自浙江 回復
    9. 這個表 value = 電話 同時滿足 value = A頁面 根本沒有記錄,
      而且兩個key的兩條數據有可能是重復的記錄,(比如 李四客戶在頁面A-電話的場景記錄 同時在key=source 和key=type中都記錄了一次)不符合表的設計規范。

      來自廣西 回復
    10. 同樣是查詢短信砍價次數,兩個key同時查詢時,在source里記了一次,在type里也記了一次,這兩次的次數含義是相同的,那最后查出來的次數數據不就有重復的么?

      來自北京 回復
    11. 我看了第一篇也有這個疑問,至于大家說的并集搜索,前提應該是type中帶有source的參數才可能。目前在Y君的分享中好像沒有體現這個,type和source是沒有關聯的。不知道程序寫的表是否有記錄這個信息(即表格記錄一次 type:電話咨詢,來自A)

      來自廣東 回復