文/高亮 吳先斌
?
利用數(shù)據(jù)質(zhì)量規(guī)則庫推動數(shù)據(jù)質(zhì)量管理
文/高亮 吳先斌
不論是高校還是其他行業(yè),管理信息系統(tǒng)數(shù)據(jù)質(zhì)量的重要性不言而喻。在業(yè)務(wù)層面,數(shù)據(jù)質(zhì)量問題不僅會影響單點業(yè)務(wù)的正常開展,還會影響與該業(yè)務(wù)相關(guān)的其他業(yè)務(wù)順利開展;在決策層面,數(shù)據(jù)質(zhì)量問題會直接影響到管理層的決策依據(jù)是否準確、客觀。
高校各類業(yè)務(wù)較多,應(yīng)用系統(tǒng)繁雜,在系統(tǒng)建設(shè)過程中往往會忽視數(shù)據(jù)質(zhì)量的重要性,沒有采取足夠的措施,導(dǎo)致隨著系統(tǒng)和數(shù)據(jù)的逐步深入應(yīng)用,數(shù)據(jù)質(zhì)量問題一點點暴露出來,比如數(shù)據(jù)的有效性、準確性、一致性等。最壞的結(jié)果就是用戶感覺系統(tǒng)和數(shù)據(jù)是不可信的,最終放棄了使用系統(tǒng),這樣也就失去了建設(shè)系統(tǒng)的意義。
從高校數(shù)據(jù)質(zhì)量管理工作進展情況來看,在思想上目前還沒有引起高校CIO的足夠重視,在管理制度、技術(shù)措施等方面還沒有開展更多有效工作。數(shù)據(jù)質(zhì)量是一個非常復(fù)雜的系統(tǒng)性問題,解決數(shù)據(jù)質(zhì)量問題應(yīng)該從數(shù)據(jù)質(zhì)量管理制度、應(yīng)用系統(tǒng)建設(shè)、數(shù)據(jù)質(zhì)量監(jiān)控三個方面開展,并且三者要有機結(jié)合形成聯(lián)動,單靠某一方面的努力是不夠的。我們要清楚一點,再完美的系統(tǒng)都存在數(shù)據(jù)質(zhì)量問題,數(shù)據(jù)質(zhì)量監(jiān)控只是一種必不可少的補充手段,已經(jīng)到了解決問題的下游。本文主要介紹一種基于規(guī)則庫的數(shù)據(jù)質(zhì)量自動監(jiān)控平臺實現(xiàn)方法及其在推動數(shù)據(jù)質(zhì)量管理方面的重要作用。
數(shù)據(jù)質(zhì)量監(jiān)控平臺主要包括三個部分:數(shù)據(jù)層、功能層和應(yīng)用層,平臺架構(gòu)如圖1所示。
圖1 數(shù)據(jù)質(zhì)量監(jiān)控平臺架構(gòu)
1.數(shù)據(jù)層
數(shù)據(jù)層定義了數(shù)據(jù)質(zhì)量監(jiān)控的對象,主要是各核心業(yè)務(wù)系統(tǒng)的數(shù)據(jù),如人事系統(tǒng)、教學系統(tǒng)、科研系統(tǒng)、學生系統(tǒng)等。
2.功能層
功能層是數(shù)據(jù)質(zhì)量監(jiān)控平臺的核心部分,包括數(shù)據(jù)質(zhì)量檢查規(guī)則的定義、數(shù)據(jù)質(zhì)量檢查規(guī)則腳本、檢查規(guī)則執(zhí)行引擎、數(shù)據(jù)質(zhì)量檢查規(guī)則執(zhí)行情況監(jiān)控等。
3.應(yīng)用層
數(shù)據(jù)質(zhì)量檢查結(jié)果可以通過兩種方式訪問:一種是通過郵件訂閱方式將數(shù)據(jù)質(zhì)量檢查結(jié)果發(fā)給相關(guān)人員,另一種方式利用前端展示工具(如MicroStrategy、Cognos、Tableau等)開發(fā)數(shù)據(jù)質(zhì)量在線分析報表、儀表盤、分析報告等。前端展示報表不僅能夠查看匯總數(shù)據(jù),而且能夠通過鉆取功能查看明細數(shù)據(jù)以便業(yè)務(wù)人員能夠準確定位到業(yè)務(wù)系統(tǒng)的錯誤數(shù)據(jù)。
數(shù)據(jù)質(zhì)量監(jiān)控規(guī)則庫是監(jiān)控平臺的核心,用來存放用戶根據(jù)數(shù)據(jù)質(zhì)量標準定義的數(shù)據(jù)質(zhì)量檢查規(guī)則腳本,供監(jiān)控引擎讀取并執(zhí)行,同時將檢查產(chǎn)生的結(jié)果存放到監(jiān)控結(jié)果表中,表1是監(jiān)控規(guī)則表的數(shù)據(jù)結(jié)構(gòu),其中的核心字段解釋如下:
system_flag:系統(tǒng)標識,用來標記監(jiān)控規(guī)則屬于哪個業(yè)務(wù)系統(tǒng)。
scan_rule:監(jiān)控規(guī)則,是可執(zhí)行的SQL腳本,監(jiān)控規(guī)則主要分兩類,一類是單純的數(shù)據(jù)校驗規(guī)則,如檢查是否為NULL、是否與字典表一致等;另一類是業(yè)務(wù)校驗規(guī)則,有些數(shù)據(jù)從數(shù)據(jù)庫角度出發(fā)是沒有問題的,但是不一定符合業(yè)務(wù)邏輯,如項目的結(jié)項時間早于立項時間等。
scan_rule_desc:監(jiān)控規(guī)則描述信息,用來準確說明監(jiān)控規(guī)則腳本的檢查內(nèi)容、檢查邏輯等信息,供業(yè)務(wù)人員和技術(shù)人員詳細了解監(jiān)控規(guī)則含義。
表1 監(jiān)控規(guī)則表
scan_object:監(jiān)控對象,用來說明監(jiān)控規(guī)則檢查的數(shù)據(jù)對象或業(yè)務(wù)實體。
check_type_name:檢查類型名稱,指監(jiān)控規(guī)則檢查數(shù)據(jù)質(zhì)量的哪一種問題,如完整性、有效性、準確性、唯一性、一致性、合理性。
scan_period:掃描周期,指該監(jiān)控規(guī)則執(zhí)行的頻率,如每天、每周、每月。
status:規(guī)則狀態(tài),指該監(jiān)控規(guī)則是否啟用,1表示啟用,0表示關(guān)閉,監(jiān)控引擎不會執(zhí)行已經(jīng)關(guān)閉的規(guī)則。
last_scan_date:最近掃描時間,記錄該規(guī)則上一次執(zhí)行時間,用來和掃描周期聯(lián)合計算當前時間該監(jiān)控規(guī)則是否可執(zhí)行。
output_result:輸出結(jié)果,指監(jiān)控規(guī)則執(zhí)行后輸出的內(nèi)容,讓數(shù)據(jù)質(zhì)量管理人員準確知道是什么數(shù)據(jù)存在問題,方便在業(yè)務(wù)系統(tǒng)中查找、修改。
scan_scope:掃描范圍,指監(jiān)控規(guī)則掃描哪些業(yè)務(wù)數(shù)據(jù),有并不是所有的業(yè)務(wù)數(shù)據(jù)都需要去檢查,掃描范圍在監(jiān)控規(guī)則腳本中也有相應(yīng)的體現(xiàn)。
rule_level:規(guī)則級別,指該監(jiān)控規(guī)則對應(yīng)的數(shù)據(jù)質(zhì)量問題對業(yè)務(wù)的影響程度,一般可分為高、中、低三個級別,高級別的數(shù)據(jù)質(zhì)量問題必須在第一時間解決,否則會影響業(yè)務(wù)的正常開展。
module_name:系統(tǒng)模塊名稱,指監(jiān)控規(guī)則對應(yīng)業(yè)務(wù)系統(tǒng)中哪個功能模塊,主要用來將問題數(shù)據(jù)按系統(tǒng)功能模塊來分類。
charger_email:數(shù)據(jù)質(zhì)量負責人郵箱,可以將該規(guī)則檢查的結(jié)果發(fā)生到負責人郵箱中,方便查看問題數(shù)據(jù)。
表2 是監(jiān)控結(jié)果表的數(shù)據(jù)結(jié)構(gòu),該表用來存放某監(jiān)控規(guī)則在相應(yīng)的掃描時間點檢查出來的結(jié)果數(shù)據(jù),通過scan_rule_id與監(jiān)控規(guī)則表相關(guān)聯(lián)就能知道結(jié)果數(shù)據(jù)的詳細信息。
表2 監(jiān)控結(jié)果表
表3 監(jiān)控規(guī)則實例
表3是監(jiān)控規(guī)則庫中教學系統(tǒng)相關(guān)的一些監(jiān)控規(guī)則實例,由于排版問題只列出規(guī)則的核心字段。
監(jiān)控引擎是數(shù)據(jù)質(zhì)量監(jiān)控平臺的發(fā)動機,負責執(zhí)行監(jiān)控腳本并產(chǎn)生監(jiān)控結(jié)果,監(jiān)控引擎是一個可供調(diào)度程序定時執(zhí)行的存儲過程,需要部署在一個具有讀取其他業(yè)務(wù)庫的數(shù)據(jù)庫用戶下,監(jiān)控引擎執(zhí)行流程如圖2所示,具體執(zhí)行過程說明如下:
圖2 數(shù)據(jù)質(zhì)量監(jiān)控引擎執(zhí)行流程
1.通過調(diào)度程序定時觸發(fā)監(jiān)控引擎執(zhí)行,監(jiān)控引擎可以根據(jù)實際情況靈活設(shè)置調(diào)度時間,一般設(shè)置在凌晨調(diào)度,減少對業(yè)務(wù)系統(tǒng)的影響。
2.監(jiān)控引擎順序讀取規(guī)則庫中的數(shù)據(jù)質(zhì)量檢查規(guī)則,判斷規(guī)則是否有效、判斷規(guī)則是否滿足掃描周期。滿足條件后執(zhí)行檢查規(guī)則,并將檢查結(jié)果輸出到結(jié)果表中。
3.一條規(guī)則執(zhí)行完成后,更新該規(guī)則的last_scan_date(最近掃描時間)字段。
4.將監(jiān)控規(guī)則執(zhí)行是否成功記錄到日志表,尤其是執(zhí)行失敗的規(guī)則,并將日志發(fā)送給系統(tǒng)管理員,以便及時修復(fù)問題。
5.執(zhí)行完最后一條規(guī)則結(jié)束監(jiān)控引擎的一次運行,同時將檢查結(jié)果以報告的形式發(fā)送給相關(guān)業(yè)務(wù)人員。
數(shù)據(jù)質(zhì)量監(jiān)控結(jié)果可以通過兩種方式提供給相關(guān)業(yè)務(wù)人員,一種是在線可視化展示,業(yè)務(wù)人員可以隨時直觀地了解數(shù)據(jù)質(zhì)量整體情況和詳細情況,便于整改問題數(shù)據(jù);另一種是通過郵件方式定期為業(yè)務(wù)人員推送數(shù)據(jù)質(zhì)量報告。圖3是用數(shù)據(jù)可視化工具Tableau開發(fā)的數(shù)據(jù)質(zhì)量結(jié)果匯總儀表盤,通過該儀表盤可以查看當天每個系統(tǒng)、每條規(guī)則數(shù)據(jù)質(zhì)量情況,通過鉆取功能可以查看明細數(shù)據(jù),方便準確定位具體的問題數(shù)據(jù),以便在業(yè)務(wù)系統(tǒng)中修改。
圖3 數(shù)據(jù)質(zhì)量監(jiān)控結(jié)果匯總儀表盤
圖4是數(shù)據(jù)質(zhì)量變化趨勢儀表盤,該儀表盤可以展示每個系統(tǒng)、每條規(guī)則近30天數(shù)據(jù)質(zhì)量變化趨勢,有助于業(yè)務(wù)人員了解業(yè)務(wù)系統(tǒng)數(shù)據(jù)質(zhì)量的變化情況,并采取相應(yīng)的整改措施。
圖4 數(shù)據(jù)質(zhì)量變化趨勢
本文介紹的數(shù)據(jù)質(zhì)量監(jiān)控平臺具有靈活部署、規(guī)則庫動態(tài)擴展、調(diào)度按需配置等特點,技術(shù)人員根據(jù)具體數(shù)據(jù)問題可以靈活地自定義監(jiān)控規(guī)則,對系統(tǒng)運行中發(fā)現(xiàn)的數(shù)據(jù)質(zhì)量問題進行統(tǒng)一監(jiān)控和管理。數(shù)據(jù)質(zhì)量監(jiān)控平臺是解決數(shù)據(jù)質(zhì)量問題的有效手段之一,為技術(shù)人員和業(yè)務(wù)人員提供了一個了解數(shù)據(jù)質(zhì)量的便捷途徑,能夠有效地支持業(yè)務(wù)人員整改問題數(shù)據(jù)。高質(zhì)量的數(shù)據(jù)不僅能夠支撐日常業(yè)務(wù)順利開展,還能夠為決策支持系統(tǒng)的建設(shè)打下良好基礎(chǔ),該平臺將成為打造綠色數(shù)據(jù)生態(tài)環(huán)境的有力支撐工具。
(作者單位為上海財經(jīng)大學信息化辦公室)