如何基于DataWorks構建數(shù)據(jù)中臺?
????為了應對眾多業(yè)務部門千變萬化的數(shù)據(jù)需求和高時效性的要求,阿里巴巴首次提出了數(shù)據(jù)中臺的概念,經過眾多項目的實踐已經沉淀出了標準化的流程和方法論。如何構建一個數(shù)據(jù)中臺?一個好的數(shù)據(jù)中臺需要具備哪些功能?原盒馬在線數(shù)據(jù)平臺研發(fā)負責人歡伯向大家分享新零售企業(yè)如何基于DataWorks構建數(shù)據(jù)中臺的經驗心得,從商業(yè)模式及業(yè)務的設計,到數(shù)據(jù)中臺的架構設計與產品選型,再到數(shù)據(jù)中臺構建的最佳實踐,最后利用數(shù)據(jù)中臺去反哺業(yè)務,輔助人工與智能的決策。
一 新零售的商業(yè)模式
一家新零售企業(yè)如果要做數(shù)據(jù)中臺的話,首先很重要的一點就是一定要懂業(yè)務。之前有位同學問過我,說數(shù)據(jù)中臺很難建。在我看來,數(shù)據(jù)跟業(yè)務是息息相關的,在構建整個數(shù)據(jù)中臺的時候,首先要對業(yè)務有一個非常深刻的理解。
新零售企業(yè)會有各種各樣的業(yè)務形態(tài),例如線上電商平臺、線下門店、官方APP、分銷渠道、供應鏈等等,我們沒必要在一開始就要求把所有渠道的數(shù)據(jù)都收集起來,做大一統(tǒng),就是做數(shù)據(jù)中臺了。我們在最開始需要了解的是整個企業(yè)的商業(yè)模式是什么,基于商業(yè)模式,我們再來定義需要做的業(yè)務形態(tài),最后的事情才是開始規(guī)劃企業(yè)新零售數(shù)據(jù)中臺的建設。在這里可以給大家舉個例子。
例如比較多的新零售企業(yè)原先是以線下門店為主的,現(xiàn)在會做一些線上APP或者電商業(yè)務,但是它線上的庫存和線下的庫存是不同步,或者電商的款和線下的款是不一樣的。那他的商業(yè)模式其實還是傳統(tǒng)的零售業(yè)務,只不過開了另外一條線上的業(yè)務。數(shù)據(jù)中臺首先需要的是打破企業(yè)原先的商業(yè)模式,設計一個真正線上線下融合的業(yè)務形態(tài),所以我們經常說數(shù)據(jù)中臺是企業(yè)一把手工程。
確定了商業(yè)模式之后,新零售企業(yè)的業(yè)務形態(tài)也有很多,大家都在做不同的嘗試,例如一些生鮮業(yè)務會有XX分鐘限時達、有線下門店的企業(yè)會把線下流量導入到線上,同時把線下門店當做線上入口的一個倉、也有企業(yè)線上購買后可以到線下門店提貨,保證線上線下同款同價等等。當確定了這些業(yè)務形態(tài)后,我們再來聊數(shù)據(jù)中臺如何去支撐這些業(yè)務,通過數(shù)據(jù)的打通來完成整個商業(yè)模式的閉環(huán)。
二 新零售企業(yè)產品技術架構設計
?? 
業(yè)務產品技術架構圖
確定業(yè)務模式后,接下來需要做純產品技術架構的設計。這時候許多零售的企業(yè)會比較糾結,因為發(fā)現(xiàn)做零售、門店、商超,很多傳統(tǒng)的軟件廠商有一個現(xiàn)成的軟件體系,比如說ERP、WMS,對于企業(yè)來說是不是買一套就可以了?
現(xiàn)在傳統(tǒng)的ERP軟件或者是物流軟件,有一些也做了數(shù)字化,但是很重要區(qū)別是,數(shù)據(jù)中臺做的數(shù)字化不只是為了簡單的數(shù)字化、把數(shù)據(jù)結構化,更重要的是為上層策略層做一個非常重要的支撐,讓數(shù)據(jù)中臺對流量、物流履約、流程優(yōu)化、財務策略做一個非常好的智能化的支持。在這里可以稍微分享一個例子,我們之前也調研過一些線下有門店的大型零售商超企業(yè),他們也做線上的APP,但他們的庫存線上線下是隔離的,如果總共有100條魚,APP內會預先分配好,線上只賣10條,賣完之后線上就沒有了,而擁有數(shù)據(jù)數(shù)據(jù)中臺之后,這100條魚線上和線下先到先得,同時可以通過算法預測做庫存預警、做折扣、做交叉銷售、做供應鏈調整等等,比起粗暴地分成兩撥,數(shù)據(jù)中臺通過這種策略模式,基本上就把整個線下線上的數(shù)據(jù)和商品全部打通,也重構了一些業(yè)務形態(tài),所以我們說數(shù)據(jù)中臺不是簡單地把數(shù)據(jù)結構化。
企業(yè)如果有一定技術能力的話,建議所有核心業(yè)務系統(tǒng)都采用自研的形式,因為新零售企業(yè)需要對很多傳統(tǒng)業(yè)務要做一個全面的數(shù)字化,包括交易、門店、倉儲、運配、采購、供應鏈、勞動力等等。如果外部采購的話,基于商業(yè)模式出發(fā),一定要讓系統(tǒng)形成閉環(huán),從交易門店、倉儲運費、采購供應鏈、勞動力等等,不要APP、門店、電商都不同的系統(tǒng),那樣你做數(shù)據(jù)中臺的時候,數(shù)據(jù)本身的壁壘就已經很高了。
完成整個閉環(huán)中非常重要的一點就是最右側的數(shù)據(jù)層,除了業(yè)務系統(tǒng)的設計,如果沒有統(tǒng)一的數(shù)據(jù)中臺建設,是很難去支撐整個企業(yè)工程的,這也是今天會重點跟大家介紹的部分。
?? 
新零售數(shù)據(jù)中臺團隊介紹
在我們看來,數(shù)據(jù)中臺不僅是一種解決方案,也是一個團隊的職能。企業(yè)應該建設一個獨立的數(shù)據(jù)中臺團隊來支持業(yè)務。對于企業(yè)來說,數(shù)據(jù)和商品、會員以及設備一樣,是非常重要的資產。企業(yè)數(shù)據(jù)中臺團隊的同學,是資產的建設者、管理者和運營者,通過這些資產去驅動整個零售供應鏈全鏈路、智能化的升級。通過采集、管理、建設數(shù)據(jù),讓數(shù)據(jù)更好地運用到業(yè)務上。
?? 
新零售數(shù)據(jù)中臺整體架構
上圖是比較通用的數(shù)據(jù)中臺的整體架構,這部分會有一定的特殊性,也有一些通用性。
首先介紹一下通用性,整個基礎設施的建設基本采用的是阿里云的基礎設施,阿里云上的DataWorks+MaxCompute十一年來一直支持阿里巴巴集團數(shù)據(jù)中臺的建設。在整個數(shù)據(jù)分層這邊,源數(shù)據(jù)層基本上來自于業(yè)務系統(tǒng),接入層相對來說會比較復雜一點,很多企業(yè)現(xiàn)在講全渠道覆蓋,包含APP,線下,甚至一些企業(yè)還有自己的配送員、電動車,以及門店的一些IOT設備數(shù)據(jù),人力資源等,所以這里面就會出現(xiàn)很多結構化和非結構化的數(shù)據(jù)。通過數(shù)據(jù)加工層把非結構化的數(shù)據(jù)進行一定的加工,最終會形成非常重要的數(shù)據(jù)資產層。
數(shù)據(jù)資產層構建之后就會有一定的業(yè)務含義,這部分數(shù)據(jù)是可以直接被業(yè)務使用的。但是在數(shù)據(jù)資產層上我們會定一層數(shù)據(jù)服務層,讓數(shù)據(jù)使用起來更方便,開箱即用。到了服務這一層,可能還是無形的,從業(yè)務方來看,肯定希望業(yè)務用戶能直接去用數(shù)據(jù),而不是去到很多表里面查數(shù)據(jù)。所以在數(shù)據(jù)服務層之上,數(shù)據(jù)應用層數(shù)據(jù)中臺團隊可以建立很多數(shù)據(jù)產品,通過產品化的方式給到業(yè)務,提供真正的數(shù)據(jù)使用。產品形式也會比較多,在不同的端,包括PC、釘釘、掌中寶,還有很多IOT的小設備,可能就是一個小的黑白屏幕,都會有數(shù)據(jù)的透傳。并且在最右側數(shù)據(jù)中臺會有一套管理體系,通過這種管理體系,讓企業(yè)整個運營和運維可以有效地執(zhí)行起來。這個架構圖,就是我們理解的一個偏業(yè)務型的數(shù)據(jù)中臺分層架構圖。
?? 
新零售數(shù)據(jù)中臺技術架構
基于剛才提到這種業(yè)務型的數(shù)據(jù)中臺分層架構,我們需要繼續(xù)設計一套數(shù)據(jù)中臺的技術架構。大家如果做過大數(shù)據(jù)的話,在數(shù)據(jù)采集的時候經常會碰到,同時有離線和實時的計算該怎么辦?離線計算我們推薦阿里云上的MaxCompute,阿里巴巴幾乎所有的離線數(shù)據(jù)都放在MaxCompute上,2020年雙11 MaxCompute每日數(shù)據(jù)處理量達到1.7EB級。實時計算我們推薦Flink,峰值每秒處理消息規(guī)模達到40億條,計算的性能也非常強大。除了計算,還要去做數(shù)據(jù)的存儲,比如實時計算Flink的數(shù)據(jù)匯總加工后,可以存儲到MaxCompute交互式分析(Hologres),來構建我們的實時數(shù)據(jù)倉庫,MaxCompute交互式分析(Hologres)可以支持峰值寫入速度達到5.96億條,同時支持PB級數(shù)據(jù)的亞秒級查詢,以及在線搜索Elasticsearch,并且這些存儲都會變成一個個數(shù)據(jù)服務。數(shù)據(jù)服務會有指標明細,還有特征、標簽等等,這些數(shù)據(jù)可以推廣到運營最常使用的一些設備、運營平臺、釘釘移動辦公、智能化管理等,這些更多是runtime層面的。在整個數(shù)據(jù)集市運營層面,還有元數(shù)據(jù)、數(shù)據(jù)質量、容災管控、數(shù)據(jù)治理等等。這個技術架構圖,更多的是當成一個技術需求架構圖,是新零售企業(yè)技術團隊在做數(shù)據(jù)中臺的時候需要去做的一些事情。
三 基于DataWorks的新零售數(shù)據(jù)中臺解決方案
當企業(yè)的商業(yè)模式,業(yè)務產品技術架構,以及數(shù)據(jù)中臺的技術需求整理之后,我們就要開始做一個數(shù)據(jù)中臺的技術選型與技術調研,什么樣的產品什么樣的系統(tǒng)可以去支撐新零售企業(yè)整套的技術架構。之前說到企業(yè)的業(yè)務系統(tǒng)我們建議是自研,但整個數(shù)據(jù)中臺的技術其實是可以不自研的,因為阿里云上已經有非常成熟的產品體系讓我們的新零售企業(yè)去構建自己的數(shù)據(jù)中臺。剛才我們說到了大數(shù)據(jù)計算引擎的選型,離線數(shù)倉可以選擇MaxCompute,實時數(shù)倉可以選擇實時計算Flink+MaxCompute交互式分析(Hologres),這三個產品同時可以無縫組合構建一套完整的實時離線一體化數(shù)據(jù)倉庫,構建數(shù)據(jù)中臺的數(shù)據(jù)開發(fā)與治理工具可以選擇DataWorks,DataWorks服務了阿里巴巴集團幾乎所有的業(yè)務部門,每天集團內部有數(shù)萬名運營小二/產品經理/數(shù)據(jù)工程師/算法工程師/研發(fā)等都在使用DataWorks,同時還服務大量阿里云上的用戶,下面就是DataWorks的整體架構圖:
?? 
DataWorks的整體架構圖
數(shù)據(jù)集成是構建數(shù)據(jù)中臺的第一步,DataWorks對外提供了數(shù)據(jù)集成的能力,它有很多批量、增量、實時、整庫的數(shù)據(jù)集成,能夠支持企業(yè)多種且復雜的數(shù)據(jù)源,目前DataWorks數(shù)據(jù)集成離線同步支持50+種數(shù)據(jù)源,實時同步支持10+種數(shù)據(jù)源,無論數(shù)據(jù)源在公網、IDC、VPC內等環(huán)境,都可以做到安全、穩(wěn)定、靈活、快速地數(shù)據(jù)集成。DataWorks還有一套元數(shù)據(jù)統(tǒng)一管理服務,支持統(tǒng)一的任務調度、同時提供了非常豐富的一站式的數(shù)據(jù)開發(fā)工具,覆蓋了數(shù)據(jù)開發(fā)的整個生命周期,可以極大地提高企業(yè)的數(shù)據(jù)開發(fā)效率。上層還包括了數(shù)據(jù)治理、數(shù)據(jù)服務等,并且它提供了很重要的開放平臺。因為對于絕大部分企業(yè)來說,它的業(yè)務系統(tǒng)可能是自研/采購的產品,通過DataWorks OpenAPI可以對很多功能做二次的加工以及和各種自研系統(tǒng)、項目系統(tǒng)的集成,例如報警信息可以推送到企業(yè)自己的監(jiān)控告警系統(tǒng),目前DataWorks提供的100多個OpenAPI可以讓企業(yè)非常簡單地去實現(xiàn)這個需求。
?? 
基于DataWorks構建新零售數(shù)據(jù)中臺
當我們把這個數(shù)據(jù)中臺技術需求圖與DataWorks做一個比對時,數(shù)據(jù)采集部分對應了DataWorks提供的數(shù)據(jù)集成,基本上左邊的這些數(shù)據(jù)同步的需求DataWorks都可以滿足。在數(shù)據(jù)開發(fā)層,DataWorks通過它的DataStudio、HoloStudio和StreamStudio可以同時完成企業(yè)離線、在線、實時的數(shù)據(jù)開發(fā),并且它還提供了數(shù)據(jù)服務跟開放接口的能力,可以通過OpenAPI的方式跟企業(yè)現(xiàn)有的系統(tǒng)和產品做一個集成。還有很關鍵的一點,DataWorks提供了數(shù)據(jù)地圖和數(shù)據(jù)治理的能力,這兩個功能看似是邊緣功能,但是在整個企業(yè)構建數(shù)據(jù)中臺時起到了一個非常關鍵的作用,這塊后面會繼續(xù)展開。
?? 
數(shù)據(jù)中臺的目標
前面更多地可以看成是數(shù)據(jù)中臺的準備過程,了解企業(yè)的業(yè)務,做了產品系統(tǒng)的設計,并且做了一個技術選型,接下來我們需要確定企業(yè)數(shù)據(jù)中臺建設的目標,目標不代表KPI,它也有可能是使命或者初衷。數(shù)據(jù)中臺建設的目標是,要建立一個數(shù)據(jù)豐富(全鏈路、多維度)、質量可靠(口徑標準,結果準確),運行穩(wěn)定(產出及時、無故障)的一個中間層。很多人會說這是數(shù)據(jù)集市,沒關系,它就是個中間層。還有一點是數(shù)據(jù)中臺要為上層業(yè)務提供可靠的數(shù)據(jù)服務、數(shù)據(jù)產品及業(yè)務應用。這就限定了它不是一個簡單的數(shù)據(jù)倉庫,也不是一個簡單的數(shù)據(jù)集市,而是一個數(shù)據(jù)中臺,是可被業(yè)務去不斷使用的數(shù)據(jù)中臺。如果企業(yè)只是把數(shù)據(jù)同步加工,放到MaxCompute或者開源的Hadoop或者一個數(shù)據(jù)庫里面,那它還只是個倉。我們定義的數(shù)據(jù)中臺是可被業(yè)務直接去使用的,甚至是要給業(yè)務帶來業(yè)務價值的,才叫數(shù)據(jù)中臺。
定義這樣一個目標之后,我們要開始做一個分步拆解,一些業(yè)務團隊在提業(yè)務需求的時候,只會告訴數(shù)據(jù)團隊要一個銷售額的數(shù)據(jù),但是這個銷售額還有限制條件,例如在什么時間段?是否包含退款?是否限制地域等等,所以數(shù)據(jù)中臺首先要做一個指標體系的設計,并且這個指標體系應該在中臺團隊產品化,第二步因為業(yè)務去使用的不是一個表的字段,所以需要一個數(shù)據(jù)模型設計的支撐,讓企業(yè)把數(shù)據(jù)變得更標準,第三步基于我們設計好的模型,我們還要去做數(shù)據(jù)處理任務的開發(fā)。最后我們要把這些數(shù)據(jù)通過數(shù)據(jù)服務的方式開放出去,讓業(yè)務去使用,數(shù)據(jù)服務的形式不限于 Table、API和Report,甚至可以是一個產品或者其他的任何一個東西。
?? 
數(shù)據(jù)集市整體模型架構 - 總體分層
?? 
數(shù)據(jù)集市整體模型架構 - 功能定位
上圖是大家在網上看到比較多的關于數(shù)據(jù)模型或者數(shù)據(jù)集市構建的分層圖——ODS、DWD、DWS和ADS。雖然有很多概念和理念,但是每個人對這幾層的理解是不一樣的,我們要對這幾層有非常嚴格清晰的定義,每一層要有每層自己的特點和職責。在我們看來,簡單概述地說:
- ADS一定要是面向業(yè)務的,不是面向開發(fā)的,這部分數(shù)據(jù)讓業(yè)務能最短的時間去理解,甚至直接使用。
 - DWS必須是指標,也是剛才前面講的指標體系的一個承載體,都由DWS去做,DWS匯總基本上就是ADS的支撐。
 - DWD就是明細層,明細層怎么建呢?我們建議采用的是維度建模的方式,企業(yè)有維表,有事實表,維表也有很多層級維度,比如枚舉維度,事實表有周期快照。當然在這里有一個點就是DWD的字段必須是可被直接理解的,不要有二義性,一旦有二義性的時候,DWS使用的時候會有問題,會導致整個上游應用都有問題。
 - ODS基本上大家理解應該都保持一致,就是業(yè)務數(shù)據(jù)直接同步過來。但是現(xiàn)在有一些架構的演變,大家喜歡在ODS做一個初步的ETL處理,這樣會導致ODS的數(shù)據(jù)跟企業(yè)業(yè)務的數(shù)據(jù)不一致。其實我們建議是不這樣做,原因很簡單,我們要保證ODS跟業(yè)務庫保持一致,這樣當出現(xiàn)問題的時候,我們能很快定位到問題的原因。一旦做了ETL,有可能ETL的過程是有bug的,會導致兩邊數(shù)據(jù)不一致。所以如果企業(yè)是嚴格要求從業(yè)務庫的數(shù)據(jù)到ODS不允許做任何的邏輯的處理,那么出現(xiàn)問題的時候,只能是中間件或者是其他的任何存儲出了問題導致的,不應該是業(yè)務邏輯導致的。
 
四 基于DataWorks構建新零售數(shù)據(jù)中臺
?? 
DataWorks數(shù)據(jù)開發(fā)平臺
前面更多講述數(shù)據(jù)中臺建設的一些思想、設計、架構、目標及要求,接下來我和大家聊一下如何使用DataWorks構建數(shù)據(jù)中臺以及使用DataWorks平臺的一些心得。DataWorks這個平臺不僅僅服務阿里云上的客戶,從2009年開始就同時服務阿里巴巴集團幾乎所有的業(yè)務部門。所以它的整體產品設計很多是偏向于開放的、通用的、靈活的。這個時候企業(yè)在使用DataWorks時會由于過于靈活或者是沒有標準等而出現(xiàn)一系列的問題,接下來的內容就會針對我們的一些經驗和大家分享一些心得。
?? 
?? 
數(shù)據(jù)開發(fā) - 數(shù)據(jù)同步
- 建議所有業(yè)務庫的數(shù)據(jù)都是統(tǒng)一同步hm_ods項目進行統(tǒng)一存儲管理
 - 從節(jié)約存儲考慮,同一份數(shù)據(jù)只能同步一份。
 - 從數(shù)據(jù)回溯與審計需要考慮,數(shù)據(jù)生命周期設置為永久保存。
 
數(shù)據(jù)同步是構建數(shù)據(jù)中臺的第一步,如果數(shù)據(jù)進不了倉,數(shù)據(jù)中臺就沒辦法構建。我們在做數(shù)據(jù)同步的時候,會有幾個要求,比如企業(yè)的所有業(yè)務數(shù)據(jù)都是統(tǒng)一同步到一個項目,并且只同步一份,不允許重復同步,這樣的話方便管理,減少成本,同時保證了數(shù)據(jù)不要有二義性。數(shù)據(jù)源出問題了,那后邊數(shù)據(jù)就都有錯,所以數(shù)據(jù)中臺一定要保證數(shù)據(jù)源100%正確。然后從數(shù)據(jù)回溯與審計考慮,數(shù)據(jù)生命周期設置的是一個永久保存,哪怕業(yè)務系統(tǒng)因為一些線上庫的流量問題,會有一些歸檔、刪除,但當他們想再使用歷史數(shù)據(jù)的時候,可以通過ODS這層原封不動地再還原回去。
?? 
- 數(shù)據(jù)開發(fā) - 數(shù)據(jù)加工代碼開發(fā)
 - 數(shù)據(jù)處理過程就是業(yè)務邏輯的實現(xiàn)過程。
 
既要保證業(yè)務邏輯的正確性,又要保證數(shù)據(jù)產出的穩(wěn)定性、時效性。
第二就是數(shù)據(jù)開發(fā),數(shù)據(jù)開發(fā)這部分是很考驗個人能力的,基本上大家都是使用SQL。我們自己對于數(shù)據(jù)開發(fā)這部分的心得簡單來說就是數(shù)據(jù)處理過程是業(yè)務邏輯的實現(xiàn),既要保證業(yè)務邏輯的正確性,也要保證數(shù)據(jù)產出的穩(wěn)定性、時效性和合理性。DataWorks進行數(shù)據(jù)開發(fā)的編輯器,除了提供比較好的coding能力以外,也提供了一些處理流程的可視化的方式,幫助企業(yè)去做一些code review,甚至部分校驗,這個功能在我們日常使用中是非常有幫助的。
?? 
數(shù)據(jù)開發(fā) - 代碼功能示例
- 業(yè)務邏輯會盡量收口在數(shù)據(jù)明細層,目的是保證了數(shù)據(jù)的一致性,也簡化了下游的使用。
 - 源頭上的變化,也可以通過代碼或格式等的轉換保證明細層結構的穩(wěn)定性,避免給下游帶來過多的變更。
 - 好的模型,也需要與上游業(yè)務系統(tǒng)協(xié)同開發(fā),一要業(yè)務系統(tǒng)有合理的設計,二是變更能及時的感知。
 
整個數(shù)據(jù)開發(fā)的過程,因為我本身也是做Java的,每一種編程都有一定的編程范式,在整個數(shù)據(jù)開發(fā)的過程中也去抽象了幾個步驟。
首先是代碼轉換,這個代碼轉換主要是干什么用的?剛才講過業(yè)務系統(tǒng)很多是為了完成一個業(yè)務流程,會有很多個性化的處理,尤其是大家做互聯(lián)網業(yè)務的時候,為了解決一些性能問題或者是filter的問題,會做一些Json字段、媒體字段、分隔符等等,這樣的內容會出現(xiàn)二義性。我們在開發(fā)中會有代碼轉換,比如說把一些枚舉的東西轉成一個實際看得懂的東西,0到底是什么?2是什么?或者a是什么?還有個格式轉換,企業(yè)有一些業(yè)務系統(tǒng),它很難標準,譬如說時間,有的用的是timestamp,有的是存字符串,有的是存yymm這些,雖然它們都代表時間,但是格式不一樣,在數(shù)據(jù)集市的構建過程中,它要求里面的數(shù)據(jù)格式必須是一致的,我們會去把非標準的數(shù)據(jù)格式通過格式轉換的方式變成一個標準的格式。
第二是業(yè)務判斷,業(yè)務判斷這里邊基本上就是通過條件的方式得出一個業(yè)務結果。舉個例子,年輕人在業(yè)務系統(tǒng)里面肯定不會有一個叫“年輕人”這樣的字段或業(yè)務邏輯,如果有年齡數(shù)據(jù),在梳理的時候可以判斷小于30歲的人叫年輕人,這個就是我們說的業(yè)務判斷。
第三是數(shù)據(jù)連接,基本上很簡單,就是一個表關聯(lián)去補數(shù)據(jù)。
第四是數(shù)據(jù)聚合,企業(yè)在做DWS的時候會大量用到數(shù)據(jù)聚合的這部分
第五是數(shù)據(jù)過濾,我們經常會碰到一些無效的數(shù)據(jù),我們通過數(shù)據(jù)過濾這個方式把這些無效的數(shù)據(jù)給處理掉。
第六是條件選擇,這個條件選擇基本上也就是一些where的東西,跟數(shù)據(jù)過濾稍微有點相似。
最后是業(yè)務解析。業(yè)務解析是企業(yè)最經常用到的,因為現(xiàn)在NoSQL或者MySQL也支持了,甚至有一些業(yè)務團隊用了Mongo,那一個大字段里邊有很多業(yè)務表示。我們這幾年在數(shù)據(jù)集市做DWD的時候,一定要把這種Json字段或者map字段的格式全部解析成固定的列字段。因為我們剛才說過它的內容必須要一致的,讓用戶直接可以看到。在這里面分享個心得,就是業(yè)務邏輯會盡量收口在數(shù)據(jù)明細層,目的是保證數(shù)據(jù)的一致性,簡化下游使用。源頭上的變化,也可以通過代碼或格式等轉換,保證明細層結構的穩(wěn)定性,避免給下游帶來更多的變化。好的模型也需要上游業(yè)務系統(tǒng)協(xié)同開發(fā),一要業(yè)務系統(tǒng)有合理的設計,二要變更能及時地感知,所以說數(shù)據(jù)中臺的建設不是數(shù)據(jù)團隊一個團隊的事情,也要跟業(yè)務團隊去做聯(lián)動和共創(chuàng)。
?? 
數(shù)據(jù)開發(fā) - 任務調度配置
剛才講的這些部分更多的是開發(fā)階段,如果DataWorks只完成這些的話,我們認為它就是一個IDE,但是DataWorks作為一站式大數(shù)據(jù)開發(fā)治理的平臺,核心的一點是要去保證平臺的運行,如何去保證企業(yè)做數(shù)據(jù)開發(fā)的代碼能運行起來?那就是通過DataWorks的任務調度。一個企業(yè)的新零售業(yè)務是非常復雜的,生鮮有30分鐘送達、電商有次日達、三日達,還有一些預售預購等等。這些如果是簡單的調度系統(tǒng)可能就支持不了,DataWorks比較好的一點是,它提供了非常靈活的任務調度周期選擇,比如說月、周、日,并且能夠支持雙11每日1500萬任務的穩(wěn)定調度,從調度周期靈活性和穩(wěn)定性來看都非常好。最開始我們設計企業(yè)的新零售業(yè)務是一個閉環(huán),它每個業(yè)務是有相關性的,反過來說企業(yè)的數(shù)據(jù)任務也是有相關性的,這個時候整個的任務調度鏈路是非常復雜的。
在整個過程里面,我們也有很多嘗試、創(chuàng)新,也踩過了很多坑,這邊就跟大家分享一下。DataWorks任務節(jié)點未起調或者在錯誤的時間起調都可能出現(xiàn)數(shù)據(jù)缺失或者是錯誤,這里就要保證企業(yè)數(shù)據(jù)開發(fā)對于每個線上任務的任何問題都要及時處理,因為每個問題都會造成一個數(shù)據(jù)的問題。合理的調度策略既可以保障數(shù)據(jù)產出的正確性,也可以保障數(shù)據(jù)產出的及時性,我們希望一天產出,那就不要把它變成每小時產出,產生12次,就按一天就可以了,如果是三天我們就設置三天的調度。
?? 
數(shù)據(jù)運維&治理 - 數(shù)據(jù)質量監(jiān)控
- 數(shù)據(jù)質量監(jiān)控的目的是保障數(shù)據(jù)資產產出的正確性。
 - 監(jiān)控的范疇包括表大小變化、表行數(shù)變化、字段枚舉值變化(如新增“外賣”類務類型)、主鍵沖突(同一SKU出現(xiàn)兩行)、非法格式(如email格式)等。
 - 異常值會觸發(fā)報警或中斷數(shù)據(jù)處理過程,讓值班人員有機會介入。
 
通過這幾步,正常情況下,我們的一個項目或者一個需求,按照這種方式去完成,我們就認為一個數(shù)據(jù)開發(fā)工程師的任務結束了。但是一般情況下不是這個樣子,因為數(shù)據(jù)中臺是一個偏商業(yè)化的事情,所以說它一旦出問題,影響是特別大的。如果說集團有集團核心系統(tǒng)、部門核心系統(tǒng),業(yè)務線有核心系統(tǒng)、非核心系統(tǒng),不同的核心系統(tǒng)需要有不同的保障,還有p1、p2、p3、p4的方式去定義故障等級,數(shù)據(jù)業(yè)務也同理。數(shù)據(jù)業(yè)務跟正常業(yè)務系統(tǒng)不太一樣的是,數(shù)據(jù)中臺團隊是依托了DataWorks來做整個線上大數(shù)據(jù)業(yè)務任務的穩(wěn)定性保障。其中DataWorks這邊提供了很重要的一個模塊,就是數(shù)據(jù)質量監(jiān)控。數(shù)據(jù)質量監(jiān)控可以讓企業(yè)更及時地去發(fā)現(xiàn)一些問題,當業(yè)務有影響的時候,保證我們第一時間就知道(因為有的時候業(yè)務使用還是有一定的延遲性的,數(shù)據(jù)團隊經常遇到的就是業(yè)務出現(xiàn)問題過來找你才知道)。數(shù)據(jù)質量的監(jiān)控,目的是保障數(shù)據(jù)產出的正確性,并且監(jiān)控范圍一定要比較全,不僅限于表大小的變化,函數(shù)的變化,字段枚舉值和一些主鍵的沖突,甚至一些非法格式,并且異常值會觸發(fā)報警或中斷數(shù)據(jù)處理過程,這時候值班人員要第一時間介入。
?? 
數(shù)據(jù)運維&治理 - 業(yè)務基線管理
- 基線的目的是保障數(shù)據(jù)資產產出的及時性。
 - 優(yōu)先級決定了系統(tǒng)硬件資源的保障力度,也決定了運維人員值班的保障力度。
 - 重要任務都納入了基線管理;核心任務優(yōu)先級為最高級別8級。
 
上面講的是監(jiān)控的問題,但是一旦監(jiān)控多了就會導致監(jiān)控泛濫,會有很多預警報警出來,DataWorks也提供了另一種能力,就是任務基線的管理。我剛才講過業(yè)務有分級,企業(yè)的數(shù)據(jù)業(yè)務也有一些重要和非重要的任務,我們通過這種基線的方式去把這些任務進行一個隔離?;€這塊我們的經驗就是:基線是保障數(shù)據(jù)資產的及時產出,優(yōu)先級決定了系統(tǒng)硬件資源的保障力度,也決定了運營人員值班的保障力度,最重要的業(yè)務一定要放8級基線,這樣會保證你的最重要的任務第一時間產出。另外DataWorks有一個很好的功能——回刷工具,當我的基線出問題或者破線的時候,可以通過回刷工具快速地把數(shù)據(jù)回刷出來。并且如果你設置了DataWorks的智能監(jiān)控,這個功能會通過一些基線下目前的任務狀態(tài)和歷史的運行時長等,通過算法的形式去幫你提前預估出是否存在破線的風險,比如一個數(shù)據(jù)正常是晚上12點產出的,在這之前有個數(shù)據(jù)應該是晚上6點產出,設置完智能監(jiān)控之后,如果之前晚上6點產出數(shù)據(jù)的任務在今晚7點都未產出,并且系統(tǒng)通過算法判斷晚上12點依舊無法正常產出,智能監(jiān)控在7點的時候就會發(fā)出一個告警,讓技術同學進行提前干預,不用等到晚上12點數(shù)據(jù)真正產出延時時才開始干預,這種智能化的監(jiān)控與風險的預估對于企業(yè)業(yè)務的穩(wěn)定性來說是非常有用的。
?? 
數(shù)據(jù)運維&治理 - 數(shù)據(jù)資產治理
- 主要目標是優(yōu)化存儲與計算,降低成本,提升資源利用效率。
 - 技術團隊有多個project,治理需要技術團隊一起配合完成。
 - 手段有無用應用下線,表生命周期管理、重復計算治理、暴力掃描治理等手段。
 
做好數(shù)據(jù)質量的監(jiān)控與基線,基本上就保證了企業(yè)的大數(shù)據(jù)任務和業(yè)務的穩(wěn)定、正常地運行,還有就是數(shù)據(jù)資產的治理。阿里巴巴是提倡數(shù)據(jù)的公司,它做轉變的一個非常大的里程碑就是阿里巴巴在數(shù)據(jù)方面存儲和計算的硬件成本超過了業(yè)務系統(tǒng)的硬件成本。這也導致了阿里巴巴的CTO會去把數(shù)據(jù)資產治理作為非常核心的任務。DataWorks是整個阿里巴巴集團數(shù)據(jù)使用的體量最大的平臺,甚至是一個唯一的平臺,也提供了數(shù)據(jù)資產的模塊叫UDAP,這里面基本上是可以通過多方面多維度,從項目到表甚至到個人,全局查看今天整體資源使用情況是什么樣的,并且給使用者提供了一個健康分的概念。這個健康分可以綜合地看到每個業(yè)務部門內每個個人的排名情況。做治理最簡單的方式就是先把頭部打掉,我們先治理頭部健康分最低的,然后把健康分拉上來,整個水平就下來了。同時UDAP提供了很多數(shù)據(jù)可視化的工具,可以讓你很快地看到治理的效果,在這方面我也有一些心得分享給大家。
首先主要目標是優(yōu)化存儲與計算,降低成本,提升資源使用率;技術團隊會自己建很多項目空間,數(shù)據(jù)中臺團隊需要與技術團隊共建,一起去完成數(shù)據(jù)治理。一些比較好用的手段就是無用的應用要下線、表生命周期管理、重復計算治理、還有很重要的是計算資源暴力掃描,是需要被嚴格禁止的。UDAP里面的一些功能目前在DataWorks的資源優(yōu)化模塊也能夠實現(xiàn),比如一些重復表、重復數(shù)據(jù)開發(fā)與數(shù)據(jù)集成任務的治理等等。
?? 
數(shù)據(jù)運維&治理 - 數(shù)據(jù)安全管理
- 數(shù)據(jù)安全有四層保障:平臺(Maxcompute)級、項目(Project)級、表級、字段級。
 - 外包人員除了安全規(guī)章學習與考試外,還需要特別審批及簽保密協(xié)議。
 - 員工離職權限會自動進行權限回收。
 
做完以上這些,我們認為數(shù)據(jù)中臺該做的事情就差不多了,最后還有一點就是數(shù)據(jù)安全管理。隨著互聯(lián)網的發(fā)展,中國基本持續(xù)每一年都會出一個相關的網絡法,比如說電子商務法、網絡安全法等等,最近應該是草擬數(shù)據(jù)安全法。作為一家企業(yè),對法律的遵守是特別重要的。DataWorks作為阿里大數(shù)據(jù)最統(tǒng)一的數(shù)據(jù)入口和出口,做了很多數(shù)據(jù)安全管理的手段。它可以從引擎層面進行一個管控、也可以通過項目層面進行管控,同時可以到表層面,甚至到字段層面。在字段層面,每個字段有等級,比如說有一些高等級字段的權限必須部門負責人或者是總裁層面審批才可以使用的,再比如說有一些即使審批通過了,但還是有一定風險的數(shù)據(jù),像身份證號碼,手機號碼等,DataWorks數(shù)據(jù)保護傘會提供一種技術叫數(shù)據(jù)脫敏,這些敏感、具有風險的數(shù)據(jù)被拿走是被脫敏過的,不影響使用者的統(tǒng)計或者分析,但是使用者是不可見的。
阿里巴巴集團有一套統(tǒng)一的數(shù)據(jù)管理方法,它跟組織架構是打通的,員工離職或者轉崗,他的權限會自動收回。在任何企業(yè)包括阿里,人員變動是非常頻繁的,通過這樣的功能與體系,企業(yè)能保證在數(shù)據(jù)安全的前提下更好地應用數(shù)據(jù)。
五 基于DataWorks構建數(shù)據(jù)中臺的價值
?? 
之前講的都是基于DataWorks來構建新零售數(shù)據(jù)中臺,最早我們提到數(shù)據(jù)中臺一定要服務業(yè)務,現(xiàn)在我也介紹一下數(shù)據(jù)中臺如何為業(yè)務服務的一些方式。一家企業(yè)它用數(shù)據(jù)的過程是由淺而深的過程,首先大家都一樣,最開始我們只是看數(shù)據(jù),我有什么數(shù)據(jù),然后通過數(shù)據(jù)去看一些問題,做一些人工的輔助和決策,但是新零售的很多業(yè)務的擴張是特別快的,一年開100多家店,覆蓋全國200多個城市等等,當它的業(yè)務形態(tài)發(fā)生這樣的變化后,通過簡單的數(shù)據(jù)報表和數(shù)據(jù)可視化,是無法再支撐這個一年開100多家店的業(yè)務了。所以說企業(yè)這時候也可以做很多精細化的管控,比如說品類診斷、庫存健康,告訴這個業(yè)務你現(xiàn)在有哪些問題,而不是讓他們用報表去發(fā)現(xiàn)問題。
比如一些生鮮業(yè)務跟電商業(yè)務有一個非常不一樣的點,生鮮這種新零售業(yè)務受自然因素的影響特別大,譬如說天氣或者是節(jié)假日,甚至一個交通事故都會影響到生鮮的業(yè)務,因為庫存問題導致貨損。針對這種情況,企業(yè)基于數(shù)據(jù)中臺可以做很多預測類的應用,比如銷量預測。生鮮的銷量預測可以要求到小時,每個小時都要做迭代,甚至還可以做一些仿真系統(tǒng),當出現(xiàn)比如天氣突然發(fā)生變化的時候,通過仿真系統(tǒng)預測到或者感知到有什么樣的風險,并做出一定調整。再到后面生鮮會有日日鮮的一些商品(商品當天就要賣出),每個運營人員、銷售人員每天有很多事情要做,這么多門店的這么多種日日鮮商品,靠人是絕對沒有辦法高效感知并做出調整的。如果我們把幾百張報表全部干掉,把這些所有通過人看數(shù)據(jù)發(fā)現(xiàn)問題的場景,全部集中到業(yè)務系統(tǒng)里面。當數(shù)據(jù)中臺發(fā)現(xiàn)日日鮮的商品已經賣不出去了,距離關門只有三個小時了,需要一個打折,這時候不需要人參與,通過數(shù)據(jù)中臺的數(shù)據(jù)的預測與算法自動觸發(fā)打折,把這個商品賣出去。這些BI跟AI結合在一起的應用是可以讓數(shù)據(jù)中臺真正產生價值,企業(yè)也可以根據(jù)目前不同的數(shù)據(jù)應用階段,設計不同的數(shù)據(jù)應用產品,讓數(shù)據(jù)真正賦能業(yè)務。















 
 
 

















 
 
 
 