1. 程式人生 > >基於MaxCompute的數倉資料質量管理

基於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),資料在數倉中進行清洗、加工、整合、演算法、模型等一系列運算後,再通過同步工具輸出到資料產品中進行消費。整個流程資料都是以存放在表的形式體現,流轉鏈路大致如下圖:

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

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

知道了資料的重要等級針對不同的等級,採取不同的保障措施,接下來我們介紹在基於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提供了歷史校驗結果的管理,以便對資料質量分析和定級。

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

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

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

由此看出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的資料倉庫資料質量的方案,但是這些方案是否真的合適,或者哪些點需要改進,這些需制定一套指標進行度量。
比如:頻繁的接到DataWorks的智慧監控發出的告警;每一個數據質量事件發生,必須分析有原因、處理過程、後續同類事件預防方案;嚴重的資料質量事件升級為故障,並對故障進行定義、等級劃分、處理、review。

相關工具連結

作者:海清

原文連結

本文為雲棲社群原創內容,未經