從APP數(shù)據(jù)上報(bào)到可視化報(bào)表展示

3 評(píng)論 13910 瀏覽 69 收藏 8 分鐘

我們每天都在使用各式各樣的APP,我們的操作行為也不斷地被APP的開發(fā)商收集,這些APP的開發(fā)商通過(guò)可視化報(bào)表平臺(tái),查看APP的用戶行為數(shù)據(jù)。本文將試圖揭秘,從用戶觸發(fā)操作,到這些數(shù)據(jù)形成可視化報(bào)表的整個(gè)過(guò)程。

聲明下,本文是分享給產(chǎn)品經(jīng)理們的。長(zhǎng)久以來(lái),關(guān)于產(chǎn)品經(jīng)理要不要懂些技術(shù),一直是1個(gè)有爭(zhēng)論話題。個(gè)人理解,產(chǎn)品經(jīng)理不需要懂太多技術(shù),但要懂些技術(shù)上的基本過(guò)程。

所以,本文也將寄希望省略掉非常多的技術(shù)細(xì)節(jié),說(shuō)清楚從APP數(shù)據(jù)上報(bào)到展示的整個(gè)過(guò)程。

一、從SDK到可視化報(bào)表的整個(gè)過(guò)程

從APP端的統(tǒng)計(jì)SDK進(jìn)行數(shù)據(jù)上報(bào),到最后的可視化報(bào)表展示(T+1數(shù)據(jù)展示),可以概括為下面6個(gè)步驟:

  1. 統(tǒng)計(jì)SDK進(jìn)行原始數(shù)據(jù)上報(bào),上報(bào)到對(duì)應(yīng)的接入服務(wù)器;
  2. 接入服務(wù)器把數(shù)據(jù)寫入到隊(duì)列中;
  3. 數(shù)據(jù)分析服務(wù)器對(duì)隊(duì)列中的數(shù)據(jù)進(jìn)行過(guò)濾分析,分析后寫入到本地磁盤;
  4. 大數(shù)據(jù)計(jì)算服務(wù)器定時(shí)拉取本地磁盤的數(shù)據(jù),進(jìn)行大數(shù)據(jù)計(jì)算;
  5. 大數(shù)據(jù)計(jì)算的結(jié)果寫入到報(bào)表數(shù)據(jù)庫(kù);
  6. 讀取報(bào)表數(shù)據(jù)庫(kù)數(shù)據(jù),進(jìn)行可視化報(bào)表展示。

以下,假定微信Android端,接入了TalkingData(以下簡(jiǎn)稱TD) 的Android SDK,對(duì)SDK上報(bào)的部分步驟,進(jìn)行解釋。

按照假定,微信獲得了1個(gè)TD的分配的APPID。該APPID,就是微信在TD這個(gè)統(tǒng)計(jì)平臺(tái)的身份證,用于唯一標(biāo)識(shí)微信自己的身份。

用戶使用微信時(shí)使用的手機(jī)硬件信息,以及在微信上的操作行為,就會(huì)通過(guò)SDK進(jìn)行上報(bào)了。

1. APP數(shù)據(jù)上報(bào)機(jī)制

APP數(shù)據(jù)上報(bào)的機(jī)制是什么樣的?

基本情況是:

  1. 重新打開微信時(shí),立即上報(bào)一次當(dāng)前的啟動(dòng)數(shù)據(jù)以及上一次的緩存數(shù)據(jù);
  2. 在使用微信的過(guò)程中,每隔2分鐘(時(shí)間間隔可調(diào)整)上報(bào)一次數(shù)據(jù);
  3. 將微信退到后臺(tái)運(yùn)行時(shí),立即上報(bào)一次數(shù)據(jù);
  4. 正在使用微信時(shí),將微信殺死后,數(shù)據(jù)將緩存在本地,待下一次啟動(dòng)微信時(shí)進(jìn)行上報(bào)。

以上4個(gè)上報(bào)機(jī)制,每個(gè)統(tǒng)計(jì)平臺(tái)采用的不盡相同,有些平臺(tái)提供可選項(xiàng),由APP方自行決定上報(bào)的機(jī)制。

一個(gè)節(jié)省用戶流量的極端上報(bào)機(jī)制是:本次啟動(dòng)所產(chǎn)生的數(shù)據(jù),一直緩存在客戶端,待下次啟動(dòng)時(shí)進(jìn)行一次性上報(bào)(將上報(bào)的時(shí)間間隔設(shè)為24小時(shí),即等同于本次啟動(dòng)中的數(shù)據(jù),全部緩存在本地)。

通過(guò)Android的控制臺(tái),看到最后一行日志時(shí),表示數(shù)據(jù)上報(bào)成功了。

09-24 11:40:31.810 I/TDSDKLog(11497): New data found, Submitting…
09-24 11:40:31.820 I/TDSDKLog(11497): New data len : 2804
09-24 11:40:32.240 I/TDSDKLog(11497): Data submitting Succeed!

2. SDK與服務(wù)器之間的對(duì)話

SDK和接入服務(wù)器的對(duì)話可以包括:

SDK:我已經(jīng)按照參數(shù)格式,提交了數(shù)據(jù)了,你看下。

那么可能發(fā)生以下情形:

(1)正常情況

服務(wù)器的回復(fù):哦,我看下,提交成功了。下次什么時(shí)候提交,你SDK自己來(lái)定哈。

(2)拒絕訪

服務(wù)器回復(fù):我跟你這個(gè)SDK沒啥子關(guān)系,你無(wú)權(quán)訪問(wèn)。

(3)其他異常情況

服務(wù)器回復(fù):這次提交成功了,不過(guò)服務(wù)器或者網(wǎng)絡(luò)好像有點(diǎn)問(wèn)題,下次提交的時(shí)間為30分鐘后。

3. 對(duì)數(shù)據(jù)進(jìn)行初步分析

步驟2,接入服務(wù)器把數(shù)據(jù)寫入到隊(duì)列中,是1個(gè)寫數(shù)的過(guò)程。

我們著重詳細(xì)介紹步驟3,對(duì)數(shù)據(jù)進(jìn)行初步分析。

在步驟3中,服務(wù)器將對(duì)SDK上報(bào)的數(shù)據(jù)進(jìn)行寫日志操作。比如,可以按照SDK上報(bào)的數(shù)據(jù)格式輸出json格式串,將json格式串寫入到日志文件中。

定義好每個(gè)日志文件的生成規(guī)則,比如,每個(gè)20分鐘生成1個(gè)日志文件,每隔1個(gè)小時(shí)生成1個(gè)文件夾(包含3個(gè)文件)。

接下來(lái),就是對(duì)數(shù)據(jù)的初步分析,即對(duì)日志文件進(jìn)行初步解析,將1個(gè)大文件,按照規(guī)則,切割成不同維度的小文件(表)。比如:切換成10個(gè)小文件,第1個(gè)小文件存儲(chǔ)手機(jī)硬件信息,第2個(gè)文件存儲(chǔ)手機(jī)的網(wǎng)絡(luò)信息,第3個(gè)文件存儲(chǔ)埋點(diǎn)事件,等等。

4. 進(jìn)行大數(shù)據(jù)計(jì)算

經(jīng)過(guò)了步驟3之后,原始數(shù)據(jù)的簡(jiǎn)單數(shù)據(jù)分析(分類)已經(jīng)完成了,計(jì)算海量的數(shù)據(jù),還需要專門的大數(shù)據(jù)計(jì)算平臺(tái),比如:Hadoop之類的。

比如:計(jì)算當(dāng)前應(yīng)用昨天的新增用戶和活躍用戶數(shù),就可以使用Hadoop中的 mapreduce進(jìn)行去重。

設(shè)想下,1個(gè)日活100萬(wàn)的APP,每個(gè)用戶每天平均產(chǎn)生100條數(shù)據(jù),那么就有1億條數(shù)據(jù),那么對(duì)于大數(shù)據(jù)平臺(tái)來(lái)說(shuō),就有1億個(gè)設(shè)備號(hào),Hadoop要做的,就是對(duì)這1億個(gè)設(shè)備號(hào)進(jìn)行去重,得到當(dāng)天的活躍用戶數(shù)。

5. 可視化報(bào)表展示

步驟5,是大數(shù)據(jù)平臺(tái)將計(jì)算好的數(shù)據(jù)入庫(kù)的過(guò)程。

我們?cè)敿?xì)介紹步驟6,可視化報(bào)表展示,對(duì)數(shù)據(jù)進(jìn)行展示。

在可視化報(bào)表中,我們可以看到多種多樣的數(shù)據(jù)指標(biāo),昨日新增、昨日活躍、昨日啟動(dòng)次數(shù)、事件的發(fā)生次數(shù)、事件的發(fā)生人數(shù)。

以上數(shù)據(jù)展示,都是大數(shù)據(jù)計(jì)算后的結(jié)果。大數(shù)據(jù)計(jì)算的邏輯,來(lái)自于可視化報(bào)表的展示需求。

舉例:昨日活躍用戶數(shù),既可以用昨日啟動(dòng)過(guò)應(yīng)用的設(shè)備數(shù)來(lái)計(jì)算,也可以用昨日啟動(dòng)過(guò)應(yīng)用的手機(jī)號(hào)數(shù)量來(lái)計(jì)算。前者就是大數(shù)據(jù)平臺(tái)對(duì)設(shè)備進(jìn)行去重,后者則是對(duì)手機(jī)號(hào)進(jìn)行去重了。

三、小結(jié)

在本文的撰寫過(guò)程中,省略了很多技術(shù)細(xì)節(jié)。

一方面,是因?yàn)楸救说闹R(shí)水平有限,無(wú)法準(zhǔn)確描述;另一方面,本文的出發(fā)點(diǎn),是讓讀者大致了解下從APP上報(bào)到可視化報(bào)表的過(guò)程,這個(gè)過(guò)程本是1個(gè)非常技術(shù)化的過(guò)程,涉及到非常多的技術(shù)要點(diǎn),我們也需要有選擇省略。

希望,本文對(duì)你有所幫助。

 

本文由 @十三先 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來(lái)自 Pexels,基于 CC0 協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 可以可以,應(yīng)該是跟版過(guò)程中了解了自家產(chǎn)品的接入情況。

    回復(fù)
  2. 關(guān)注微信公眾號(hào):產(chǎn)品者也,回復(fù)關(guān)鍵字【原始數(shù)據(jù)】,獲得原始數(shù)據(jù)的查看方式。

    來(lái)自廣東 回復(fù)