美团点评运营数据产品化实战
點擊藍字訂閱,不錯過下一篇好文章
背景
美團點評作為全球最大的生活服務(wù)平臺,承接超過千萬的POI,服務(wù)于數(shù)量龐大的活躍用戶。在海量數(shù)據(jù)的前提下,定位運營業(yè)務(wù)、準確找到需要數(shù)據(jù)的位置,并快速提供正確、一致、易讀的數(shù)據(jù)就變得異常困難,這些困難主要體現(xiàn)在以下方面:
取數(shù)門檻高,找不到切合的數(shù)據(jù),口徑復(fù)雜不易計算,對運營人員有一定的技能要求,人力成本增大;
數(shù)據(jù)處理非常耗時,缺少底層離線數(shù)倉模型建設(shè)和預(yù)計算支撐,Ad-hoc平臺查詢緩慢;
數(shù)據(jù)不一致,不同渠道口徑不一致,缺少對雜亂指標的統(tǒng)一管理;
數(shù)據(jù)反饋形式不友好,缺少數(shù)據(jù)可視化的形式,無法呈現(xiàn)趨勢,繼而影響業(yè)務(wù)人員對多維、降維、對比等情況的進一步分析操作。
因此團隊提出將運營專題數(shù)據(jù)產(chǎn)品化,首先分析面臨的一些問題和挑戰(zhàn)。
挑戰(zhàn)
① 服務(wù)業(yè)務(wù)能力
數(shù)據(jù)模式是需求驅(qū)動導(dǎo)向,這就導(dǎo)致數(shù)據(jù)最初只支持了少數(shù)團隊,而更多有個性化需求的業(yè)務(wù)團隊就無法被支持。
② 存儲、計算、研發(fā)成本
沒有統(tǒng)一的規(guī)范標準管理,造成了重復(fù)計算的資源浪費;數(shù)據(jù)的層次和粒度不清晰,使得重復(fù)存儲嚴重;同時,工程師需要了解研發(fā)流程的整個細節(jié),對研發(fā)的時間和精力成本造成浪費。
③ 數(shù)據(jù)標準不統(tǒng)一
業(yè)務(wù)指標繁雜,即使同樣的命名,但定義口徑也會不一致。例如,支付用戶數(shù)就有多種定義,由此帶來的問題是,都是支付用戶數(shù),應(yīng)該用哪個?為什么數(shù)據(jù)都不一樣?
④ 業(yè)務(wù)分析響應(yīng)能力
即使擁有健壯的數(shù)倉模型支撐,但最終能否快速響應(yīng)多維計算,進行對比分析,同時做到數(shù)據(jù)可讀,都是對產(chǎn)品交互和服務(wù)能力的一種挑戰(zhàn)。
針對以上的問題和挑戰(zhàn),開始制定建設(shè)方案。
方案
首先,構(gòu)建了一個針對境內(nèi)旅游運營側(cè)全域的公共底層數(shù)據(jù),將不同平臺促銷系統(tǒng)的數(shù)據(jù)按業(yè)務(wù)整合到一起,同時劃分不同活動主題,按事件再向上聚合,做專題的數(shù)據(jù)支撐,統(tǒng)一數(shù)據(jù)出口。然后通過多維預(yù)計算引擎對事實數(shù)據(jù)進行預(yù)計算,構(gòu)建數(shù)倉與應(yīng)用的管道,從而節(jié)省計算成本,并且提升了數(shù)據(jù)互通和消費的效率,最后建設(shè)統(tǒng)一的數(shù)據(jù)服務(wù)中臺,搭配不同端的Web應(yīng)用。通過豐富的可視化效果,及多樣的分析對比操作,快速、全面地支撐運營業(yè)務(wù)。
以下為整個產(chǎn)品的功能模塊圖:
圖1 運營專題整體功能模塊圖
如圖所示,運營專題數(shù)據(jù)的產(chǎn)品化,根據(jù)需要解決的問題劃分了多個不同的層次,每一層除其需要面對的核心問題外,還有其領(lǐng)域內(nèi)其它功能模塊的抽象和擴展,下面將會按照層次劃分逐一介紹各個模塊。
數(shù)據(jù)倉庫層
數(shù)據(jù)生產(chǎn)和消費的基礎(chǔ)平臺,是整個數(shù)據(jù)產(chǎn)品化過程中最核心的角色。數(shù)據(jù)倉庫的模型建設(shè),不但影響產(chǎn)品化的難易程度及可行性,更是數(shù)據(jù)一致性等關(guān)鍵問題的直接因素,所以為降低使用門檻、統(tǒng)一數(shù)據(jù)標準、支撐上層更合理的架構(gòu),模型的選取就變得尤為重要。
領(lǐng)域內(nèi)常見的建模方法
① 3NF模型
3NF模型(又叫“范式模型”)是數(shù)據(jù)倉庫之父Inmon提出的,它用實體加關(guān)系的數(shù)據(jù)模型描述業(yè)務(wù)架構(gòu),在范式理論上符合3NF,是站在全局角度面向主題的抽象。它更多的是面向數(shù)據(jù)的一致性治理。3NF模型最基本的要素是實體、屬性和關(guān)系:
實體:相同特征和性質(zhì)的屬性抽象,用抽象的實體名和屬性名集合共同刻畫的邏輯實體;
關(guān)系:實體之間的關(guān)系;
屬性:實體的某種特性,一般實體具有多個屬性。
② 維度模型
維度模型是Kimball提出的。維度模型多為分析和決策提供服務(wù),因此它重點解決快速完成分析,同時提供大規(guī)模復(fù)雜查詢的響應(yīng)性能(預(yù)聚合),更直接地面向業(yè)務(wù)。例如熟知的星形模型,以及特殊場景的雪花模型。維度建模最基本的要素是事實和維度:
事實表:一般由兩部分組成,緯度和指標,通常理解為“某人在某時間某地點通過某手段做了什么事情”的事實記錄,它體現(xiàn)了業(yè)務(wù)流程的核心內(nèi)容;
維度表:看待事實的角度,用以描述和還原事實發(fā)生的場景,比如通過地址、時間等維度還原業(yè)務(wù)場景。
③ DV模型(DataVault)
DataVault是Dan Linstedt發(fā)起的,是一種介于3NF和維度建模之間的建模方法。它的設(shè)計主要是滿足靈活性、可擴展性、一致性和對需求的適應(yīng)性。它強調(diào)建立一個可審計的基礎(chǔ)數(shù)據(jù)層,主要包括Hub(核心實體)、Link(關(guān)系)、Satellite(實體屬性)三個要素。
④ Anchor模型
Anchor模型由Lars. R?nnb?ck提出,是DataVault模型的進一步范式化處理,核心思想是只添加、不修改的可擴展模型,Anchor模型構(gòu)建的表極窄,類似于K-V結(jié)構(gòu)化模型。它主要包括Anchors(實體且只有主鍵),Atributes(屬性),Ties(關(guān)系),Knots(公用枚舉屬性))。Anchor是應(yīng)用中比較少的建模方法,只有傳統(tǒng)企業(yè)和少數(shù)幾家互聯(lián)網(wǎng)公司有應(yīng)用,例如:螞蜂窩等。
運營專題數(shù)據(jù)如何構(gòu)建?
隨著促銷系統(tǒng)不斷發(fā)展,平臺趨于穩(wěn)定,再結(jié)合各活動類型,及對需求的整理和進一步產(chǎn)品化,選擇了3NF+維度建模為基礎(chǔ)的模型方法論,對數(shù)據(jù)進行合理劃分和整合,構(gòu)建了運營專題數(shù)據(jù)體系。
① 數(shù)據(jù)規(guī)范制定
數(shù)據(jù)規(guī)范的制定也是指標字典和服務(wù)層規(guī)則引擎抽象的基礎(chǔ)。首先同業(yè)務(wù)達成共識,制定數(shù)據(jù)一致性標準,統(tǒng)一口徑。同時將核心指標和個性化指標進行抽象,抽取統(tǒng)一規(guī)范定義,例如:月初到月末的整體交易類GMV和補貼類GMV,其原子指標是GMV,其它要素都屬于指標的修飾。
圖2 數(shù)據(jù)規(guī)范抽象示意圖
② 數(shù)倉模型架構(gòu)
將數(shù)據(jù)分為ODS層、BAS層、FACT層、TOPIC層。
ODS層主要功能:從分布式消息隊列中消費Binlog和Click-log,并對埋點數(shù)據(jù)進行清洗和業(yè)務(wù)庫數(shù)據(jù)還原,并根據(jù)需要增量或全量同步到Hive,同時積累歷史數(shù)據(jù)并保存。
BAS層主要功能:采用3NF建模方法,對整體業(yè)務(wù)進行概念抽象及適當冗余,在保證數(shù)據(jù)一致的同時將同屬性實體歸納整合到同一邏輯域。BAS層主要是為了減少數(shù)據(jù)的不一致,減少存儲空間,響應(yīng)業(yè)務(wù)系統(tǒng)的變化,避免更新異常。
FACT層主要功能:采用維度建模方法,根據(jù)活動特點及事實場景,對代金券、現(xiàn)金券、促銷等的事件進一步整合。經(jīng)過對維度的預(yù)處理,在使用信息的時候,不但減少時間成本、提高數(shù)據(jù)的提取效率,又為用戶在Ad-Hoc平臺查詢提供很好的支撐,同時它成為了上層數(shù)據(jù)應(yīng)用的關(guān)鍵出口。
TOPIC層主要功能:該層建設(shè)不是必須的,是針對業(yè)務(wù)中個性化訴求,根據(jù)需要建設(shè)專題數(shù)據(jù)。服務(wù)小范圍業(yè)務(wù)群體和用戶,用來支撐核心業(yè)務(wù)指標外的某一塊個性化指標和應(yīng)用。
圖3 數(shù)據(jù)倉庫模型圖
如圖所示,數(shù)倉模型整體架構(gòu)圖。通過構(gòu)建運營專題的底層數(shù)據(jù),針對數(shù)據(jù)一致性等問題,在數(shù)倉層面上得到了很好的解決,同時在數(shù)據(jù)提取效率上有很大的提升。數(shù)倉建設(shè)為接下來的業(yè)務(wù)支撐打好了充分的基礎(chǔ)。
多維預(yù)計算層
預(yù)計算層是連接數(shù)據(jù)和應(yīng)用之間的管道,是應(yīng)用層垂直模塊的專項支持。它是在Fact層數(shù)據(jù)之上的預(yù)聚合,強依賴于數(shù)倉模型中事實和維度的構(gòu)建以及預(yù)關(guān)聯(lián)。預(yù)計算采用Kylin引擎構(gòu)建Cube聚合組,來解決取數(shù)門檻和數(shù)據(jù)處理耗時等問題,同是提供多維分析的能力,不但提供了新的Ad-Hoc(Query Engine)平臺,在提高查詢響應(yīng)的同時,又能為產(chǎn)品帶來更流暢的交互,增強用戶體驗。例如:創(chuàng)建一個交易數(shù)據(jù)cube,它包含日期(datakey)、用戶(userid)、付款方式(paytype)、購買城市(city)。為滿足不同消費方式在不同城市的應(yīng)用情況和查看用戶在不同城市的消費行為,建立以下兩個聚合組,包含的維度和方式如圖所示:
圖4 構(gòu)建cube示例圖
中臺服務(wù)層
數(shù)據(jù)預(yù)計算之后,需要分別對PC和移動端提供計算和裝載,并且要針對不同端的特定模塊做特定的開發(fā),為了應(yīng)對多變的業(yè)務(wù)邏輯,以及未來的可擴展能力,需要提供可插拔的、統(tǒng)一的服務(wù)層,該層主要可以解決如下問題:
服務(wù)與預(yù)計算數(shù)據(jù)同步,數(shù)據(jù)模型的修改只影響到預(yù)計算層,同時服務(wù)層還可以完全感知預(yù)計算數(shù)據(jù)的變化,不需要對服務(wù)做開發(fā)調(diào)整,實現(xiàn)數(shù)據(jù)變更的同步響應(yīng);
服務(wù)與端解耦,針對不同端產(chǎn)品提供統(tǒng)一數(shù)據(jù)服務(wù),避免重復(fù)開發(fā),同時產(chǎn)品的迭代升級與服務(wù)層隔離,應(yīng)對多變的業(yè)務(wù)發(fā)展和增長;
服務(wù)擴展能力增強,支持服務(wù)的橫向擴展,不影響正常業(yè)務(wù)的同時提高服務(wù)能力,同時在該層實現(xiàn)可抽象通用操作以及規(guī)范管理。
總體架構(gòu)
圖5 運營專題產(chǎn)品架構(gòu)圖
整個服務(wù)由獨立的Web應(yīng)用端發(fā)起請求,通過權(quán)限驗證后對中臺發(fā)起調(diào)用,然后讀取配置中心的配置,由計算引擎對數(shù)據(jù)進行并行計算,同時規(guī)則引擎按業(yè)務(wù)線和指標修飾詞等生產(chǎn)衍生指標,然后將引擎完成的數(shù)據(jù)按周期進行快照,存入備忘錄,同時關(guān)聯(lián)指標字典將數(shù)據(jù)與文案返回前臺,最后按功能再對數(shù)據(jù)做可視化處理。下面分別對服務(wù)中交互的幾個模塊做簡單的介紹。
配置中心
把系統(tǒng)的各類資源(比如:數(shù)據(jù)庫、服務(wù)地址、緩存等)以及多個環(huán)境和具體業(yè)務(wù)邏輯(比如:業(yè)務(wù)線、平臺、指標類型),按功能特性抽取出公共的控制的線頭,在需要調(diào)整的時候,人為的控制系統(tǒng)。
圖6 配置中心示意圖
如圖所示,用戶通過單獨的配置入口,將系統(tǒng)配置、優(yōu)化條件判斷、業(yè)務(wù)線個性化指標配置等信息提交到Server,運行時Client會到Server拉取配置,放入緩存,并定時持久化到本地文件,方便異常中斷或重啟時手動或自動重新加載配置。
指標字典
公司中的很多運營部門指標定義不清晰或不盡相同,但叫法相同(文案),又或者叫法相同指標口徑不同,出現(xiàn)一些對指標的理解不一致,含義不清等問題。基于指標字典,不但是指標命名的規(guī)范和明確,也是統(tǒng)一計算口徑的落地,接入規(guī)則引擎后生成關(guān)聯(lián)衍生指標,即可自助完成查詢和分析。可見,指標字典的建立,是數(shù)據(jù)服務(wù)平臺的基礎(chǔ)。
圖7 指標字典思維導(dǎo)圖
如圖所示,基于數(shù)倉中對數(shù)據(jù)規(guī)范的制定,將指標按業(yè)務(wù)線、類型、基礎(chǔ)、衍生等劃分為不同類別,并對指標名稱、別名、口徑等信息落地入庫,進行持久化存儲。
規(guī)則引擎
運營業(yè)務(wù)的特點是運營活動規(guī)則的多變,需要很多個性化配置。為解決復(fù)雜和復(fù)合的計算問題(維度和事實的交叉)并降低維護成本,將邏輯從“硬編碼”中將規(guī)則抽離,然后根據(jù)不同業(yè)務(wù)線特點按修飾詞進行隔離,提高應(yīng)用靈活性,簡化架構(gòu)。
圖8 規(guī)則引擎示意圖
① 數(shù)據(jù)準備規(guī)則
在應(yīng)用數(shù)據(jù)計算之前把外部數(shù)據(jù)引入作為規(guī)則匹配運算的算子或數(shù)據(jù)集,例如某活動針對全部用戶做發(fā)紅包活動,而在活動中針對新用戶發(fā)x面額的紅包,而針對老用戶發(fā)y面值的紅包。其規(guī)則條件為:紅包金額大于小于等于,且使用地點為上海北京全部;
② 數(shù)據(jù)計算規(guī)則
實現(xiàn)對業(yè)務(wù)規(guī)則的變量和參數(shù)化,按指標字典中的指標定義,轉(zhuǎn)化為計算表達式,使得規(guī)則執(zhí)行的結(jié)果作為其他規(guī)則條件的計算因子,生成衍生指標。
計算引擎
計算引擎(core模塊)在對數(shù)據(jù)進行處理時對數(shù)據(jù)進行了分片,分桶等優(yōu)化操作,在面對多維度大范圍數(shù)據(jù)查詢時一定程度上提升了查詢性能,計算模塊的抽取實現(xiàn)了與業(yè)務(wù)邏輯的解耦,它只負責(zé)任務(wù)的處理和執(zhí)行,可僅對性能進行維護和升級,甚至可以維護不同處理方式的多個計算引擎,無需關(guān)心業(yè)務(wù)邏輯。
圖9 計算引擎示意圖
如圖所示,當引擎接收一個時間跨度較大,維度較多的數(shù)據(jù)時,會先按照時間進行橫向切分,然后將切分的數(shù)據(jù)按維度組合進行縱向切割,每一組都交由一個線程進行處理,并對該結(jié)果數(shù)據(jù)進行tag標記,然后根據(jù)標記在前臺進行整合。
備忘錄
備忘錄是按時間周期對數(shù)據(jù)計算完成裝載后狀態(tài)的快照歷史,是對值和計算規(guī)則的持久化。通過備忘錄可以為用戶提供橫向,縱向等對比分析功能,幫助用戶分析趨勢。簡化示意圖如下:
圖10 備忘錄示意圖
數(shù)據(jù)可視化
面對冰冷的數(shù)字,如何將數(shù)據(jù)組織起來,使其既有吸引力又易于理解?
可視化是解決問題的一種高效的手段,數(shù)據(jù)是強大的,如果能真正理解其中的內(nèi)容。
運營專題產(chǎn)品采用了開源的Echarts,通過定制化開發(fā)的可視化數(shù)據(jù),幫助用戶將數(shù)據(jù)轉(zhuǎn)化為可以付諸行動的見解,在提供可視化數(shù)據(jù)的同時,又為專題數(shù)據(jù)特定模塊提供特定的降維,對比等線上分析操作。
趨勢對比
通過維度的篩選切換,業(yè)務(wù)不同視角的核心指標趨勢一目了然,不僅提供不同時間粒度同環(huán)比的縱向比對,還提供同級指標的橫向比對,努力做到多角度、全方位的數(shù)據(jù)呈現(xiàn)。
圖11 產(chǎn)品趨勢對比圖
降維操作
為更好的認識和理解數(shù)據(jù),降低復(fù)雜度,緩解“信息豐富、知識貧乏”現(xiàn)狀,提供了降維操作,讓原本稀疏分布在各維度的特征聚斂,將某類特性更直接的表現(xiàn)出來。
圖12 產(chǎn)品降維操作圖
指標對比
將業(yè)務(wù)人員的線下熱操作簡移到線上,通過將維度壓扁拉伸成縱向指標,進行多維指標的對比,并提供明細。
圖13 產(chǎn)品指標對比圖
多維查詢
為支持更好的OLAP分析,發(fā)揮預(yù)計算層的作用,還提供了關(guān)鍵指標解析和多維查詢的功能,是產(chǎn)品對常規(guī)性分析的功能補充。
圖14 產(chǎn)品多維查詢圖
總結(jié)
在運營專題數(shù)據(jù)產(chǎn)品化的過程中,將技術(shù)轉(zhuǎn)化為價值,提煉數(shù)據(jù)內(nèi)容、為業(yè)務(wù)賦能是真正的發(fā)力點,為發(fā)揮數(shù)據(jù)的最大價值以及帶給用戶更好的體驗,投入了大量的思考與實踐,最終產(chǎn)品的生產(chǎn)投入為現(xiàn)階段帶來了以下收益:
數(shù)據(jù)標準統(tǒng)一:數(shù)據(jù)指標口徑一致,各種場景下看到的數(shù)據(jù)一致性得到保障,支撐多個團隊;
極大擴展性:服務(wù)了內(nèi)部全運營業(yè)務(wù)團隊,滿足不同團隊的個性化需求;
統(tǒng)一服務(wù):建立了統(tǒng)一的數(shù)據(jù)服務(wù)和中臺服務(wù),支持靈活配置;
計算、存儲、研發(fā)成本:增強了指標的復(fù)用、模型分層、粒度清晰,精簡了數(shù)據(jù)表的落地量,通過數(shù)據(jù)分域、模型分層,節(jié)省了研發(fā)的時間和精力;
業(yè)務(wù)支持:豐富的可視化數(shù)據(jù),提供多維、降維、對比等多樣的分析操作,多方位全角度支撐業(yè)務(wù)。
招聘
團隊長期招聘數(shù)據(jù)倉庫、數(shù)據(jù)開發(fā)工程師,歡迎對大數(shù)據(jù)領(lǐng)域感興趣的同學(xué)投遞簡歷到y(tǒng)angguang09#meituan.com,期待您的加入。
作者簡介
吉喆,美團點評系統(tǒng)開發(fā)工程師,曾就職于新浪,美團,阿里巴巴從事系統(tǒng)開發(fā)及數(shù)據(jù)開發(fā)工作,2017年加入美團點評,負責(zé)數(shù)據(jù)倉庫建設(shè)和產(chǎn)品開發(fā)相關(guān)工作。
大數(shù)據(jù)
美團點評基于Storm的實時數(shù)據(jù)處理實踐
美團點評酒旅數(shù)據(jù)倉庫建設(shè)實踐
美團點評
技術(shù)團隊
http://tech.meituan.com
長按二維碼關(guān)注我們
更多技術(shù)博客:美團點評技術(shù)博客。
總結(jié)
以上是生活随笔為你收集整理的美团点评运营数据产品化实战的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机科学与技术导论结课报告,计算机科学
- 下一篇: 课堂教学反思