人人妻人人澡人人爽人人精品av_精品乱码一区内射人妻无码_老司机午夜福利视频_精品成品国色天香摄像头_99精品福利国产在线导航_野花社区在线观看视频_大地资源在线影视播放_东北高大肥胖丰满熟女_金门瓶马车内剧烈运动

首頁(yè)>國(guó)內(nèi) > 正文

面向行為分析的數(shù)據(jù)治理和應(yīng)用

2023-06-28 08:57:43來(lái)源:DataFunTalk

一、常見的數(shù)據(jù)分析場(chǎng)景

常見的數(shù)據(jù)分析就是對(duì)業(yè)務(wù)數(shù)據(jù)或者行為數(shù)據(jù)進(jìn)行分析和管理。


(資料圖片僅供參考)

業(yè)務(wù)數(shù)據(jù)主要是指用戶行為發(fā)生之后,實(shí)際產(chǎn)生的結(jié)果,我們使用數(shù)倉(cāng)建模來(lái)給業(yè)務(wù)提供指標(biāo),從而指導(dǎo)業(yè)務(wù)進(jìn)行一些正向的操作或者修改之前的一些操作。行為數(shù)據(jù)主要是指用戶使用產(chǎn)品上的各種行為,我們可以對(duì)面向行為分析的數(shù)據(jù)進(jìn)行加工和分析,從用戶的行為中推導(dǎo)出來(lái)到底是哪些環(huán)節(jié)沒有做好,從而調(diào)整和優(yōu)化這些環(huán)節(jié)。

二、數(shù)倉(cāng)建模方法

在引入行為分析方法之前,先介紹一下數(shù)倉(cāng)建模的方法。

數(shù)倉(cāng)建模方法主要流程如下:

用戶空間:以音樂播放為例,用戶在APP上的操作會(huì)產(chǎn)生行為日志,比如廣告請(qǐng)求、曝光、點(diǎn)擊,APP打開、用戶注冊(cè)和播放、下載歌曲等操作日志。數(shù)倉(cāng)建模:我們將用戶的行為日志采集過(guò)來(lái),形成ODS、DWD層的表,再往后是各個(gè)主題表。不同業(yè)務(wù)團(tuán)隊(duì)會(huì)創(chuàng)建自己的業(yè)務(wù)寬表,從用戶空間中抽取感興趣的事件放到各自的主題業(yè)務(wù)寬表中。主題應(yīng)用:再往下是這些主題寬表所支撐的業(yè)務(wù),比如報(bào)表建設(shè)、特征挖掘、機(jī)器學(xué)習(xí)、OneID系統(tǒng)建設(shè)等等,最終為增長(zhǎng)團(tuán)隊(duì)、經(jīng)營(yíng)團(tuán)隊(duì)和產(chǎn)品團(tuán)隊(duì)等提供支持。三、數(shù)倉(cāng)建模方法的優(yōu)劣勢(shì)1、優(yōu)勢(shì)方法論成熟 : 已經(jīng)在無(wú)數(shù)的公司中被驗(yàn)證過(guò),更有像《阿里巴巴大數(shù)據(jù)實(shí)踐》《Building The Data Warehouse》 等優(yōu)秀的指導(dǎo)書籍。技術(shù)棧成熟:無(wú)論是從消息中間件、數(shù)據(jù)ETL管路,數(shù)據(jù)湖、數(shù)據(jù)倉(cāng)庫(kù)、數(shù)據(jù)集市的各種選型等,工業(yè)界已經(jīng)誕生了無(wú)數(shù)優(yōu)秀的框架和數(shù)據(jù)庫(kù)。l技術(shù)供應(yīng)商支持完善:Google,Amazon,Microsoft,阿里云,騰訊云等供應(yīng)都提供幾乎一站式的服務(wù)。技術(shù)人才供給: 各個(gè)互聯(lián)網(wǎng)公司都有數(shù)據(jù)倉(cāng)庫(kù)建模的需求,人才供應(yīng)充分,培養(yǎng)體系完備。公司推動(dòng)阻力小: 數(shù)倉(cāng)的重要性經(jīng)歷了充分的市場(chǎng)教育,推動(dòng)起來(lái)會(huì)比較順暢,投入產(chǎn)出比也比較好闡述。應(yīng)用場(chǎng)景:適合指標(biāo)類的多維分析數(shù)據(jù)運(yùn)算。2、劣勢(shì)建設(shè)鏈條長(zhǎng): 數(shù)據(jù)采集->ODS->DWD->DWT->數(shù)據(jù)報(bào)表和應(yīng)用。數(shù)據(jù)一致性保證有挑戰(zhàn):不同數(shù)據(jù)主題之間會(huì)有指標(biāo)和字段的重合,在工程和業(yè)務(wù)之間,不同的工程團(tuán)隊(duì)之間都可能造成理解的偏差。擴(kuò)展字段流程復(fù)雜:表結(jié)構(gòu)需要預(yù)先定義, 擴(kuò)展新字段往往需要較長(zhǎng)的開發(fā)周期和回溯數(shù)據(jù)周期。工程實(shí)現(xiàn)很難統(tǒng)一: 架構(gòu)評(píng)估往往取決于承接的工程團(tuán)隊(duì)的過(guò)往經(jīng)驗(yàn)和喜好,同樣需求的實(shí)現(xiàn)差異較大。不適合時(shí)序行為數(shù)據(jù)分析:因?yàn)樾枰凑沼脩艟S度shuffle和開窗,用戶行為分析往往比較耗資源。預(yù)聚合不夠靈活:當(dāng)維度不能命中預(yù)聚合的維度時(shí),查詢會(huì)退化成全表聚合。四、面向行為分析的分析方法-概念

基于以上數(shù)倉(cāng)建模的優(yōu)缺點(diǎn),我們需要對(duì)行為數(shù)據(jù)進(jìn)行一些不一樣的抽象,用一些不一樣的查詢方式來(lái)解決面向用戶行為數(shù)據(jù)的問(wèn)題。首先來(lái)介紹一些概念:

用戶空間:和數(shù)倉(cāng)建模一樣,這部分不變。用戶事件序列:和數(shù)倉(cāng)建模方式不同,我們這里不將用戶的行為日志抽象到ODS、DWD層,在這里將行為日志數(shù)據(jù)抽象成用戶事件序列,比如對(duì)于播放歌曲事件會(huì)包含用戶屬性和事件屬性,用戶屬性回答誰(shuí)在什么樣的設(shè)備上這個(gè)問(wèn)題,事件屬性回答這個(gè)人主要做了什么事, 這個(gè)事我怎么去描述它。對(duì)于所有事件,我們都可以用這兩種類型的元數(shù)據(jù)來(lái)描述這個(gè)事件,在一個(gè)時(shí)間軸上串起來(lái),就可以知道這件事是誰(shuí)做的,以及做了這件事后發(fā)生了什么。事件抽象:有了用戶序列的抽象,我們可以聚焦一下,看某個(gè)人在某個(gè)具體事件序列上的抽象。比如圖中會(huì)員升級(jí)的例子。用戶群計(jì)算:有了事件抽象之后,最重要的就是我們?cè)趺词褂眠@些數(shù)據(jù),我們可以利用這些數(shù)據(jù)來(lái)獲取新增用戶群、活躍用戶群以及滿足X條件的用戶群等等。

如上圖所示,以7日Android用戶的留存率為例,左邊是傳統(tǒng)數(shù)倉(cāng)的解決方案,右邊是行為分析的解決方案。

傳統(tǒng)數(shù)倉(cāng)的解決方案:主要是寫一個(gè)SQL來(lái)看7天前的新增用戶在今天的活躍用戶中是否有,如果有的話,7天的新增用戶作為分母,今天的活躍用戶作為分子,除出來(lái)一個(gè)比例計(jì)算留存率。但是可能在數(shù)倉(cāng)里面,一條記錄并不是用用戶的ID來(lái)劃分的,所以最終想要計(jì)算出用戶ID的結(jié)果會(huì)有一個(gè)shuffle、關(guān)聯(lián)、數(shù)據(jù)傾斜的過(guò)程,這都是在傳統(tǒng)輸出解決方案當(dāng)中我們需要去考慮的一些點(diǎn)。行為分析的解決方案:這是另外一種簡(jiǎn)化的計(jì)算用戶留存的方式,本質(zhì)上是在圖中的三個(gè)圈圈選的用戶中做計(jì)算,三個(gè)圈的交集就是7天前的新增用戶在今日活躍用戶中的比例。我們將復(fù)雜留存SQL轉(zhuǎn)成了三個(gè)用戶群之間并集和交集的計(jì)算。

所以我們現(xiàn)在已經(jīng)有了兩層抽象,對(duì)于數(shù)據(jù)的抽象,是用時(shí)間線排進(jìn)來(lái)的一個(gè)個(gè)的事件,對(duì)于計(jì)算的抽象,是把一個(gè)查詢拆解成一個(gè)個(gè)用戶群的計(jì)算,再根據(jù)計(jì)算的結(jié)果回答我們一個(gè)個(gè)關(guān)于用戶群相關(guān)的問(wèn)題。

五、面向行為分析的分析方法-整體架構(gòu)

下面是面向行為數(shù)據(jù)分析的整體架構(gòu)(該架構(gòu)可供參考,但并非唯一解)。

從下往上看,最下面是數(shù)據(jù)的存儲(chǔ),采用列式存儲(chǔ),并在其中應(yīng)用一些對(duì)用戶群更友好的技術(shù),從而減少數(shù)據(jù)的加載量和分發(fā)量。往上是文件元數(shù)據(jù)/列元數(shù)據(jù)。再上面是用戶數(shù)據(jù)訪問(wèn)層,本質(zhì)上就是計(jì)算層。IDMapping層主要解決不同ID對(duì)應(yīng)同一用戶的問(wèn)題。查詢緩存層、查詢結(jié)果聚合層,以及最上面的查詢接入層,都是為了提高查詢效率。

下圖是對(duì)于7日的Android用戶留存率,在面向行為數(shù)據(jù)分析的架構(gòu)中的實(shí)現(xiàn)過(guò)程抽象:

接下來(lái)是對(duì)于面向行為數(shù)據(jù)分析架構(gòu)中關(guān)鍵節(jié)點(diǎn)的介紹。

1、列存儲(chǔ)

首先介紹我們自定義的列存儲(chǔ)。我們沒有使用ORC、Parquet這些列存儲(chǔ)格式,主要是因?yàn)镺RC、Parquet格式不會(huì)對(duì)用戶存儲(chǔ)做一些自定義的優(yōu)化,市面上的Druid、HBase也是為了加速數(shù)據(jù)訪問(wèn)引用了很多的組件。對(duì)于特定的場(chǎng)景,我們可以把更多的組件應(yīng)用過(guò)來(lái),比如說(shuō)BloomFilter(布隆過(guò)濾器),目的是快速判斷一個(gè)用戶是否在當(dāng)前文件中,因?yàn)槲覀兯械牟樵兤鋵?shí)都是面向用戶ID的。還有Delta encoding(差分編碼),用來(lái)對(duì)時(shí)間格式進(jìn)行存儲(chǔ),減少時(shí)間戳的存儲(chǔ)體積。

2、元數(shù)據(jù)

列存儲(chǔ)再往上一層就是元數(shù)據(jù)。首先是文件元數(shù)據(jù)。文件的第一級(jí)索引是按時(shí)間的,而時(shí)間是動(dòng)態(tài)的,因?yàn)橛脩舻幕钴S時(shí)間可能是在晚上或者中午的休息時(shí)間,凌晨可能用戶并不活躍。這就導(dǎo)致我們文件中存儲(chǔ)的用戶數(shù)據(jù)在時(shí)間上不是平均分配的,比如想要查詢凌晨1點(diǎn)到早上9點(diǎn)的數(shù)據(jù),有可能需要訪問(wèn)多個(gè)文件。這個(gè)時(shí)候我們需要知道應(yīng)該在動(dòng)態(tài)時(shí)間切片文件中訪問(wèn)哪些文件。因此我們就需要一個(gè)元數(shù)據(jù)的管理,基于查詢的起止時(shí)間,找出存儲(chǔ)的位置,這樣可以確保每個(gè)文件存儲(chǔ)的大小是相近的,盡可能減少數(shù)據(jù)計(jì)算過(guò)程中的數(shù)據(jù)偏移。

其次是列元數(shù)據(jù)。我們查詢的時(shí)候并不是要把所有的列都加載進(jìn)來(lái),計(jì)算的時(shí)候只加載文件中對(duì)應(yīng)偏移量的列數(shù)據(jù),這樣可以減少網(wǎng)絡(luò)傳輸?shù)拈_銷、磁盤IO和內(nèi)存使用量。

3、OneID

OneID的建設(shè)在每家公司是不一樣的,但本質(zhì)上都是用來(lái)追蹤用戶的設(shè)備變化,還原用戶事件的最真實(shí)狀態(tài),進(jìn)而提供IDMapping、ID Encoding的能力。

4、緩存層

緩存層主要是對(duì)以前訪問(wèn)數(shù)據(jù)的緩存,加速訪問(wèn)。緩存key中有時(shí)間的版本號(hào),數(shù)據(jù)可能會(huì)因?yàn)榛靥畹仍蛞胄聰?shù)據(jù),通過(guò)時(shí)間版本號(hào)的方式可以自動(dòng)刷新緩存。

5、用戶數(shù)據(jù)訪問(wèn)層

用戶數(shù)據(jù)訪問(wèn)層包括數(shù)據(jù)的聚合層、用戶群算子層以及元數(shù)據(jù)管理和底層時(shí)序數(shù)據(jù)的加載。首先,用戶請(qǐng)求會(huì)包含時(shí)間范圍、過(guò)濾條件、用戶群聚合條件等;第二步,根據(jù)用戶請(qǐng)求,請(qǐng)求元數(shù)據(jù),確定要訪問(wèn)的文件和列在哪里;第三步,知道了數(shù)據(jù)在哪后,加載數(shù)據(jù)到計(jì)算節(jié)點(diǎn),并緩存到本地;第四步,用戶分區(qū)計(jì)算,最大化并行查詢效果;最后,進(jìn)行聚合計(jì)算。

通過(guò)以上架構(gòu),我們希望在查詢時(shí),只去加載最低密度的數(shù)據(jù),在不同節(jié)點(diǎn)之間通訊時(shí)只去通訊最必要的用戶群的bit數(shù)組,最終也是通過(guò)bit運(yùn)算的方式返回,再通過(guò)OneID將bit數(shù)組還原成所關(guān)心的用戶群的一個(gè)詳細(xì)的描述。

六、面向行為分析的分析方法-分析舉例

下面是行為分析的幾個(gè)例子。

首先是用戶留存分析。

上圖中包含了7月29日至8月8日(第5天到第10天)之間的留存率。對(duì)于行,只需要計(jì)算7月29日至8月8日之間每天的新增用戶。對(duì)于列,只需要計(jì)算行時(shí)間+偏移量的活躍用戶數(shù)。而整個(gè)表格的計(jì)算就是對(duì)兩個(gè)用戶群進(jìn)行邏輯與。這樣就把表格的計(jì)算拆成了一個(gè)個(gè)單元格的獨(dú)立的計(jì)算,每一個(gè)獨(dú)立的計(jì)算都可以通過(guò)預(yù)計(jì)算保存在緩存中,還可以通過(guò)一些好的用戶交互方式,實(shí)現(xiàn)自助的留存率分析。

第二個(gè)常用的分析是漏斗分析。比如分析做了播放的用戶中,有多少進(jìn)行了收藏,收藏的用戶又有多少進(jìn)行了購(gòu)買,購(gòu)買的用戶中有多少下載了歌曲。漏斗分析又有時(shí)序嚴(yán)格和非嚴(yán)格之分。時(shí)序嚴(yán)格的轉(zhuǎn)化漏斗,必須是發(fā)生在時(shí)序嚴(yán)格遞增的場(chǎng)景下,同一個(gè)session內(nèi),一定是先播放,再收藏,再購(gòu)買,最后下載。非時(shí)序嚴(yán)格的轉(zhuǎn)化漏斗常用來(lái)進(jìn)行趨勢(shì)分析,有可能先購(gòu)買再播放。對(duì)于非時(shí)序嚴(yán)格的轉(zhuǎn)化漏斗,采用垂直切,我們只需要去分別計(jì)算每一個(gè)事件的用戶群,再做與關(guān)系。時(shí)序嚴(yán)格的轉(zhuǎn)化漏斗,要采用水平切,計(jì)算一個(gè)session內(nèi)既播放,又收藏,購(gòu)買并且下載了的用戶群,再用搭積木的方式計(jì)算出來(lái)。

第三個(gè)分析的例子是路徑分析。常用于某個(gè)業(yè)務(wù)指標(biāo)轉(zhuǎn)化不好時(shí)進(jìn)行分析。首先定義事件的入度和出度,也就是一個(gè)事件的前一個(gè)和后一個(gè)事件。計(jì)算采用深度遍歷的方式。

關(guān)鍵詞:

相關(guān)新聞

Copyright 2015-2020   三好網(wǎng)  版權(quán)所有 聯(lián)系郵箱:435 22 [email protected]  備案號(hào): 京ICP備2022022245號(hào)-21