數(shù)據(jù)倉庫上下游表間數(shù)據(jù)質(zhì)量檢查產(chǎn)生于下游表生成過程中税手,也是下游表本身的數(shù)據(jù)質(zhì)量控制問題翠肘,上下游的關(guān)系并不僅限于數(shù)據(jù)倉庫各層數(shù)據(jù)表琴庵,還包括同一層的有上下游關(guān)系的數(shù)據(jù)表肢扯。主要有三個方面:字段合法性妒茬、數(shù)據(jù)一致性和邏輯一致性
1、字段合法性
字段合法性是檢查字段本身是否符合預(yù)期蔚晨,一般只在上游數(shù)據(jù)做檢查乍钻,除非該字段是對于上游數(shù)據(jù)來說是新字段肛循。對于從上游數(shù)據(jù)得到的同一維度字段,在數(shù)倉數(shù)據(jù)表的同一層只檢查一遍即可银择。有新邏輯加入的時候多糠,可以不做字段合法性檢查。需做合法性檢查的字段可以大致的分為可枚舉類型和非可枚舉類型
可枚舉類型
可枚舉類型字段包括枚舉類型浩考、類枚舉字符串夹孔、類枚舉事實表外健等。在實際操作中析孽,會分為兩種情況進(jìn)行合法性檢查搭伤。其一,如果可枚舉類型的取值在50個左右袜瞬,通常會把所有取值及其計數(shù)統(tǒng)計出來怜俐,一方面可以檢查該字段取值本身是否合法,另一方面還可以檢查計數(shù)本身是否符合預(yù)期邓尤。數(shù)據(jù)檢查中拍鲤,盡可能用最少取數(shù)次數(shù)查看最多的檢查項袄秩。其二诗眨,如果可枚舉類型取值較多忧换,有幾百甚至是千級萬級晚凿,檢查時可以按計數(shù)進(jìn)行排序词疼,然后按字段取值排序拢肆,檢查排序靠前與靠后字段取值及其計數(shù)嵌戈,這樣就可以定位大多數(shù)問題了则披。
非可枚舉類型
非可枚舉類型字段一忱,一般會包含很多種情況莲蜘,比如:一些32位和64位的標(biāo)識,時間戳帘营、連續(xù)性數(shù)值票渠、搜索關(guān)鍵詞等。這樣在檢查時除了可以對字段和字段計數(shù)值進(jìn)行排序外芬迄,還可以設(shè)定字段取值范圍问顷、字段本身長度等對字段進(jìn)行檢查。
2禀梳、數(shù)據(jù)一致性
數(shù)據(jù)一致性是檢查從上下游表間數(shù)據(jù)是否一致杜窄。任何一份數(shù)據(jù)表生成時都應(yīng)該保持上下游一致,不一致就意味著數(shù)據(jù)本身或驗證過程可能有問題算途。該檢查一般可以按先粗后細(xì)原則塞耕,先查看粗粒度數(shù)據(jù),沒有問題才查看更細(xì)粒度數(shù)據(jù)查看嘴瓤。比如扫外,dau數(shù)據(jù)莉钙,可以先對比上下游數(shù)據(jù)的總dau, 總dau沒有問題,再查看幾個主要維度數(shù)據(jù)筛谚,如果不是聚合數(shù)據(jù)磁玉,最后拿上下游數(shù)據(jù)中同一個用戶的明細(xì)記錄做下對比驾讲。數(shù)據(jù)更新做一致性檢查時蚊伞,如果可以在新老數(shù)據(jù)之間進(jìn)行,則在新老數(shù)據(jù)之間進(jìn)行蝎毡,不能在新老數(shù)據(jù)之間進(jìn)行則在上下游之間進(jìn)行厚柳。如果可能,一定要做取幾條明細(xì)數(shù)據(jù)做檢查沐兵。
3、邏輯合法性
邏輯一致性是檢查數(shù)據(jù)本身所包含的字段及字段之間的關(guān)系是否符合一定的預(yù)設(shè)邏輯便监。例如:uid與session_id為一對多關(guān)系扎谎,但反之不成立。也跟字段合法性檢查一樣烧董,邏輯一致性檢查一般發(fā)生在上游數(shù)據(jù)里毁靶,下游數(shù)據(jù),尤其是不添加新的維度字段的下游數(shù)據(jù)逊移,一般不進(jìn)行邏輯一致性檢查预吆。對于從上游數(shù)據(jù)得到的同一維度字段,在數(shù)倉數(shù)據(jù)表的同一層只檢查一遍即可胳泉。在該項檢查中拐叉,具體可以檢查多少項,因人而異扇商,因為每個人對數(shù)據(jù)生成機制凤瘦、業(yè)務(wù)用途等了解情況不一樣,能想到的檢查項也就會有很大不同案铺。
綜上蔬芥,數(shù)倉數(shù)據(jù)表的質(zhì)量檢查,包括字段合法性控汉、數(shù)據(jù)一致性笔诵、邏輯合法性3個方面,當(dāng)并不是左右數(shù)據(jù)都要做3方面的數(shù)據(jù)檢查姑子。另外乎婿,所有的數(shù)據(jù)質(zhì)量控制都是對最終交付數(shù)據(jù)做的,對非交付的中間數(shù)據(jù)如無必要壁酬,不做質(zhì)量檢查次酌。