基於MaxCompute的數倉數據質量管理

聲明
本文中介紹的非功能性規範均爲建議性規範,產品功能無強制,僅供指導。

參考文獻
《大數據之路——阿里巴巴大數據實踐》——阿里巴巴數據技術及產品部 著。

背景及目的
數據對一個企業來說已經是一項重要的資產,既然是資產,肯定需要管理。隨着業務的增加,數據的應用越來越多,企業在創建的數倉過程中對數據的管理也提出了更高的要求,而數據質量也是數倉建設過程不容忽視的環節。本文針對MaxCompute數倉建設過程中如何做數據質量給出規範建議,爲實際數據治理提供依據及指導。

數據質量保障原則
評估數據質量的好壞不同行業甚至不同企業有不同標準,在此我們主要從四個方面進行評估,即完整性、準確性、一致性和及時性。

完整性。

完整性是指數據的記錄和信息是否完整,是否存在缺失情況。數據缺失主要包括記錄的缺失和記錄中某個字段信息的缺失,兩者都會造成統計結果不準確,可以說,完整性是數據質量最基礎的保障。如某個相對穩定的業務數據量每天的都有100萬條記錄,某天突然下降1萬條,那麼可能就是記錄缺失。而對於記錄中某個字段信息缺失,如某科高考成績表中一個考卷分數要對應一個准考證號,這個字段的空值數就該爲0,一旦大於0,說明該信息缺失了。
準確性。

準確性是指數據中記錄的信息和數據是否準確,是否存在異常或者錯誤的信息。比如成績單中分數出現負數,比如訂單沒有買家信息等,這些都是有問題的。確保記錄的準確性也是抱着數據質量必不可少的一個原則。
一致性。

一致性一般體現在跨度很大的數據倉庫體現中。 比如公司中有很多業務數倉分支,對於同一份數據必須保證一致性。例如用戶ID,從在線業務庫加工到數據倉庫,再到各個數據應用節點,必須都是同一種類型、長度保持一致。因此在《MaxCompute數倉建設規範指南》中有了“公共層”的加工,確保數據的一致性。
及時性。

保障數據的及時產出,體現數據的價值。如決策的分析師一般都希望當天可以看到前一天的數據而不是要等三五天才能看到某一個數據分析結果,否則就失去了數據及時性的價值,使得數據分析工作變得毫無意義。
數據質量管理流程
要做數據質量管理,制定滿足以上數據質量原則集基礎上的質量管理規範,需要考慮幾方面:

什麼數據需要做質量管理。
什麼環節進行數據質量管理。
數據質量管理具體怎麼做。
數據質量定義
定義哪些數據需要做質量管理一般可以通過數據資產等級劃分和元數據的應用鏈路分析得出。根據應用的影響程度,確定數據資產等級;根據數據鏈路血緣,將數據資產等級上推至各數據生產加工的各個環節,確定鏈路上所涉及的數據的資產等級和在各個加工環節上根據資產等級的不同所採取的不同處理方式。

數據資產等級定義
對於數據的資產等級,在質量管理方向,可以從數據質量“不滿足四個原則”情況下對業務的影響性質,比如可以劃分爲5個等級的性質,即毀滅性質、全局性質、局部性質、一般性質、未知性質,不同性質的重要性一次降低,具體定義如下:

毀滅性質,即數據一旦出錯,將會引起重大資產損失,面臨重大收益損失等。
全局性質,即數據直接或間接用於企業級業務和效果評估、重要決策等。
局部性質,即數據直接或間接用於某些業務線的運營、報告等,若出現問題會給業務線造成影響或者造成工作效率損失。
一般性質,即數據主要用於日常數據分析,出現問題帶來的影響極小。
未知性質,即無法明確數據的應用場景。
如table的label等級,資產等級可以用Asset進行標記:毀滅性質-A1,全局性質-A2,局部性質-A3,一般性質-A4,未知性質-Ax。重要程度爲:A1>A2>A3>A4>Ax。若一份數據出現在多個應用場景彙總則遵循就高原則。

數據資產等級落地方法
定義劃分好數據資產等級後,接下來就考慮怎麼落地,對數倉中龐大的數據量進行資產等級打標。可以從數據流轉鏈路着手。

MaxCompute進行數據加工基本基本流程:數據從業務系統上產生,通過同步工具(DataWorks的數據集成或阿里雲DTS)進入數據數倉系統(MaxCompute),數據在數倉中進行清洗、加工、整合、算法、模型等一系列運算後,再通過同步工具輸出到數據產品中進行消費。整個流程數據都是以存放在表的形式體現,流轉鏈路大致如下圖:

基於MaxCompute的數倉數據質量管理

從數據流轉鏈路上,整理哪些表是被哪些應用業務產品消費,通過給這些應用業務產品劃分數據資產等級,再結合數據的上下游血緣,將整個鏈路打上某一類資產等級的標籤。如,一個A2等級的的數據應用產品,對應導入這個數據產品的table即數倉(MaxCompute)的導出表Table1、Table2、Table3,幾個表都打上A2-xxx數據產品標記,根據血緣往上追溯,將這幾個表的上有都打上A2的標記,一直標記到源數據業務系統。

基於MaxCompute的數倉數據質量管理

通過如上方式完成數據資產等級的確認,給不同的數據定義不同的重要程度。

知道了數據的重要等級針對不同的等級,採取不同的保障措施,接下來我們介紹在基於MaxCompute的數據倉庫中針對不同等級的數據的保障方法。

數據加工過程卡點校驗
在線系統卡點校驗
在線系統數據加工過程卡點校驗,主要是指在業務系統的數據生成過程中進行的卡點校驗。在線業務系統產生的數據也是數據倉庫的數據來源,然而在線業務系統普遍都是複雜多變,且每次變更不可避免會帶來數據的變化,數倉需要適應多變的業務發展,及時做到數據的準確性。因此,在線業務的變更如何高效的通知到基於MaxCompute的離線數據倉庫,也是需要考慮的問題。這裏我們介紹兩個方法拱參考:工具和人員雙管齊下。紀要在工具上自動捕捉每一次業務的變化,同時也要求開發人員在意識上自動進行業務變更通知。

工具——發佈平臺。在業務進行重大變更時,訂閱這個發佈過程,通知到離線開發人員,使其知曉此次變更內容。當業務系統足夠繁雜,日常發佈變更頻繁的情況下,若每次變更都通知離線業務,勢必會造成不必要的浪費,同時也影響業務迭代效率。此時,可以通過數據資產等級的標識,對業務進行打標後,針對高等級的數據資產,整理出什麼變更會影響數據的加工,如相關財務報表,如果業務系統的改造影響到財務報表的計算,使得約定好的計算口徑被業務系統發佈變更修改了,這種情況必須要告知離線業務,而離線開發人員也必須主動關注這類發佈變更通知。

注意:這裏指的發佈平臺非阿里雲提供發佈平臺,只是一種統稱,指各個企業自己在線業務的相關發佈平臺。

工具——數據庫的變化感知。隨着業務的發展,業務數據庫(MaxCompute數倉的數據源)不可避免會出現數據庫擴容或者DDL變更,這些變更都要主動通知到離線開發人員。基於MaxCompute的數據倉庫在進行離線數據抽取時,通過DataWorks的數據集成工具,可能會限制某個業務數據庫表,如果該數據庫表發生擴容或者遷移等,數據集成工具感知不到,會可能導致數據抽取錯漏,而一旦錯漏,會影響下游一系列依賴該表的應用,因此建議業務數據庫也需要有庫表變更通知。

工具只是一種輔助手段,操作工具的人員纔是核心。數據資產等級的上下游打通,同樣也將這個過程給到在線開發人員,使其知曉哪些是重要的核心數據資產,提高在線開發人員的數據風險意識。通過培訓等方式將離線數據的訴求、離線數據的加工過程、數據產品的應用方式告訴在線業務開發人員,讓其瞭解數據的重要性,瞭解數據的價值,同時也告知出錯後果。讓在線開發人員在完成業務目標時,也要考慮數據的目標,做到業務端和數據端一致。

離線系統卡點校驗
首先我們再次認識MaxCompute進行數據加工的基本流程:數據從業務系統上產生,通過同步工具(DataWorks的數據集成或阿里雲DTS)進入數倉系統(MaxCompute),數據在數倉中進行清洗、加工、整合、算法、模型等一系列運算後,再通過同步工具輸出到數據產品中進行消費。

整個流程中,有了數據加工,纔有了數據倉庫模型和數據倉庫代碼的建設,如何保障數據加工過程中的質量是離線數據倉庫保障數據質量的一個重要環節。

MaxCompute進行數據加工,可以通過DataWorks、也可以通過MaxCompute studio、或者直接通過MaxCompute SDK提交各種任務進行加工。無論用什麼工具,都會經歷代碼開發->測試、發佈->運維、變更 的過程,可以對這個過程每個環節進行卡點校驗。

代碼提交的卡點校驗。即在sql提交前進行相關規則校驗。這個校驗目前公共雲沒有直接可用的工具輔助,有能力的用戶可以自己開發相關的工具。規則分類如:

代碼規範類規則,如表命名規範、生命週期設置、表註釋等。
代碼質量類規則,如分母爲0提醒、NULL值參與計算影響結果提醒、插入字段順序錯誤等。
代碼性能類規則,如分區裁剪失效、掃描大表提醒、重複計算檢測等。
任務發佈上線時的卡點校驗。爲了保障線上數據的準確性,每一次變更都需要測試後再發布到線上生產環境,且生產環境測試通過後纔算發佈成功。
任務變更或者數據重跑,在離線數據加工過程中不可避免都會出現的操作。針對這個操作,在進行更新前,需要通知下游,將變更原因、變更邏輯、變更時間等信息表明,下游對此次變更沒有異議後再按照約定時間執行發佈變更,將變更對下游的影響降到最低。
數據風險點監控
前一章節主要介紹通過數據加工過程的卡點校驗保障在線數據和離線數據的一致性問題,本章節主要通過對數據風險點的監控來介紹如何保障數據的準確性。

在線數據風險點監控
在線業務系統的數據生成過程需要保證數據質量,主要根據業務規則對數據進行監控。MaxCompute本身沒有配套的工具,需用戶自己實現,在此只能給出一些建議拱參考。

如針對數據庫表的記錄進行規則校驗,制定一些監控規則,在業務系統中,每個業務過程進行數據落庫時對數據進行校驗。監控規則如交易系統中,訂單拍下時間、訂單完結時間、訂單支付金額、訂單狀態流轉都配置校驗規則,訂單拍下時間不會大於當天時間,也不會小於業務系統上線時間,一旦出現異常校驗就不通過。當業務繁雜且規則繁多,規則配置等運行成本高時,同樣根據數據資產等級進行監控。

離線數據風險點監控
本小節將介紹基於MaxCompute的數據倉庫建設過程中離線數據的風險點監控,主要報對數據準確性和數據產出及時性的監控。

數據準確性
數據準確性是數據質量的關鍵,因此數據準確成爲數據直連的重中之重,是所有離線系統加工時的第一保障要素,在此我們主要介紹通過DataWorks的數據質量工具——DQC來保障MaxCompute離線數據的準確性。

注意,要用DQC,必須是使用DataWorks進行任務調度執行。

我們先來認識DQC工具架構:DQC以數據集(DataSet)爲監控對象,當離線MaxCompute數據發生變化時,DQC會對數據進行校驗,並阻塞生產鏈路,以避免問題數據污染擴散。同時,DQC提供了歷史校驗結果的管理,以便對數據質量分析和定級。
基於MaxCompute的數倉數據質量管理

由上圖我們看出DQC主要是通過配置數據質量校驗規則,自動在數據處理過程中進行數據質量監控。DQC能監控數據質量並報警,本身不對數據產出進行處理,需要報警接收人判斷並決定如何處理。

DQC數據監控規則有強規則和弱規則之分。強規則,一旦觸發報警就會阻斷任務的執行(將任務置爲失敗狀態,使下游任務不會被觸發執行);弱規則,只告警不會阻斷任務的執行。DQC根據阿里內部的經驗,提供了一些常用的規則模板,包括:錶行數較N天前波動率、表空間大小較N天前波動率、字段最大/最小/平均值相比N天前波動率、字段空值/唯一個數等等,更多請參考DataWorks用戶手冊中數據質量模塊介紹。

DQC的工作流程如下圖所示:

基於MaxCompute的數倉數據質量管理

由此看出DQC的檢查其實也是運行SQL任務,只是這個任務是嵌套在主任務中,若檢查的太多也會影響整體的任務執行性能,因此哪些數據需要配置DQC規則,應該配置什麼規則,也要根據數據資產等級來確定。如A1、A2類數據監控率要達到90%以上,規則類需要3種以上,而不重要的數據資產不做強要求。

類似的規則都是有離線開發人員進行配置來確保數據準確性,當然不同的業務會有業務規則的約束,這些規則來源於數據產品或者消費的業務需求,有消費節點進行配置,然後上推到離線系統的起點進行監控,做到規則影響最小化。

數據的及時性
在確保數據準確性的前提下,需要進一步讓數據能夠及時的提供服務,否則數據的價值將大幅降低,甚至無價值,所以確保數據及時性也是保障數據質量重中之重的一環。

基於MaxCompute的離線任務,如常見的以天作爲時間間隔,對於天任務,一些重要的業務會對數據產出有時間要求,比如一些決策報表要求9:00或更早必須產出。爲確保數據完整性,天任務一般都是0點開始執行,計算剛過去的一天的數據,這些任務大多在夜裏運行,要確保數據按時產出,需要考慮任務的優先執行(當Project裏任務很多而資源有限的時候不得不考慮)和任務執行失敗或時長過長時的告警問題。這裏說的重要業務的“重要性”同樣是前面所說的數據資產等級的劃分,等級越高保障優先級越高。

任務優先級。MaxCompute平臺上任務優先級都是一樣,無法配置。因此要對MaxCompute的任務實現“優先級”功能,只能從調度平臺入手,優先調度下發重要的任務。
DataWorks平臺的調度任務,當對應的Project是使用預付費資源(預購固定的計算資源僅供當前項目使用)時,可以通過“智能監控”工具進行優先級設置。DataWorks的調度是一個樹形結構,當配置了葉子節點的優先級,這個優先級會傳遞到所有的上游節點,而葉子節點往往就是服務業務的消費節點。因此在優先級的設置上,先確定業務的資產等級,等級越高的業務對應的消費節點優先級配置越高,優先調度從而優先佔用計算資源,確保高等級業務準時產出。

當DataWorks的節點任務所屬的Project使用的是MaxCompute的後付費資源(計算按量付費,無固定資源使用),智能監控配置的優先級無效,因此,需要評估是否要購買預付費資源,同時對任務進行優化,減少不必要的資源浪費,力爭在有限的資源下更高效的完成計算。

任務報警。任務報警和優先級類似,通過DataWorks的“智能監控”工具進行配置,只需要配置葉子節點即可向上游傳遞。任務執行過程中出錯或者可能出現延遲都是不可避免的,爲了保障最重要數據(資產等級高)產出,我們需要“出錯”立即處理、“可能”延遲必須知曉並介入。
DataWorks—智能監控。MaxCompute的離線任務,通過DataWorks進行離線任務調度時,DataWorks提供智能監控工具,對調度任務進行監控告警。
智能監控是DataWorks任務運行的監控及分析系統。根據監控規則和任務運行情況,智能監控決策是否報警、何時報警、如何報警以及給誰報警。智能監控會自動選擇最合理的報警時間,報警方式以及報警對象。
智能監控旨在:

降低您的配置成本。
杜絕無效報警。
自動覆蓋所有重要任務(數量已經多到您自己無法梳理)。
基於MaxCompute的數倉數據質量管理
數據質量衡量
前面章節給出了保障基於MaxCompute的數據倉庫數據質量的方案,但是這些方案是否真的合適,或者哪些點需要改進,這些需制定一套指標進行度量。
比如:頻繁的接到DataWorks的智能監控發出的告警;每一個數據質量事件發生,必須分析有原因、處理過程、後續同類事件預防方案;嚴重的數據質量事件升級爲故障,並對故障進行定義、等級劃分、處理、review。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章