【ETL】系列八:數(shù)據(jù)質(zhì)量的保障——數(shù)據(jù)校驗(yàn)

前面我們介紹了4大類核心轉(zhuǎn)換場(chǎng)景。

【ETL】系列四:核心轉(zhuǎn)換場(chǎng)景—單表間直轉(zhuǎn)

【ETL】系列五:核心轉(zhuǎn)換場(chǎng)景-字段合并與字段拆分

【ETL】系列六:核心轉(zhuǎn)換場(chǎng)景-行轉(zhuǎn)列與列轉(zhuǎn)行

【ETL】系列七:核心轉(zhuǎn)換場(chǎng)景-規(guī)格化清洗

之前的文章主要是針對(duì)同構(gòu)或異構(gòu)數(shù)據(jù)的轉(zhuǎn)換,然而在數(shù)據(jù)同步之前或同步之后,都存在數(shù)據(jù)校驗(yàn)的業(yè)務(wù)場(chǎng)景。

今天這個(gè)篇幅,我們來(lái)介紹數(shù)據(jù)質(zhì)量管理利器——校驗(yàn)。

找不到合適的圖了就將就看吧.jpg

希望在這篇文章結(jié)束之后,你可以對(duì)以下問(wèn)題有進(jìn)一步的理解。

為什們需要數(shù)據(jù)校驗(yàn)?數(shù)據(jù)校驗(yàn)的常用規(guī)則有哪些?
怎么用kettle對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)?
kettle的數(shù)據(jù)校驗(yàn)有哪些不足?如何改進(jìn)?

一、數(shù)據(jù)校驗(yàn)介紹

數(shù)據(jù)校驗(yàn)是在數(shù)據(jù)抽取、清洗轉(zhuǎn)換流程完成之后,通過(guò)一系列的校驗(yàn)規(guī)則,定位到錯(cuò)誤數(shù)據(jù),并將異常數(shù)據(jù)推送給下游處理,最終提升數(shù)據(jù)質(zhì)量的環(huán)節(jié)。
數(shù)據(jù)校驗(yàn)是數(shù)據(jù)質(zhì)量的重要保障,目前業(yè)內(nèi)認(rèn)可的數(shù)據(jù)質(zhì)量的標(biāo)準(zhǔn)有:

準(zhǔn)確性: 描述數(shù)據(jù)是否與其對(duì)應(yīng)的客觀實(shí)體的特征相一致;
完整性: 描述數(shù)據(jù)是否存在缺失記錄或缺失字段;
一致性: 描述同一實(shí)體的同一屬性的值在不同的系統(tǒng)是否一致;
有效性: 描述數(shù)據(jù)是否滿足用戶定義的條件或在一定的域值范圍內(nèi);
唯一性: 描述數(shù)據(jù)是否存在重復(fù)記錄;
及時(shí)性: 描述數(shù)據(jù)的產(chǎn)生和供應(yīng)是否及時(shí);
穩(wěn)定性: 描述數(shù)據(jù)的波動(dòng)是否是穩(wěn)定的,是否在其有效范圍內(nèi)。

以上列出的數(shù)據(jù)質(zhì)量標(biāo)準(zhǔn)只是一些通用的規(guī)則,這些標(biāo)準(zhǔn)是可以根據(jù)數(shù)據(jù)的實(shí)際情況和業(yè)務(wù)要求進(jìn)行擴(kuò)展。

由數(shù)據(jù)質(zhì)量的標(biāo)準(zhǔn),對(duì)應(yīng)通用的校驗(yàn)規(guī)則有:

單字段校驗(yàn):通過(guò)單一字段的約束條件進(jìn)行校驗(yàn),包含不為空、比較運(yùn)算、包含、不包含、取值范圍(區(qū)間)、取值范圍(枚舉)、字段長(zhǎng)度、字段類型、正則表達(dá)式等規(guī)則,可用于校驗(yàn)數(shù)據(jù)的準(zhǔn)確性、完整性等;
勾稽關(guān)系校驗(yàn):校驗(yàn)字段通常和其他字段做勾稽對(duì)比,利用字段平衡關(guān)系(衍生計(jì)算)來(lái)進(jìn)行校驗(yàn);
唯一性校驗(yàn):針對(duì)單一字段或者多個(gè)字段組合后做唯一性約束校驗(yàn),通過(guò)重復(fù)記錄行或其他違反唯一性約束屬性值進(jìn)行校驗(yàn);
關(guān)聯(lián)性校驗(yàn):針對(duì)字段的關(guān)聯(lián)關(guān)系校驗(yàn),通過(guò)引入其他關(guān)聯(lián)字段驗(yàn)證字段的存在和缺失進(jìn)行校驗(yàn);
記錄行統(tǒng)計(jì)型校驗(yàn):針對(duì)某個(gè)字段的記錄行總數(shù)做校驗(yàn),通過(guò)統(tǒng)計(jì)記錄行數(shù)量與合理閾值范圍比較來(lái)進(jìn)行校驗(yàn);
多源對(duì)比校驗(yàn):針對(duì)多個(gè)數(shù)據(jù)源的數(shù)據(jù)進(jìn)行對(duì)比校驗(yàn),通過(guò)關(guān)聯(lián)字段和對(duì)比字段的對(duì)比,以校驗(yàn)通過(guò)率高或匹配率高的數(shù)據(jù)知曉哪個(gè)數(shù)據(jù)源的數(shù)據(jù)質(zhì)量高。

二、怎么用kettle對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)?

數(shù)據(jù)校驗(yàn)在完整的數(shù)據(jù)處理過(guò)程中的重要性不言而喻。在kettle中可以進(jìn)行校驗(yàn)的方式也比較多,我們介紹以下幾種常用的方式:

(1)數(shù)據(jù)校驗(yàn)的插件,支持單字段校驗(yàn)。


kettle內(nèi)置數(shù)據(jù)校驗(yàn).png

從以上截圖可以發(fā)現(xiàn),數(shù)據(jù)校驗(yàn)的插件主要是針對(duì)單字段進(jìn)行校驗(yàn),校驗(yàn)規(guī)則也比較簡(jiǎn)單。

(2)使用JavaScript函數(shù)來(lái)實(shí)現(xiàn)ETL的自動(dòng)化校驗(yàn)。

可參考利用kettle的JavaScript 函數(shù)進(jìn)行ETL數(shù)據(jù)校驗(yàn)

此處不做贅述。

(3)利用合并記錄插件,進(jìn)行多路數(shù)據(jù)的對(duì)比校驗(yàn)。

在這里我們介紹簡(jiǎn)單介紹一下【合并記錄】的操作方式,【合并記錄】這一步驟用于將兩個(gè)不同來(lái)源的數(shù)據(jù)合并,這兩個(gè)來(lái)源的數(shù)據(jù)分別為舊數(shù)據(jù)和新數(shù)據(jù),該步驟將舊數(shù)據(jù)和新數(shù)據(jù)按照指定的關(guān)鍵字匹配、比較、合并。kettle的這種方式類似于簡(jiǎn)單的多源對(duì)比校驗(yàn)。

實(shí)操樣例:將2路來(lái)源的數(shù)據(jù)進(jìn)行比較后合并。

操作步驟:
1、點(diǎn)擊左側(cè)的 核心對(duì)象,選擇自定義常量數(shù)據(jù),對(duì)比2個(gè)數(shù)據(jù)源,就拖選2個(gè)插件。

多路數(shù)據(jù)1-舊數(shù)據(jù).png

多路數(shù)據(jù)2-新數(shù)據(jù).png

2、點(diǎn)擊左側(cè)的 核心對(duì)象,選擇 合并記錄,進(jìn)行相關(guān)配置。

合并記錄進(jìn)行2路數(shù)據(jù)比較.png

在這里,需要理解舊數(shù)據(jù)來(lái)源、 新數(shù)據(jù)來(lái)源、標(biāo)志字段、關(guān)鍵字段、比較字段的含義。

1、舊數(shù)據(jù)來(lái)源:舊數(shù)據(jù)來(lái)源的步驟,選擇“自定義常量數(shù)據(jù)-舊數(shù)據(jù)”;
2、新數(shù)據(jù)來(lái)源:新數(shù)據(jù)來(lái)源的步驟,選擇“自定義常量數(shù)據(jù)-新數(shù)據(jù)”;
3、標(biāo)志字段:設(shè)置標(biāo)志字段的名稱,標(biāo)志字段用于保存比較的結(jié)果,比較結(jié)果有下列幾種:

“identical” – 舊數(shù)據(jù)和新數(shù)據(jù)一樣
“changed” – 數(shù)據(jù)發(fā)生了變化
“new” – 新數(shù)據(jù)中有而舊數(shù)據(jù)中沒(méi)有的記錄
“deleted” –舊數(shù)據(jù)中有而新數(shù)據(jù)中沒(méi)有的記錄

4、關(guān)鍵字段:唯一索引放在關(guān)鍵字段,用來(lái)連接新舊數(shù)據(jù)源的記錄,用于定位兩個(gè)數(shù)據(jù)源中的同一條記錄,這里是comcode;
5、比較字段:對(duì)于兩個(gè)數(shù)據(jù)源中的同一條記錄中,指定需要比較的字段,這里是proname和curamount;

注:舊數(shù)據(jù)和新數(shù)據(jù)要有相同的字段名稱,以便關(guān)聯(lián)2個(gè)來(lái)源的數(shù)據(jù)。

3、查看合并結(jié)果,在標(biāo)志字段中看identical、changed、new、deleted的對(duì)比結(jié)果。

合并后的數(shù)據(jù)將包括舊數(shù)據(jù)來(lái)源和新數(shù)據(jù)來(lái)源里的所有數(shù)據(jù),對(duì)于變化的數(shù)據(jù),使用新數(shù)據(jù)代替舊數(shù)據(jù),同時(shí)在結(jié)果里用標(biāo)志字段來(lái)指定新舊數(shù)據(jù)的比較結(jié)果。

字段合并結(jié)果.png

對(duì)于比較、合并之后的數(shù)據(jù),可以定義后續(xù)的處理方式,比如new的新增數(shù)據(jù)進(jìn)行插入,changed數(shù)據(jù)進(jìn)行更新,deleted數(shù)據(jù)進(jìn)行刪除,identical數(shù)據(jù)不做處理;或者,對(duì)于對(duì)比不一致(除了identical的情況)的數(shù)據(jù),進(jìn)行清洗糾錯(cuò)處理,確保數(shù)據(jù)的正確性。

以上是對(duì)比2個(gè)數(shù)據(jù)源結(jié)果合并的處理流程,是多源數(shù)據(jù)對(duì)比的一個(gè)簡(jiǎn)化版,在實(shí)際的業(yè)務(wù)處理過(guò)程中,會(huì)面臨更加復(fù)雜的應(yīng)用場(chǎng)景。

三、 kettle的數(shù)據(jù)校驗(yàn)有哪些不足?如何改進(jìn)?

Kettle主要是處理數(shù)據(jù)抽取、轉(zhuǎn)換、同步加載的工具,其校驗(yàn)?zāi)芰Σ⒉皇呛軆?yōu)秀,存在很多不足。

Kettle的校驗(yàn)有哪些不足

1、校驗(yàn)規(guī)則弱:?jiǎn)巫侄涡r?yàn)、記錄行校驗(yàn)、多源對(duì)比校驗(yàn)的規(guī)則無(wú)法有效滿足復(fù)雜的業(yè)務(wù)場(chǎng)景;
2、多個(gè)校驗(yàn)規(guī)則無(wú)法快速配置:實(shí)際業(yè)務(wù)中,校驗(yàn)數(shù)據(jù)對(duì)象需要用到多個(gè)校驗(yàn)規(guī)則,在kettle中無(wú)法快速配置;
3、缺少批量操作:校驗(yàn)插件中的操作,缺少批量操作功能,影響配置效率;
4、缺失校驗(yàn)規(guī)則管理:缺失以數(shù)據(jù)表等維度的校驗(yàn)規(guī)則的增刪查改和操作日志等管理功能;
5、缺失校驗(yàn)異常管理:缺失校驗(yàn)結(jié)果異常查看和處理,無(wú)法有效跟蹤問(wèn)題;
6、缺失數(shù)據(jù)質(zhì)量檢核分析:缺少?gòu)臄?shù)據(jù)完整性、準(zhǔn)確率、及時(shí)性等維度,實(shí)現(xiàn)字段級(jí)、表級(jí)的數(shù)據(jù)質(zhì)量分析能力。

校驗(yàn)的改進(jìn)方向

在實(shí)際的業(yè)務(wù)處理過(guò)程中,上述提到的kettle校驗(yàn)不足,無(wú)法有效滿足校驗(yàn)需求,分享幾個(gè)改進(jìn)方向。

1、完善校驗(yàn)規(guī)則:kettle的校驗(yàn)規(guī)則缺失較多,可以從數(shù)據(jù)業(yè)務(wù)中完善校驗(yàn)規(guī)則類型,比如財(cái)務(wù)數(shù)據(jù)常用的勾稽關(guān)系校驗(yàn);
2、校驗(yàn)規(guī)則配置可視化:無(wú)論是用SQL函數(shù)還是JavaScript函數(shù)的實(shí)現(xiàn)校驗(yàn)的方式對(duì)業(yè)務(wù)能力的要求都相對(duì)較高,可以提供更加簡(jiǎn)單的、可視化的方式進(jìn)行配置,降低配置難度;
3、支持自定義校驗(yàn)規(guī)則集:一類待校驗(yàn)數(shù)據(jù)使用一類已定義好的校驗(yàn)規(guī)則集,減少單個(gè)校驗(yàn)規(guī)則的選擇和配置;
4、增加批量操作:對(duì)于校驗(yàn)規(guī)則的配置、校驗(yàn)規(guī)則集的定義、校驗(yàn)規(guī)則執(zhí)行方式設(shè)置、校驗(yàn)結(jié)果處理都需要在交互上支持批量操作;
5、增加校驗(yàn)規(guī)則管理功能:對(duì)于具體的業(yè)務(wù)來(lái)說(shuō),需要支持?jǐn)?shù)據(jù)表、規(guī)則名稱等維度的管理功能,可以按照業(yè)務(wù)所需的維度,進(jìn)行校驗(yàn)規(guī)則的查看、新增、修改和刪除,當(dāng)然,對(duì)于規(guī)則的操作日志都需要完整地被記錄下來(lái);
6、增加校驗(yàn)異常的處理:校驗(yàn)的異常需要根據(jù)具體異常類型支持自動(dòng)化處理和人工處理2種方式,制定各種自動(dòng)糾錯(cuò)策略能有效地減少人工處理工作量;
7、增加數(shù)據(jù)質(zhì)量分析:增加數(shù)據(jù)質(zhì)量問(wèn)題的分布分析、質(zhì)量問(wèn)題趨勢(shì)分析、質(zhì)量改善情況等質(zhì)量分析報(bào)表。

除了上述的一些改進(jìn)方向之外,還有很多可以挖掘改進(jìn)的點(diǎn),這些就需要根據(jù)具體業(yè)務(wù)來(lái)不斷梳理和實(shí)現(xiàn)了。

以上描述的不足和改進(jìn)方向,僅針對(duì)業(yè)務(wù)場(chǎng)景的覆蓋度、產(chǎn)品功能的完善性、工具產(chǎn)品的易用性的角度來(lái)說(shuō)的,在數(shù)據(jù)校驗(yàn)過(guò)程中,還有更為重要的性能指標(biāo)要求,如何快速、穩(wěn)定地對(duì)十萬(wàn)、百萬(wàn)數(shù)據(jù)進(jìn)行校驗(yàn),并及時(shí)輸出校驗(yàn)結(jié)果,這需要很多產(chǎn)品策略和技術(shù)方案來(lái)實(shí)現(xiàn)。

在數(shù)據(jù)治理體系中,作為數(shù)據(jù)質(zhì)量保障的數(shù)據(jù)校驗(yàn)系統(tǒng),是需要產(chǎn)品經(jīng)理持續(xù)打磨的工具。

更多關(guān)于數(shù)據(jù)校驗(yàn)的探討,歡迎大家交流哦!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容