數據采集:埋點、采集、存儲及分析


一、背景

數據采集層中的用戶行為數據采集系統。

用戶行為:用戶與產品UI的交互行為(Android、iOS、Web頁面、H5)。

  • 后端:后端服務日志、業務數據庫
  • 前端:主動上報

用戶行為數據采集系統:從前端采集用戶完整的行為信息,用於數據分析和其他業務。

例子1:營銷活動注冊流程

僅依靠后端業務數據庫,只能知道活動帶來多少新注冊用戶。

而通過采集用戶在前端的操作行為,可以分析出整個活動的轉化情況(轉化率分析)。

頁面瀏覽量 → 點擊注冊跳轉 → 獲取驗證碼 → 提交注冊 → 真實注冊(漏斗分析)

例子2:用戶評分系統 —— 抽取數據作為評分依據。

數據采集

結構化數據表 —— 存儲數據

前端 API 上報數據

前端位置埋點紊亂

二、解決辦法

統一的用戶行為采集系統。原則:

  • 統一上報方式
  • 統一數據格式
  • 統一數據集中存儲
  • 盡可能全量采集

具體到實現上,歸納為三個問題:

1. 采集什么

需要什么數據?抽象出統一的數據格式。

行為包括三類:

  • 瀏覽:頁面、元數據
  • 輸入
  • 點擊(移動端:滑動):頁面的元素、關聯信息、元數據

瀏覽和點擊是引起頁面變化和邏輯處理的重要事件,而輸入總是與點擊事件關聯在一起。

頁面、元素、元數據。

瀏覽和點擊便是我們采集的對象。

  • Android & iOS :View名稱
  • Web頁面:URL鏈接(hostname + pathname)、參數、跟蹤代碼

用戶維度:隨機UUID,后端生成,前端緩存。

已登錄用戶:通過元數據中的用戶id關聯。

時間維度:數據統計,前端延遲上報,時間自動同步。

例如:

{
    "uuid": "2b8c376e-bd20-11e6-9ebf-525499b45be6",
    "event_time": "2016-12-08T18:08:12",
    "page": "www.example.com/poster.html",
    "element": "register",
    "attrs": {
        "title": "test",
        "user_id": 1234
    }
}

2.前端怎么采集

前端有效埋點、全量采集的問題。

傳統的埋點方式,在需要上報的位置組織數據、調用API、將數據傳給后端,比如:百度統計、google analysis。

需要在代碼里嵌入調用,也業務邏輯耦合在一起。

“無埋點”概念。

通過在底層hook所有的點擊事件,采集所有事件,稱之為“全埋點”。

  • hook底層點擊事件 —— 數據整理
  • UI元素屬性值設置關聯關系

3.后端存儲

數據集中存儲、易於分析。

數據進入后台,接入kafka隊列,采用生產消費者模式(Elasticsearch)處理。

  • 功能分離
  • 數據緩沖
  • 易於擴展

增加5個維度信息:

  • 客戶端類型(web、android、iOS)
  • 事件類型(瀏覽、點擊)
  • 事件
  • 客戶端IP
  • User Agent

將Page + element 、事件名稱進行關系映射,可進行頁面配置,手動關聯。

傳統的行列二維數據結構。

用戶行為數據、日志數據都屬於半結構化數據,使用NoSQL數據庫作為存儲。

ElasticSearch 數據存儲

實時分布式搜索引擎和分析引擎,具有很強的數據搜索和聚合分析能力。

三、技術路線圖

  • 原始數據存儲ODS層
    • 服務器日志接收
      • 服務器日志
      • URL解析
      • JS回傳
    • 客戶端日志接收
      • SDK
      • API接口
    • 全量/增量/Binlog
      • 數據庫

服務器日志,指Web服務器軟件,例如Httpd、Nginx、Tomcat等自帶的日志,例如Nginx的access.log日志等。

URL解析,指訪問服務器時,將URL信息及攜帶的參數進行解析后,上傳服務器,例如訪問百度首頁:https://www.baidu.com/s?ie=utf-8&wd=你好,我們可以獲得本次訪問的word為“你好”。

JS回傳,指在Web頁面上添加的各類統計插件,通過在頁面嵌入自定義的Javascript代碼來獲取用戶的訪問行為(比如鼠標懸停的位置,點擊的頁面組件等),然后通過Ajax請求到后台記錄日志。

  • 統計重要指標
    • 頁面瀏覽:PV、UV、IP、跳出率、平均訪問時長、轉化次數等
    • 頁面交互:搜索詞、控件點擊、頁面跳轉等
    • 其他:轉化路徑分析、設備分析、訪客分析、系統環境、地域分布等

用戶點擊網頁 → HTTP請求 → 相應結果返回瀏覽器 → 解析 → 展示

ODS基礎日志

大數據平台半結構化特征

轉化為DWD基礎日志

數據清洗:數值歸一、標准化處理、無效數據剔除

四、漏斗模型介紹

Web端的分析常用到漏斗模型,例如淘寶的SPM體系。

漏斗模型全稱為:搜索營銷效果轉化漏斗。

對應了企業搜索營銷的各個環節,反映了從展現、點擊、訪問、咨詢,直到生成訂單過程中的客戶數量及流失。

漏斗模型是一個線性流程,從開始到結束,用戶在每一個環節,都會產生流失,就像漏斗一樣。

以電商為例,最常見漏斗模型就是:瀏覽/搜索-加購-下單-支付-復購。

  • 關鍵環節優化
  • 縮短用戶路徑 優化產品體驗

工具:Google GA

對比分析

五、淘寶SPM碼

漏斗模型比較優秀的應用案例為淘寶SPM碼

查看淘寶網頁的源代碼會經常看到http://detail.tmall.com/item.htm?id=XXX&&spm=2014.123456789.1.2這樣的例子,這是淘寶提供的SPM是淘寶社區電商業務(xTao)為外部合作伙伴(外站)提供的一套跟蹤引導成交效果數據的解決方案。

簡單說來,SPM編碼是一種用來跟蹤頁面模塊位置的編碼,標准SPM編碼由4段組成,采用a.b.c.d的格式(建議全部使用數字)。

基於SPM可以得到的效果統計指標:

  • PV:通過指定spm編碼引導到寶貝詳情頁面的PV。
  • UV:通過指定spm編碼引導到寶貝詳情頁面的UV。
  • 支付寶成交人數:通過指定spm編碼引導到寶貝詳情頁面的用戶當天對同店商品的支付寶成交人數。
  • 轉化率=支付寶成交人數/UV,代表通過指定spm編碼引導的用戶最終轉化為購買用戶的比率。

六、客戶端日志采集

手機 SDK 延遲發送日志

統計數據延遲

根據類型的不同,可以分為頁面事件(類比頁面瀏覽)和控件點擊事件(類比頁面交互)。

  • 設備及用戶的基本信息,例如IMEI、用戶賬號等。
  • 被訪問頁面的信息,例如商品ID、瀏覽店鋪等。
  • 訪問的路徑信息,例如上一個頁面來源等。

SDK具有聚合和壓縮的功能,可以適當的合並日志,減少數據量。

工具:友盟、TalkingData、百度統計、騰訊雲分析、GA等第三方統計工具。

  • 唯一設備標識符

網頁有統一的Cookie進行識別,客戶端沒有。

IMEI/IMSI/MAC地址、UDID等。

  • 原生態APP & H5頁面嵌入

Native頁面數據統計通過SDK進行,H5頁面基於瀏覽器的頁面日志進行。

由於采集方式的不同,很多情況下兩個頁面互相跳轉時,便無法還原用戶訪問路徑,對於數據的統計分析產生很嚴重的影響。

解決的思路有兩種,一種是Native日志歸攏到H5日志中,另一種是H5日志歸攏到Native日志中,但綜合考慮,歸攏到Native日志更為合理,因為SDK能夠采集更為全面的日子信息。具體實現方式上,可以在H5頁面中嵌入JS代碼,通過調用WebView框架中的JSBridge接口,來實現參數的傳入,並由統計SDK進行日志的封裝。當然方法不是萬能的,有其他的好方式也可以嘗試。

  • 日志處理

通過限制流量、消息隊列削弱峰值、異步處理、內存緩沖、擴展服務等方式進行,在日志采集環節中,可以通過延遲非核心日志上傳的方式,優先處理核心日志,以保障統計效果。

參考鏈接1:用戶行為數據采集系統

參考鏈接2:數據采集技術簡介


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM