數(shù)倉數(shù)據(jù)質(zhì)量管理,需要注意哪些問題?
接著上次聊的企業(yè)數(shù)倉數(shù)據(jù)質(zhì)量管理流程,我們來詳細聊聊數(shù)倉數(shù)據(jù)質(zhì)量管理的各個環(huán)節(jié)我們都該考慮哪些問題?做哪些事情?怎么做?
一、數(shù)據(jù)資產(chǎn)等級劃分
1. 等級定義
根據(jù)“當數(shù)據(jù)質(zhì)量不滿足完整性、準確性、一致性、及時性時,對業(yè)務(wù)的影響程度大小”來劃分數(shù)據(jù)的資產(chǎn)等級。
- 毀滅性:數(shù)據(jù)一旦出錯,會引起巨大的資產(chǎn)損失,面臨重大收益受損等。標記為L1
- 全局性:數(shù)據(jù)用于集團業(yè)務(wù)、企業(yè)級效果評估和重要決策任務(wù)等。標記為L2
- 局部性:數(shù)據(jù)用于某個業(yè)務(wù)線的日常運營、分析報告等,如果出現(xiàn)問題會給該業(yè)務(wù)線造成一定的影響或影響其工作效率。標記為L3
- 一般性:數(shù)據(jù)用于日常數(shù)據(jù)分析,出現(xiàn)問題的帶來的影響很小。標記為L4
- 未知性質(zhì):無法追溯數(shù)據(jù)的應(yīng)用場景。標記為Lx
重要程度:L1>L2>L3>L4>Lx。如果一份數(shù)據(jù)出現(xiàn)在多個應(yīng)用場景中,則根據(jù)其最重要程度進行標記。
2. 等級劃分
(1)分析數(shù)據(jù)鏈路
定義數(shù)據(jù)資產(chǎn)等級后,我們可以從數(shù)據(jù)流程鏈路開始進行數(shù)據(jù)資產(chǎn)等級標記,完成數(shù)據(jù)資產(chǎn)等級確認,給不同的數(shù)據(jù)定義不同的重要程度。
通用的數(shù)據(jù)流轉(zhuǎn)鏈路流程如下圖所示:
(2)標記數(shù)據(jù)資產(chǎn)等級
在所有數(shù)據(jù)鏈路上,整理出消費各個表的應(yīng)用業(yè)務(wù)。通過給這些應(yīng)用業(yè)務(wù)劃分數(shù)據(jù)資產(chǎn)等級,結(jié)合數(shù)據(jù)的上下游依賴關(guān)系,將整個鏈路打上某一類資產(chǎn)等級標簽。
舉例:
假設(shè)公司有統(tǒng)一的訂單服務(wù)中心。應(yīng)用層的應(yīng)用業(yè)務(wù)是按照業(yè)務(wù)線,商品類型和地域統(tǒng)計公司的訂單數(shù)量和訂單金額,命名為order_num_amount。假設(shè)該應(yīng)用匯影響到整個企業(yè)的重要業(yè)務(wù)決策,我們可以把應(yīng)用定級為L2,從而整個數(shù)據(jù)鏈路上的表的數(shù)據(jù)等級,都可以標記為L2-order_num_amount,一直標記到源數(shù)據(jù)業(yè)務(wù)系統(tǒng),如下圖所示:
二、數(shù)據(jù)加工過程校驗
1. 在線系統(tǒng)數(shù)據(jù)校驗
在線業(yè)務(wù)系統(tǒng)聲場的數(shù)據(jù)是數(shù)據(jù)倉庫的主要數(shù)據(jù)來源。當在線業(yè)務(wù)系統(tǒng)功能迭代時,每次變更都會導致業(yè)務(wù)數(shù)據(jù)的變化。因此,數(shù)倉需要采取相應(yīng)的措施來適應(yīng)業(yè)務(wù)系統(tǒng)的復(fù)雜多變,及時保障數(shù)據(jù)的準確性。
我們可以通過工具+人員管理并行的方式來盡可能的解決以上問題:既使用工具捕捉業(yè)務(wù)的每次變更,也要求業(yè)務(wù)開發(fā)部門及時通知到數(shù)據(jù)部門所發(fā)生的業(yè)務(wù)變更內(nèi)容。
(1)業(yè)務(wù)上線發(fā)布平臺
監(jiān)控業(yè)務(wù)上線發(fā)布平臺上的重大業(yè)務(wù)變更,通過訂閱這個發(fā)布過程,及時將變更內(nèi)容通知到數(shù)據(jù)部門。
由于業(yè)務(wù)系統(tǒng)復(fù)雜多變,若日常發(fā)布變更頻繁,那么每次都通知數(shù)據(jù)部門,會造成不必要的資源浪費。這時,我們可以使用之前已經(jīng)完成標記的數(shù)據(jù)資產(chǎn)等級標簽,針對涉及高等級數(shù)據(jù)應(yīng)用的數(shù)據(jù)資產(chǎn),整理出哪些類型的業(yè)務(wù)變更會影響數(shù)據(jù)的加工或者影響數(shù)據(jù)統(tǒng)計口徑的調(diào)整,則這些情況都必須及時通知到數(shù)據(jù)部門。
如果公司沒有自己的業(yè)務(wù)發(fā)布平臺,那么就需要與業(yè)務(wù)部門約定好,針對高等級的數(shù)據(jù)資產(chǎn)的業(yè)務(wù)變更,需要以郵件或者其他書面的說明及時反饋到數(shù)據(jù)部門。
(2)相關(guān)操作人員管理
工具只是輔助監(jiān)管的一種手段,而使用工具的人員才是核心。數(shù)據(jù)資產(chǎn)等級的上下游打通過程需要通知給在線業(yè)務(wù)系統(tǒng)開發(fā)人員,使其知道哪些是重要的核心數(shù)據(jù)資產(chǎn),提高在線開發(fā)人員的數(shù)據(jù)風險意識。
可以通過培訓的方式,把數(shù)據(jù)質(zhì)量管理的訴求,數(shù)據(jù)質(zhì)量管理的整個數(shù)據(jù)加工過程,以及數(shù)據(jù)產(chǎn)品的應(yīng)用方式及應(yīng)用場景告知在線開發(fā)人員,使其了解數(shù)據(jù)的重要性、價值及風險。確保在線開發(fā)人員在完成業(yè)務(wù)目標的同時,也要考慮數(shù)據(jù)的目標,保持業(yè)務(wù)端和數(shù)據(jù)段一致。
2. 離線數(shù)據(jù)加工校驗
從數(shù)據(jù)輸入到輸出數(shù)據(jù)產(chǎn)品應(yīng)用的大致流程如下圖所示:
我們可以看到,數(shù)據(jù)從業(yè)務(wù)系統(tǒng)上產(chǎn)生,通過數(shù)據(jù)同步工具進入數(shù)倉系統(tǒng)。
數(shù)據(jù)在數(shù)倉系統(tǒng)中進行數(shù)據(jù)加工處理后輸出一系列數(shù)據(jù)倉庫模型,同時也產(chǎn)生了許多數(shù)據(jù)倉庫代碼腳本。
最終再通過數(shù)據(jù)同步工具將加工處理后的數(shù)據(jù)倉庫模型同步到數(shù)據(jù)產(chǎn)品應(yīng)用中。
因此,保障數(shù)據(jù)加工過程中的質(zhì)量是保障離線數(shù)據(jù)倉庫整體數(shù)據(jù)質(zhì)量的重要環(huán)節(jié)。
數(shù)據(jù)加工上線流程如下圖所示:
在這些環(huán)節(jié)中,我們可以采用以下方式來保障數(shù)據(jù)質(zhì)量:
(1)代碼提交核查
開發(fā)相關(guān)的規(guī)則引擎,輔助代碼提交校驗。規(guī)則分類大致為:
- 代碼規(guī)范類規(guī)則:如表命名規(guī)范、字段命名規(guī)范、生命周期設(shè)置、表注釋等
- 代碼質(zhì)量類規(guī)則:如分母為0提醒、NUll值參與計算提醒等
- 代碼性能類規(guī)則:如大表提醒、重復(fù)計算監(jiān)測、大小表join操作提醒等
(2)代碼發(fā)布核查
加強測試環(huán)節(jié),測試環(huán)境測試后再發(fā)布到生成環(huán)境,且生成環(huán)境測試通過后才算發(fā)布成功。
(3)任務(wù)變更或重跑數(shù)據(jù)
在進行數(shù)據(jù)更新操作前,需要通知下游數(shù)據(jù)變更原因、變更邏輯、變更時間等信息。下游沒有異議后,再按照約定時間執(zhí)行變更發(fā)布操作。
三、數(shù)據(jù)處理風險監(jiān)控
1. 在線數(shù)據(jù)處理風險點監(jiān)控
為確保在線業(yè)務(wù)系統(tǒng)的數(shù)據(jù)質(zhì)量,對在線業(yè)務(wù)系統(tǒng)的數(shù)據(jù)入庫進行規(guī)則校驗。
如,訂單記錄中,不得出現(xiàn)下單時間大于當天時間或者下單時間小于業(yè)務(wù)系統(tǒng)上線時間等,若出現(xiàn)異常則報錯。
隨著業(yè)務(wù)負責程度的提升,會導致規(guī)則繁多、規(guī)則配置的運行成本增大,這時可以按照我們之前的數(shù)據(jù)資產(chǎn)等級有針對性的進行監(jiān)控。
2. 離線數(shù)據(jù)處理風險點監(jiān)控
對于離線數(shù)據(jù)處理的風險點監(jiān)控主要是指:對數(shù)據(jù)調(diào)度平臺上所有數(shù)據(jù)處理調(diào)度進行監(jiān)控。
以阿里的DataWorks數(shù)據(jù)調(diào)度產(chǎn)品為例,展開介紹。
(1)數(shù)據(jù)準確性監(jiān)控
DataWorks中的DQC通過配置數(shù)據(jù)質(zhì)量校驗規(guī)則,實現(xiàn)離線數(shù)據(jù)處理中的數(shù)據(jù)質(zhì)量監(jiān)控報警機制。
下圖是DQC的工作流程圖:
DQC數(shù)據(jù)監(jiān)控規(guī)則有強規(guī)則和弱規(guī)則:
- 強規(guī)則:一旦觸發(fā)報警就會阻斷任務(wù)的執(zhí)行(將任務(wù)置為失敗狀態(tài),使下游任務(wù)不會被觸發(fā)執(zhí)行)。
- 弱規(guī)則:只報警但不阻斷任務(wù)的執(zhí)行。
DQC提供常用的規(guī)則模板,包括表行數(shù)較N天前波動率、表空間大小較N天前波動率、字段最大/最小/平均值相比N天前波動率、字段空值/唯一個數(shù)等。
過多的檢查次數(shù)必然會導致整體調(diào)度任務(wù)的執(zhí)行性能,因此,哪些數(shù)據(jù)需要配置DQC規(guī)則、應(yīng)該配置什么規(guī)則,也需要通過數(shù)據(jù)資產(chǎn)等級來確定。
(2)數(shù)據(jù)及時性監(jiān)控
1)任務(wù)優(yōu)先級
對于DataWorks平臺的調(diào)度任務(wù),可以通過智能監(jiān)控工具進行優(yōu)先級設(shè)置。DataWorks的調(diào)度是一個樹形結(jié)構(gòu),當配置了葉子節(jié)點的優(yōu)先級,這個優(yōu)先級會傳遞到所有的上游節(jié)點,而葉子節(jié)點通常就是服務(wù)業(yè)務(wù)的消費節(jié)點。因此,在優(yōu)先級的設(shè)置上,要先確定業(yè)務(wù)的資產(chǎn)等級,等級越高的業(yè)務(wù)對應(yīng)的消費節(jié)點優(yōu)先級越高,優(yōu)先調(diào)度并占用計算資源,確保高等級業(yè)務(wù)的準時產(chǎn)出。
總之,就是按照數(shù)據(jù)資產(chǎn)等級優(yōu)先執(zhí)行高等級數(shù)據(jù)資產(chǎn)的調(diào)度任務(wù),優(yōu)先保障高等級業(yè)務(wù)的數(shù)據(jù)需求。
2)任務(wù)報警
任務(wù)報警和優(yōu)先級類似,通過DataWorks的智能監(jiān)控工具進行配置,只需要配置葉子節(jié)點即可向上游傳遞報警配置。任務(wù)執(zhí)行過程中,可能出錯或延遲,為了保障最重要數(shù)據(jù)(即資產(chǎn)等級高的數(shù)據(jù))產(chǎn)出,需要立即處理出錯并介入處理延遲。
3)DataWorks智能監(jiān)控
DataWorks進行離線任務(wù)調(diào)度時,提供智能監(jiān)控工具,對調(diào)度任務(wù)進行監(jiān)控告警。根據(jù)監(jiān)控規(guī)則和任務(wù)運行情況,智能監(jiān)控決策是否報警、何時報警、如何報警以及給誰報警。智能監(jiān)控會自動選擇最合理的報警時間、報警方式以及報警對象。
以上內(nèi)容借助了阿里的DataWorks產(chǎn)品介紹文檔,下面說一下自己的理解:
離線數(shù)據(jù)處理風險監(jiān)控無外乎就是把離線數(shù)據(jù)加工過程中所遇到的問題及時反饋預(yù)警,然后人工及時進行干預(yù)并處理。
對于數(shù)據(jù)準確性的監(jiān)控,要看我們規(guī)則配置引擎的強大與否,通過數(shù)據(jù)處理日志中捕捉的出錯信息,我們可以不斷的完善我們的規(guī)則配置引擎,從而不斷的提高整個平臺的產(chǎn)出數(shù)據(jù)的準確性。
對于數(shù)據(jù)及時性的監(jiān)控,主要是調(diào)度資源的合理分配及優(yōu)化和及時出錯報警機制。通過平臺資源的優(yōu)化配置,優(yōu)先產(chǎn)出高數(shù)據(jù)資產(chǎn)等級的數(shù)據(jù),用于滿足業(yè)務(wù)的數(shù)據(jù)及時性需求。
四、結(jié)語
從數(shù)倉數(shù)據(jù)質(zhì)量管理的基礎(chǔ)流程,到每個治理環(huán)節(jié)的實施方法論,從宏觀上就與大家先分享這么多內(nèi)容,后續(xù),結(jié)合實際工作總數(shù)倉數(shù)據(jù)質(zhì)量管理所遇到的問題,再和大家做深入的交流與探討。也歡迎各位小伙伴與我分享自己工作中遇到的問題,共同成長,共同進步。
數(shù)據(jù)產(chǎn)品路上,與君共勉!
#相關(guān)閱讀#
怎么保障企業(yè)數(shù)據(jù)倉庫中的數(shù)據(jù)質(zhì)量?
本文由 @BennettC 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
發(fā)現(xiàn)有個錯別字 ?? ??
??還是沒有看到
“在線業(yè)務(wù)系統(tǒng)生產(chǎn)的數(shù)據(jù)”寫成了“在線業(yè)務(wù)系統(tǒng)聲場的數(shù)據(jù)”~
哦哦,慚愧慚愧
老師好,想咨詢一下實踐中的問題,如果基于字段去界定,實踐中,數(shù)倉的表太多了,每個表都去標記的話,工作量很大,這塊如何去操作呢?
嗯嗯,是的,實際工作當中,不可能做到對每個表都去進行字段級別的規(guī)則配置。一是像您說的那樣,工作量太大;二是頻繁的字段校驗會降低調(diào)度平臺的性能;所以,這就是我們?yōu)槭裁匆獎澐謹?shù)據(jù)資產(chǎn)等級的目的,只對重大數(shù)據(jù)資產(chǎn)進行較細粒度的規(guī)則配置,而對于普通的數(shù)據(jù)資產(chǎn)進行粗粒度(一般必須保證數(shù)據(jù)的完整性即可)的規(guī)則配置即可。