網(wǎng)易云音樂數(shù)倉建模實(shí)踐-聲波APP
聲波app是網(wǎng)易云音樂推出的一款主打語音交友的陌生人社交軟件,能夠進(jìn)行語音連麥、1V1聊天、娛樂交友等互動(dòng)的平臺(tái)。

1.初期設(shè)計(jì)
早期的聲波數(shù)倉模型

早期的聲波數(shù)倉模型梳理了主要的業(yè)務(wù)域以及核心業(yè)務(wù)過程,構(gòu)建的總線矩陣如上圖所示,當(dāng)然現(xiàn)在看來是有很多不夠完善的地方。
2.思考
因此,當(dāng)有機(jī)會(huì)接手一個(gè)新APP時(shí),該如何構(gòu)建一個(gè)完整的數(shù)據(jù)倉庫模型?這里總結(jié)了相關(guān)經(jīng)驗(yàn)以及踩過的坑,建議按照以下步驟進(jìn)行:
step1:數(shù)據(jù)調(diào)研
數(shù)據(jù)調(diào)研步驟非常重要,主要目的是確定需求及需求分析??梢酝ㄟ^調(diào)查或訪談等形式來了解,主要分為兩部分。
(1)咨詢不同需求方對(duì)數(shù)據(jù)倉庫的需求
不同分工人員(分析師、策劃、運(yùn)營(yíng)、財(cái)務(wù)等各個(gè)部門)對(duì)數(shù)據(jù)倉庫的需求不同,前期需要咨詢他們的初期、中期、長(zhǎng)期的目標(biāo),了解了目標(biāo),才能夠建設(shè)有利的數(shù)據(jù)倉庫。以下是聲波業(yè)務(wù)的需求歸納:
分析師的初期的期望是能夠產(chǎn)出自上而下的,可直接監(jiān)控業(yè)務(wù)大盤的數(shù)據(jù),中長(zhǎng)期是對(duì)新的產(chǎn)品功能做監(jiān)控,幫助業(yè)務(wù)實(shí)現(xiàn)營(yíng)收KPI;
策劃在初期的期望是能夠?qū)τ脩粼谧?cè)登錄環(huán)節(jié)的流失做些分析,中期是不斷擴(kuò)展拉新用戶方式,并對(duì)用戶做渠道歸因,同時(shí)增加新的產(chǎn)品功能體驗(yàn),提升用戶留存,長(zhǎng)期目標(biāo)是引導(dǎo)用戶付費(fèi),實(shí)現(xiàn)年終營(yíng)收KPI,需要分析相關(guān)數(shù)據(jù);
運(yùn)營(yíng)的目標(biāo)是為產(chǎn)品提供運(yùn)營(yíng)抓手,組織月度活動(dòng),以及對(duì)廳主做培訓(xùn),引導(dǎo)用戶付費(fèi),其中需要分析活動(dòng)效果及廳主培訓(xùn)成果;
財(cái)務(wù)的需求是按月要求輸出各類型用戶的消費(fèi)、收益、充值、毛利率預(yù)估、波幣的movement等監(jiān)控?cái)?shù)據(jù)。
(2)整體的業(yè)務(wù)數(shù)據(jù)框架
這里按照AARRR模型整理了聲波業(yè)務(wù)的整體框架,如下表所示:

step2:主題域
主題域一般可以按照企業(yè)的部門劃分,也可以按照業(yè)務(wù)過程或者業(yè)務(wù)板塊中的功能模塊進(jìn)行劃分,這里遵循云音樂主端的規(guī)范,將一級(jí)主題域劃分為參與者、服務(wù)及產(chǎn)品,版權(quán)及協(xié)議、公共、事實(shí)這5個(gè)大的主題域,二級(jí)細(xì)節(jié)分類在下文中詳述。
step3:定義維度與構(gòu)建總線矩陣
維度建模中我們選用了Kimball維度建模方法,在定義好主題域之后,需要對(duì)具體對(duì)業(yè)務(wù)過程做分類。
下面是對(duì)聲波重新構(gòu)建了總線矩陣,結(jié)構(gòu)大致如表所示:
其中打勾的是指在對(duì)應(yīng)的業(yè)務(wù)過程功能與一致性維度下有關(guān)聯(lián)性,由此來構(gòu)建事實(shí)表與維度表。
step4:明確指標(biāo)統(tǒng)計(jì)
統(tǒng)計(jì)指標(biāo)一般是來源于分析師梳理的監(jiān)控報(bào)表。其中指標(biāo)=時(shí)間周期+統(tǒng)計(jì)粒度+業(yè)務(wù)過程的度量(描述)。請(qǐng)注意,口徑一般包含業(yè)務(wù)口徑和技術(shù)口徑。一般業(yè)務(wù)口徑分析師經(jīng)與策劃等溝通后會(huì)給到一個(gè)明確統(tǒng)一的口徑,技術(shù)口徑可能需要我們回填給業(yè)務(wù)。
聲波的常用統(tǒng)計(jì)指標(biāo)一般包括(時(shí)間周期)近1/3/7/15/30日的(統(tǒng)計(jì)粒度)用戶的(業(yè)務(wù)過程)進(jìn)房次數(shù)、進(jìn)房時(shí)長(zhǎng)、消費(fèi)金額、是否留存等等。
step5:結(jié)果驗(yàn)證
構(gòu)建數(shù)據(jù)倉庫,主要是為我們及下游使用方分析數(shù)據(jù),以賦能產(chǎn)品,所以數(shù)據(jù)的準(zhǔn)確性至關(guān)重要,可以先通過網(wǎng)易有數(shù)大數(shù)據(jù)平臺(tái)提供的數(shù)據(jù)測(cè)試中心的測(cè)試功能進(jìn)行測(cè)試、找前輩們r(jià)eview代碼或者通過與已有報(bào)表中相同指標(biāo)進(jìn)行核對(duì),然后再交由分析師配置報(bào)表。
至此,我們將數(shù)據(jù)做了一個(gè)以業(yè)務(wù)過程為分類的縱向劃分,下面要開始對(duì)數(shù)據(jù)做橫向的分層。

2.1現(xiàn)有設(shè)計(jì)
聲波數(shù)據(jù)任務(wù)流的地址為:XXXX。主要分為source_sync、slive_model、reports、transmit四個(gè)目錄。下圖中詳細(xì)描述了各文件存放的數(shù)據(jù)內(nèi)容:

2.2思考
如何進(jìn)行數(shù)據(jù)分層?
常規(guī)的數(shù)據(jù)倉庫模型分層一般包括ODS貼源數(shù)據(jù)層,DIM維度層,DWD明細(xì)數(shù)據(jù)層,DWS輕(中/重)度匯總層以及ADS應(yīng)用數(shù)據(jù)層。在分層中我們需要思考以下問題:
業(yè)務(wù)數(shù)據(jù)是根據(jù)什么(維度、粒度)匯總的,衡量標(biāo)準(zhǔn)是什么?
eg:聲波劃分的粒度包括:用戶粒度、房間粒度、用戶+房間粒度、動(dòng)態(tài)粒度、用戶+動(dòng)態(tài)粒度,衡量標(biāo)準(zhǔn)主要是各粒度下的各種指標(biāo):次數(shù)、時(shí)長(zhǎng)、金額等等。
DIM該如何設(shè)計(jì)?DWD和DWS應(yīng)該如何設(shè)計(jì)?是否有公共的指標(biāo)?
eg:DIM是觀察業(yè)務(wù)的角度,建議可以設(shè)計(jì)主維表(一般為直接從業(yè)務(wù)庫中同步來的、包含常用的屬性、穩(wěn)定性高)和多個(gè)次維表(常變更),因?yàn)榫S表一般有嚴(yán)格的時(shí)間要求與依賴任務(wù),同時(shí)對(duì)與需要經(jīng)常修改的任務(wù)做回跑有利,例如我們?yōu)槁暡ㄓ脩粼O(shè)計(jì)了基礎(chǔ)的dim_slive_user_base_d主維表和指標(biāo)豐富的dim_slive_user_d次維表。
DWD一般是基于具體業(yè)務(wù)過程,構(gòu)建最細(xì)粒度的明細(xì)層事實(shí)表,也可以將明細(xì)事實(shí)表的某些重要維度屬性字段做退化設(shè)計(jì),這里也可以添加一些常用統(tǒng)計(jì)口徑的雜項(xiàng)維度。例如消費(fèi)明細(xì)表中并不是每一筆消費(fèi)都是計(jì)入KPI的,可以添加一些is_real_consume(是否實(shí)際消費(fèi))、is_consume_water(是否消費(fèi)流水)、is_operation(是否運(yùn)營(yíng)操作),這樣便于下游的統(tǒng)計(jì)。
DWS以分析的主題對(duì)象作為建模驅(qū)動(dòng),將相對(duì)應(yīng)的事實(shí)進(jìn)行聚合統(tǒng)計(jì),形成一些輕度聚合、中度聚合或者重度聚合的寬表。
任務(wù)調(diào)度設(shè)置
任務(wù)流建設(shè)是對(duì)整個(gè)業(yè)務(wù)過程的橫向分層,下表是聲波業(yè)務(wù)的任務(wù)分層,也是契合于上述的數(shù)據(jù)分層。

優(yōu)缺點(diǎn):
優(yōu)點(diǎn):相對(duì)于單表單任務(wù)流來講,任務(wù)流依賴配置簡(jiǎn)單,同時(shí)易讀性高;對(duì)于有依賴的任務(wù)可一次性提交回跑任務(wù);核心任務(wù)能夠及時(shí)產(chǎn)出。
缺點(diǎn):相對(duì)于單表單單任務(wù)流來講,定位某表屬于那個(gè)任務(wù)流相對(duì)較慢;某些核心任務(wù)報(bào)表產(chǎn)出相對(duì)延遲些。
注意:
當(dāng)調(diào)度任務(wù)失敗時(shí),要在實(shí)例詳情頁面進(jìn)行重跑;
一般依賴任務(wù)的開始調(diào)度時(shí)間要晚于被調(diào)度的任務(wù);
ads層表從dim/dwd/dws層來調(diào)用,不要直接走ods層。

3.1現(xiàn)有設(shè)計(jì)
快速便捷獲取高質(zhì)量數(shù)據(jù)是業(yè)務(wù)側(cè)的希冀,同時(shí)為減少ad-hoc式的查詢也是我們的希冀。因此構(gòu)建聲波olap模型,目標(biāo)是幫助業(yè)務(wù)人員快速使用數(shù)據(jù),獲取結(jié)果并用于業(yè)務(wù)生產(chǎn)。
取數(shù)模型設(shè)計(jì):

目前模型建設(shè)流程:
業(yè)務(wù)側(cè)/已有報(bào)表中歸納常用指標(biāo)
模型設(shè)計(jì)(常分析的業(yè)務(wù)過程(交易、互動(dòng))的明細(xì)、用戶、房間、用戶+房間的匯總表)
模型評(píng)審
配置模型(使用場(chǎng)景的說明、字段業(yè)務(wù)口徑、技術(shù)口徑、添加自定義維度、自定義度量)
測(cè)試使用
流量自動(dòng)化的解決方案:
策劃梳理坑位信息-〉與策劃勾兌坑位信息-〉設(shè)計(jì)埋點(diǎn)scm信息-〉上傳埋點(diǎn)到埋點(diǎn)平臺(tái)-〉與開發(fā)勾兌埋點(diǎn)內(nèi)容--〉下載最終版坑位信息制作坑位碼表。
設(shè)計(jì)流量自動(dòng)化的聚合表模型:uid+os+appver+mspm+source(+房間id+房間模版類型id)的粒度統(tǒng)計(jì)對(duì)應(yīng)的(曝光、點(diǎn)擊、進(jìn)房)次數(shù)、人數(shù)和時(shí)長(zhǎng)等信息。構(gòu)建流量自動(dòng)化模型,最終可由取數(shù)展示,該模型可以查看日常曝光點(diǎn)擊的坑位PV、UV,同時(shí)可以查看核心(曝光-點(diǎn)擊-進(jìn)房)漏斗數(shù)據(jù)。
3.2思考
目前存在的難點(diǎn),這些都是后期會(huì)優(yōu)化的內(nèi)容。
數(shù)據(jù)側(cè):a.模型設(shè)計(jì)(聚合、解耦) b.模型迭代回跑
平臺(tái)側(cè):a.平臺(tái)開發(fā)進(jìn)度無法滿足模型使用 b.問題響應(yīng)速度依賴其他部門
業(yè)務(wù)側(cè):a.對(duì)數(shù)據(jù)的維度、度量、聚合、日期分區(qū)的理解困難 b.自主分析數(shù)據(jù)的習(xí)慣尚未建立
鴿鴿,網(wǎng)易云音樂高級(jí)數(shù)據(jù)開發(fā)工程師,從事數(shù)據(jù)開發(fā)、數(shù)倉體系架構(gòu)設(shè)計(jì)和模型開發(fā)、數(shù)據(jù)應(yīng)用和服務(wù)等相關(guān)工作。
