本文中介紹的非功能性規範均爲建議性規範,產品功能無強制,僅供指導。html
《大數據之路——阿里巴巴大數據實踐》——阿里巴巴數據技術及產品部 著。算法
數據對一個企業來講已是一項重要的資產,既然是資產,確定須要管理。隨着業務的增長,數據的應用愈來愈多,企業在建立的數倉過程當中對數據的管理也提出了更高的要求,而數據質量也是數倉建設過程不容忽視的環節。本文針對MaxCompute數倉建設過程當中如何作數據質量給出規範建議,爲實際數據治理提供依據及指導。sql
評估數據質量的好壞不一樣行業甚至不一樣企業有不一樣標準,在此咱們主要從四個方面進行評估,即完整性、準確性、一致性和及時性。數據庫
完整性是指數據的記錄和信息是否完整,是否存在缺失狀況。數據缺失主要包括記錄的缺失和記錄中某個字段信息的缺失,二者都會形成統計結果不許確,能夠說,完整性是數據質量最基礎的保障。如某個相對穩定的業務數據量天天的都有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)的導出表Table一、Table二、Table3,幾個表都打上A2-xxx數據產品標記,根據血緣往上追溯,將這幾個表的上有都打上A2的標記,一直標記到源數據業務系統。
經過如上方式完成數據資產等級的確認,給不一樣的數據定義不一樣的重要程度。
知道了數據的重要等級針對不一樣的等級,採起不一樣的保障措施,接下來咱們介紹在基於MaxCompute的數據倉庫中針對不一樣等級的數據的保障方法。
在線系統卡點校驗
在線系統數據加工過程卡點校驗,主要是指在業務系統的數據生成過程當中進行的卡點校驗。在線業務系統產生的數據也是數據倉庫的數據來源,然而在線業務系統廣泛都是複雜多變,且每次變動不可避免會帶來數據的變化,數倉須要適應多變的業務發展,及時作到數據的準確性。所以,在線業務的變動如何高效的通知到基於MaxCompute的離線數據倉庫,也是須要考慮的問題。這裏咱們介紹兩個方法拱參考:工具和人員左右開弓。紀要在工具上自動捕捉每一次業務的變化,同時也要求開發人員在乎識上自動進行業務變動通知。
工具——發佈平臺。在業務進行重大變動時,訂閱這個發佈過程,通知到離線開發人員,使其知曉這次變動內容。當業務系統足夠繁雜,平常發佈變動頻繁的狀況下,若每次變動都通知離線業務,勢必會形成沒必要要的浪費,同時也影響業務迭代效率。此時,能夠經過數據資產等級的標識,對業務進行打標後,針對高等級的數據資產,整理出什麼變動會影響數據的加工,如相關財務報表,若是業務系統的改造影響到財務報表的計算,使得約定好的計算口徑被業務系統發佈變動修改了,這種狀況必需要告知離線業務,而離線開發人員也必須主動關注這類發佈變動通知。
注意:這裏指的發佈平臺非阿里雲提供發佈平臺,只是一種統稱,指各個企業本身在線業務的相關發佈平臺。
工具——數據庫的變化感知。隨着業務的發展,業務數據庫(MaxCompute數倉的數據源)不可避免會出現數據庫擴容或者DDL變動,這些變動都要主動通知到離線開發人員。基於MaxCompute的數據倉庫在進行離線數據抽取時,經過DataWorks的數據集成工具,可能會限制某個業務數據庫表,若是該數據庫表發生擴容或者遷移等,數據集成工具感知不到,會可能致使數據抽取錯漏,而一旦錯漏,會影響下游一系列依賴該表的應用,所以建議業務數據庫也須要有庫表變動通知。
工具只是一種輔助手段,操做工具的人員纔是核心。數據資產等級的上下游打通,一樣也將這個過程給到在線開發人員,使其知曉哪些是重要的核心數據資產,提升在線開發人員的數據風險意識。經過培訓等方式將離線數據的訴求、離線數據的加工過程、數據產品的應用方式告訴在線業務開發人員,讓其瞭解數據的重要性,瞭解數據的價值,同時也告知出錯後果。讓在線開發人員在完成業務目標時,也要考慮數據的目標,作到業務端和數據端一致。
離線系統卡點校驗
首先咱們再次認識MaxCompute進行數據加工的基本流程:數據從業務系統上產生,經過同步工具(DataWorks的數據集成或阿里雲DTS)進入數倉系統(MaxCompute),數據在數倉中進行清洗、加工、整合、算法、模型等一系列運算後,再經過同步工具輸出到數據產品中進行消費。
整個流程中,有了數據加工,纔有了數據倉庫模型和數據倉庫代碼的建設,如何保障數據加工過程當中的質量是離線數據倉庫保障數據質量的一個重要環節。
MaxCompute進行數據加工,能夠經過DataWorks、也能夠經過MaxCompute studio、或者直接經過MaxCompute SDK提交各類任務進行加工。不管用什麼工具,都會經歷代碼開發->測試、發佈->運維、變動 的過程,能夠對這個過程每一個環節進行卡點校驗。
代碼提交的卡點校驗。即在sql提交前進行相關規則校驗。這個校驗目前公共雲沒有直接可用的工具輔助,有能力的用戶能夠本身開發相關的工具。規則分類如:
前一章節主要介紹經過數據加工過程的卡點校驗保障在線數據和離線數據的一致性問題,本章節主要經過對數據風險點的監控來介紹如何保障數據的準確性。
在線數據風險點監控
在線業務系統的數據生成過程須要保證數據質量,主要根據業務規則對數據進行監控。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規則,應該配置什麼規則,也要根據數據資產等級來肯定。如A一、A2類數據監控率要達到90%以上,規則類須要3種以上,而不重要的數據資產不作強要求。
相似的規則都是有離線開發人員進行配置來確保數據準確性,固然不一樣的業務會有業務規則的約束,這些規則來源於數據產品或者消費的業務需求,有消費節點進行配置,而後上推到離線系統的起點進行監控,作到規則影響最小化。
數據的及時性
在確保數據準確性的前提下,須要進一步讓數據可以及時的提供服務,不然數據的價值將大幅下降,甚至無價值,因此確保數據及時性也是保障數據質量重中之重的一環。
基於MaxCompute的離線任務,如常見的以天做爲時間間隔,對於天任務,一些重要的業務會對數據產出有時間要求,好比一些決策報表要求9:00或更早必須產出。爲確保數據完整性,天任務通常都是0點開始執行,計算剛過去的一天的數據,這些任務大多在夜裏運行,要確保數據按時產出,須要考慮任務的優先執行(當Project裏任務不少而資源有限的時候不得不考慮)和任務執行失敗或時長過長時的告警問題。這裏說的重要業務的「重要性」一樣是前面所說的數據資產等級的劃分,等級越高保障優先級越高。
任務優先級。MaxCompute平臺上任務優先級都是同樣,沒法配置。所以要對MaxCompute的任務實現「優先級」功能,只能從調度平臺入手,優先調度下發重要的任務。
DataWorks平臺的調度任務,當對應的Project是使用預付費資源(預購固定的計算資源僅供當前項目使用)時,能夠經過「智能監控」工具進行優先級設置。DataWorks的調度是一個樹形結構,當配置了葉子節點的優先級,這個優先級會傳遞到全部的上游節點,而葉子節點每每就是服務業務的消費節點。所以在優先級的設置上,先肯定業務的資產等級,等級越高的業務對應的消費節點優先級配置越高,優先調度從而優先佔用計算資源,確保高等級業務準時產出。
當DataWorks的節點任務所屬的Project使用的是MaxCompute的後付費資源(計算按量付費,無固定資源使用),智能監控配置的優先級無效,所以,須要評估是否要購買預付費資源,同時對任務進行優化,減小沒必要要的資源浪費,力爭在有限的資源下更高效的完成計算。
DataWorks—智能監控。MaxCompute的離線任務,經過DataWorks進行離線任務調度時,DataWorks提供智能監控工具,對調度任務進行監控告警。
智能監控是DataWorks任務運行的監控及分析系統。根據監控規則和任務運行狀況,智能監控決策是否報警、什麼時候報警、如何報警以及給誰報警。智能監控會自動選擇最合理的報警時間,報警方式以及報警對象。
智能監控旨在:
前面章節給出了保障基於MaxCompute的數據倉庫數據質量的方案,可是這些方案是否真的合適,或者哪些點須要改進,這些需制定一套指標進行度量。
好比:頻繁的接到DataWorks的智能監控發出的告警;每個數據質量事件發生,必須分析有緣由、處理過程、後續同類事件預防方案;嚴重的數據質量事件升級爲故障,並對故障進行定義、等級劃分、處理、review。
本文爲雲棲社區原創內容,未經容許不得轉載。