企業(yè)級數倉建設,值得收藏!附PDF下載


一、前言
1.1 背景
無憂搬家數據以前很多都是數倉同學從業(yè)務庫負責接入數據至ods層,然后就由各個下游分析師取ods貼源層數據然后進行取數計算分析,數倉這邊缺乏沉淀公共層數據,從而有以下問題:

251506bk-1.png


直接從ods貼源層取數據,業(yè)務研發(fā)側一改造則下游鏈路級聯(lián)影響改動很大
各數據分析下游從源頭貼源層就直接各自依賴計算,數據鏈路十分零散不好管理
貼源層數據與業(yè)務側保持一致,存在業(yè)務側數據質量問題導致污染各數據下游風險
數據指標缺乏公共層沉淀,各下游數據分析重復計算資源浪費
1.3 解決方案
基于以上的背景,為提高數據的易用性和復用性、減少數據冗余、提高數據產出效率,數倉開發(fā)這邊協(xié)同調研并結合下游BI需求,搭建無憂搬家主題域公共層數倉模型,包含無憂搬家訂單主題、無憂搬家小哥主題等等,現在無憂搬家主題域沉淀了數倉公共層以后,以上問題可以得到有效緩解,下游能依賴數倉公共層(dwb&dws) 的任務則直接優(yōu)先依賴使用該層級表,這樣可以做到:


251506bk-2.png



盡可能地屏蔽業(yè)務側改造對下游的直接影響,提升下游數據分析的穩(wěn)定性
提效BI同學和運營同學的數據分析需求,提升數據的易用性和復用性、提高數據鏈路產出效率
公共層表沉淀了核心基礎字段供下游使用,公共通用的基礎指標和字段避免了下游重復計算
承擔起數據質量保障環(huán)節(jié),在關鍵核心表設計 大禹 數據治理平臺監(jiān)控規(guī)則告警及熔斷機制
收斂了數據任務分散情況,優(yōu)化數據鏈路,構建良好的血緣關系和數據架構
二、數倉建設
講完上面的背景和解決方案,接下來就來分享下無憂搬家數倉建設的實際落地過程,數倉建設這個對于數倉開發(fā)工程師來說是必備的能力,比如當你面臨著一個新業(yè)務的開啟,就需要從0到1開始搭建數據倉庫或者數據集市,這時候就要考慮數據如何組織和設計才能使下游數據分析團隊提效以及增強數倉模型的健壯性。

2.1 數倉概述
數據倉庫具有面向主題的特性,那么就會有主題的概念,同時,數倉建設是遵循縱向分層開發(fā),橫向劃分主題域設計,遵循以下這個架構圖,我們就可以以類似二維圖清晰地定位出數據,這也從宏觀上體現了數據資產中的數據組織。

251506bk-3.jpg

2.2 建設步驟
2.2.1 業(yè)務調研
數倉開發(fā)是承上對接業(yè)務研發(fā)側&承下對接數據分析側,在數倉建設前期要對上游業(yè)務過程和對下游數據分析指標體系有所了解和熟知,然后拉齊上下游溝通數據口徑和梳理設計數倉表搭建。

無憂搬家的整體的業(yè)務流程

先是邀約部門針對獲取到的已有線索,邀約感興趣成為平臺搬家小哥的成員,然后來到貨拉拉各城市的培訓點進行面試,然后注冊認證并交保證金成為我們平臺的一位搬家小哥,搬家小哥也會有角色,比如小哥隊長和小哥隊員等,成為搬家小哥后就可以開始接單和做單了,當然搬家小哥由于各種原因也可以從平臺退保證金之后退出平臺,這是搬家小哥的大致業(yè)務過程。對于用戶而言,下無憂搬家單其實跟下貨運單無過多差別,貨運單跟無憂搬家單的區(qū)別就在于后者會提供搬運服務且參與對象多了搬家小哥這個主體。

2.2.2 主題域劃分
數倉主題域:主題域通常是聯(lián)系較為緊密的數據主題的集合,根據業(yè)務需求分析的視角進行劃分抽象歸類。

劃分方法:主題域劃分的方法一般有幾種

要么按照業(yè)務過程來劃分,一個業(yè)務過程抽象出一個主題域,比如業(yè)務系統(tǒng)中的商品、交易、物流等
要么按照業(yè)務部門來劃分,一個業(yè)務部門抽象出一個主題域,比如中臺部門、業(yè)務運營部門、供應鏈部門等
要么按照業(yè)務系統(tǒng)來劃分,一個業(yè)務系統(tǒng)抽象出一個主題域,比如搬家系統(tǒng)、erp系統(tǒng) 等
無憂搬家業(yè)務的數倉建設項目,是一個面向搬家業(yè)務部門級的數據集市,因為其業(yè)務特性和定位,無憂搬家是公司業(yè)務中一個獨立的業(yè)務線,所對應的業(yè)務系統(tǒng)和數據庫也是跟其他系統(tǒng)獨立開的,比如無憂搬家訂單數據沒有整合到貨運交易訂單中,以及搬家小哥這個角色在貨運整體業(yè)務線中也不存在該實體,那么這時候采用上面第3點劃分方法,在已有企業(yè)級數倉中,按照業(yè)務系統(tǒng)來劃分,新增一個無憂搬家主題域,就不會在建設過程中出現一些‘扯皮’操作,出現數據邊界歸屬問題。

小結:主題域的劃分一般比較謹慎,一旦定下來了避免頻繁變動,雖然數倉建設是迭代建設的,不能保證一次性初始化好,但我們的主題域劃分和主題劃分要盡可能地涵蓋企業(yè)的所有業(yè)務,以及在新業(yè)務進來時能夠無影響地被包含進來和可擴展主題域和主題,企業(yè)級數倉做主題劃分和主題域劃分,建議還是要站在全局的視角來看,然后先劃分出主題域,再接著在主題域里面劃分出各個主題,比如幾個核心大域,貨運交易訂單域、貨運用戶域、貨運司機域。

2.2.3 主題劃分
數倉主題:是在較高層次上將企業(yè)生產上的各個系統(tǒng)中某一分析對象的數據進行整合、歸類并分析的一種范圍,屬于一個抽象概念,簡單點說每一個主題對應一個宏觀分析領域。

劃分方法:說白了主要就是要識別出分析對象主體,比如上面的主題域劃分完了后就產生一個搬家主題域,如果把搬家分析作為一個分析領域,那么‘搬家分析’所涉及到的主要分析對象就有用戶、訂單、搬運工 等,則數倉的主題就可以劃分為訂單主題、搬運工主題 等下游數據分析師關注度高的數據主題聚焦分析。

2.2.4 輸出總線矩陣
即業(yè)務過程和維度,組建成的矩陣。

251506bk-4.jpg
輸出總線矩陣
2.2.5 數倉分層設計模型表開發(fā)
數倉分層的每一層建設都有其專屬的職責和側重點,數倉分層設計很重要,但如何分層以及命名其實沒有固定的標準,各層之前的職責在各行業(yè)和公司也各有理解和應用,我建議是無需深究概念,不追究千篇一律都一致,但要知其各層主要職責劃分和按公司內部約定好的規(guī)范應用遵守。

貨拉拉的數倉分層設計

「ODS貼源數據層」:主要同步業(yè)務庫數據與其保持一致,不做數據清洗動作
「DWD明細數據層」:存儲各個單一業(yè)務過程的明細數據,采用表視圖方式,對ODS層數據清洗數據清洗和數倉規(guī)范化,降低存儲成本,并給上下游留下了改造兼容的緩沖層
「DWB基礎寬表層」:此層主要采用寬表思路,用來做主題基礎明細寬表,面向主題把不同業(yè)務過程的DWD明細表和視圖關聯(lián)起來做數據橫向整合,結合下游數據指標分析做打標簽化,沉淀指標復雜口徑邏輯
「DWS輕度匯總層」:存放同主題業(yè)務下的通用匯總數據,這一層通常是抽象出一些通用指標和原子指標,會涉及復雜的數據邏輯計算而得出一些公共通用指標
251506bk-5.png
無憂搬家主題域的模型表分層設計架構圖
健壯性評估

當后續(xù)搬家主題域業(yè)務新增,還可以輕松地擴展出其他主題,畢竟按照上面的劃分法,搬家的數據基本都劃分在搬家主題域,剩下的就是搬家有新業(yè)務進來時擴展新主題或包含進已有主題。

模型表開發(fā)舉例講解

表名:無憂搬家訂單費用基礎寬表

設計:把dwd費用明細表,縱表打橫成為橫表(寬表) ,屏蔽各個type費用項對應的映射關系取值,統(tǒng)一由數倉來做解析,提升下游對費用明細數據的易用性。

做法:收斂粒度到order_id每筆訂單,對應各自的費用項,并處理出一個各費用項的拼接標識去重數組,使得下游使用時可以區(qū)分出這筆訂單到底是沒有這個費用項還是這筆費用項本來值就為0。

優(yōu)勢:提升了數據易用性,收斂了數據量。

2.2.6 數據質量保障
傳統(tǒng)數據開發(fā)流程中,往往是大數據調度平臺線上執(zhí)行腳本代碼后,大數據集群計算再寫入數據表,我們只根據數據任務的執(zhí)行狀態(tài)(成功or失敗)來判斷數據任務是否成功產出,但數據質量卻沒有得到保障,比如數據任務執(zhí)行成功但數據未寫入,比如字段數據錯位,比如不合理的數據空值插入等等各種數據質量問題,所以我們有必要增加一個環(huán)節(jié)-數據質量監(jiān)控 ,輔助我們做到故障升級前及時感知,故障升級后快速定位。

監(jiān)控規(guī)則設計思路 & 實踐

以下思路最終形成的實現邏輯借助大數據內部自研數據治理平臺-大禹 來配置監(jiān)控規(guī)則及時感知業(yè)務數據以及熔斷數據質量避免污染傳遞下游。

表數據量波動監(jiān)控
監(jiān)控數據量波動情況有助于我們識別出暴漲暴跌場景。

比如:全量表數據量一般只可能大于上一天數據量,跌了or等于都可能代表著數據異常了。

表字段枚舉值值域監(jiān)控
枚舉值值域監(jiān)控主要針對的是業(yè)務側改動場景,改動頻率不高但設計這類監(jiān)控可以讓我們及時感知到業(yè)務側的數據變動調整。

比如:主訂單表的order_status主訂單狀態(tài)枚舉值 和 搬運訂單表的order_status搬運訂單狀態(tài)枚舉值,監(jiān)控業(yè)務側改動場景。

表核心指標異常監(jiān)控
通過一些數據場景來監(jiān)控數據是否異常。

比如:一般訂單主表內每筆訂單都會攜帶地理位置信息的addr_info字段json數組數據,通過對addr_info解析出來的地理位置信息數據設計null校值驗,從而就能發(fā)現無憂搬家地理位置解析表的地理位置信息數據異常。

表多源join抽樣監(jiān)控
因為寬表層會有較多的join場景和字段很多,所以可以按每個join子查詢抽樣監(jiān)控一兩個關鍵指標。

三、結語
自此無憂搬家主題域數據倉庫建設目前已介紹完畢。無憂搬家主題域目前建設了無憂搬家訂單主題&無憂搬家小哥主題,從依賴到 數倉 公共層(dwb&dws)下游鏈路來看:

目前就覆蓋滿足了下游數據分析團隊的上千個數據分析任務,數據鏈路不再像以前各自分散不好管理,且 業(yè)務 改造也不會直接影響到 數據分析師 們的任務,由數倉公共層數據模型為其保障了數據質量,以更加良好的數據模型和數據架構賦能業(yè)務,助力貨拉拉業(yè)務更好更快的向前發(fā)展。

當然,無憂搬家公共層模型現在還不算完善,這也不止無憂搬家業(yè)務線,貨運業(yè)務線的其他主題域公共層模型也需要持續(xù)迭代升級,以及歷史存量不規(guī)范和無效任務治理,數據質量監(jiān)控設計還沒完全覆蓋,我們會在未來繼續(xù)迭代,夯實數倉公共層模型,沉淀好數據資產。


作者:江鑫彪


歡迎關注微信公眾號 :大數據球球