您好,登錄后才能下訂單哦!
今天跟一個測試同事聊天:
我:最近忙什么項目呢?
他:在測大數(shù)據(jù)血緣
我:啥?
他:血緣啊
我:啥血緣?
他:大數(shù)據(jù)血緣啊
我:血緣是啥?
他:就是數(shù)據(jù)血緣啊
我:...
看看,天就是這么被聊死的,我忍不住內(nèi)心OS(怪不得你禿頂還沒女朋友)
我趕緊回來問問 google,分析了各路答案之后,可以總結(jié)成兩句話:
通常我們會對原始數(shù)據(jù)進(jìn)行多個步驟的各種加工,最后產(chǎn)生出新的數(shù)據(jù),在這個過程中會產(chǎn)生很多表,這些數(shù)據(jù)表之間的鏈路關(guān)系就可稱為大數(shù)據(jù)血緣。
大數(shù)據(jù)血緣測試,就是測試數(shù)據(jù)流轉(zhuǎn)過程中的每個環(huán)節(jié)的數(shù)據(jù)質(zhì)量。
同時,數(shù)據(jù)血緣還有幾個同義詞:
Data Lineage 數(shù)據(jù)血緣(數(shù)據(jù)血統(tǒng)) = Data Provenance 數(shù)據(jù)起源 = Data Pedigree 數(shù)據(jù)譜系
在現(xiàn)實世界中,我們每個個體都是祖先通過生育關(guān)系一代×××育而來,這樣就形成了我們?nèi)祟惖母鞣N血緣關(guān)系。
在數(shù)據(jù)信息時代,每時每刻都會產(chǎn)生龐大的數(shù)據(jù),即我們通常說的大數(shù)據(jù),對這些數(shù)據(jù)進(jìn)行各種加工組合、轉(zhuǎn)換,又會產(chǎn)生新的數(shù)據(jù),這些數(shù)據(jù)之間就存在著天然的聯(lián)系,我們把這些聯(lián)系稱為數(shù)據(jù)血緣關(guān)系。
直白點說,數(shù)據(jù)血緣就是指數(shù)據(jù)產(chǎn)生的鏈路關(guān)系,就是這個數(shù)據(jù)是怎么來的,經(jīng)過了哪些過程和階段。
下面舉個通俗點的例子:
比如在淘寶網(wǎng)中,客戶在淘寶網(wǎng)頁中購買物品后,數(shù)據(jù)就被存到后臺數(shù)據(jù)庫表A中。我們希望查看某個月賣的最火的是哪些物品時,就需要對數(shù)據(jù)庫中的原始數(shù)據(jù)進(jìn)行加工匯總,形成一張中間表B來存儲階段處理的數(shù)據(jù),若邏輯較復(fù)雜時,還要繼續(xù)加工繼續(xù)形成中間表。。。直到最后處理成我們前臺展現(xiàn)使用的最終表,假設(shè)為C表。
那么A表是C表數(shù)據(jù)最初的來源,是C表數(shù)據(jù)的祖先。從A表數(shù)據(jù)到B表數(shù)據(jù)再到C表數(shù)據(jù),這條鏈路就是C表的數(shù)據(jù)血緣。
在數(shù)據(jù)的處理過程中,從數(shù)據(jù)源頭到最終的數(shù)據(jù)生成,每個環(huán)節(jié)都可能會導(dǎo)致我們出現(xiàn)數(shù)據(jù)質(zhì)量的問題。比如我們數(shù)據(jù)源本身數(shù)據(jù)質(zhì)量不高,在后續(xù)的處理環(huán)節(jié)中如果沒有進(jìn)行數(shù)據(jù)質(zhì)量的檢測和處理,那么這個數(shù)據(jù)信息最終流轉(zhuǎn)到我們的目標(biāo)表,它的數(shù)據(jù)質(zhì)量也是不高的。也有可能在某個環(huán)節(jié)的數(shù)據(jù)處理中,我們對數(shù)據(jù)進(jìn)行了一些不恰當(dāng)?shù)奶幚?,?dǎo)致后續(xù)環(huán)節(jié)的數(shù)據(jù)質(zhì)量變得糟糕。
因此,對于數(shù)據(jù)的血緣關(guān)系,我們要確保每個環(huán)節(jié)都要注意數(shù)據(jù)質(zhì)量的檢測和處理,那么我們后續(xù)數(shù)據(jù)才會有優(yōu)良的基因,即有很高的數(shù)據(jù)質(zhì)量。
數(shù)據(jù)血緣的常見分析過程:
現(xiàn)在假設(shè)你是一名數(shù)據(jù)開發(fā)工程師,為了滿足某個業(yè)務(wù)需求,需要生成最終表 X。
可能是出于程序邏輯清晰或者性能優(yōu)化的考慮,你為了生成這張表,通過 MR、Spark 或者 Hive 來生成很多中間表。
如下圖,是你將花費(fèi)時間來實現(xiàn)的整個數(shù)據(jù)流,其中:
Table X 是最終給到業(yè)務(wù)側(cè)的表
藍(lán)色的 Table A-E,是原始數(shù)據(jù)
×××的 Table F-I ,是你計算出來的中間表,這些都是你自己寫程序要處理的表
Table J ,是別人處理過的結(jié)果表,因為本著不重復(fù)開發(fā)的原則,你很可能要用到同事小伙伴處理的表
過了一段時間后,業(yè)務(wù)側(cè)的感覺你提供的數(shù)據(jù)中有個字段總是不太對勁,其實就是懷疑你的數(shù)據(jù)出問題!需要你來追蹤一下這個字段的來源。
首先你從 Table X 中找到了異常的字段,然后定位到了它來源于 Table I,再從 Table I 定位到了它來源于 Table G, 再從 Table G 追溯到了 Table D,最終發(fā)現(xiàn)是某幾天的來源數(shù)據(jù)有異常。或者說,你從 Table X 定位到了異常的字段原來來自于其它小伙伴處理的表 Table J,然后繼續(xù)向前回溯,找到了這張表在處理過程中的某一個步出現(xiàn)了問題。
上面的過程是數(shù)據(jù)血緣分析的過程。
到此,相信你已經(jīng)大概明白血緣是啥了。
再啰嗦兩句,其實數(shù)據(jù)血緣并不難,只是概念比較高大上而已,實際我們測試的時候跟普通的 sql 操作差不多,只是用到的語法是 hive、sqoop、pig 等組件相對應(yīng)的語法,不是常見的 sql 語法而已。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。