大資料測試之ETL

testingbang發表於2019-08-07

之前釋出過一篇關於ETL的文章,無奈被人說太簡單。。。。唉,小編也是剛接觸啊,自然不能那麼高深,所以只是對學習的過程做了記錄轉換為文章分享給大家,如果對你有幫助,不要吝嗇點贊+轉發,如果對你沒有幫助,那就請轉身離開。。。。或者你寫一篇更詳細的給我,我申請紅包給你(邪惡的笑~)


好啦,迴歸正題,這次作為補充在詳細介紹下。ETL是什麼?其實ta指的是一個過程,就是大資料中對資料處理的過程(抓取>轉換>裝載),並不是一個技術!


小編也是慢慢的學習下大資料測試的知識,一直有個問題也困擾著我,就是怎麼能判定資料的正確性?是,可以有多種手段去判定,但沒辦法保證100%的正確吧?(明白的朋友可以告訴我哈~)

反正,總而言之ETL測試的核心就是要保證資料的正確性、一致性,其他都是浮雲~


常見的ETL測試方 法(主要就是對資料處理中的各個關鍵點進行驗證)


那麼,怎麼測試呢?莫急,看~

1、資料量。這個應該不用多說,你從源頭拿來多少,存到目標表裡又是多少,是否一致,是否正確

2、轉換。主要是對資料格式的合法性進行驗證。參考點為:

  • 源中的時間、數值、字元等資料的處理,是否符合資料倉儲規則,是否進行統一的轉換

  • 是否有超出維表或者業務值域的範圍

  • 是否捕獲欄位空值,或者需要對空值進行替換為其他含義值的處理

  • 主鍵是否唯一

  • 特殊符號或者亂碼符號的處理規則

  • 髒資料的處理

3、抽樣。在轉換完成之後要對轉換之後的關鍵欄位驗證,還有源表和目標表的對映是否正確

4、載入。這塊比較麻煩,有 全量載入(先清空再插入)和增量載入(目標表僅更新源表變化的資料)。選擇哪種方式要看實際的系統是怎麼設計的,沒有標準。實際應用中,增量載入用的比較多,下面我們就說說ta。


觸發增量載入的方式(此處內容部分來自於網路的收集,自己做了下總結)



觸發器方式

在要抽取的表上建立需要的觸發器,一般要建立插入、修改、刪除三個觸發器,每當源表中的資料發生變化,相應的觸發器就會將變化的資料寫入一個臨時表,抽取執行緒從臨時表中抽取資料,臨時表中抽取過的資料被標記或刪除。


優點:資料抽取的效能高,ETL 載入規則簡單,速度快,不需要修改業務系統表結構,可以實現資料的遞增載入。


缺點:要求業務表建立觸發器,對業務系統有一定的影響,容易對 源資料庫 有傾入。


時間戳方式

在源表上增加一個時間戳欄位,系統中更新修改表資料的時候,同時修改時間戳欄位的值。當進行資料抽取時,透過比較上次抽取時間與時間戳欄位的值來決定抽取哪些資料。


有的資料庫的時間戳支援自動更新,即表的其它欄位的資料發生改變時,自動更新時間戳欄位的值。有的資料庫不支援時間戳的自動更新,這就要求業務系統在更新業務資料時,手工更新時間戳欄位。


優點:同觸發器方式一樣。


缺點:時間戳維護需要由業務系統完成,對業務系統也有很大的傾入性(加入額外的時間戳欄位),特別是對不支援時間戳的自動更新的資料庫,還要求業務系統進行額外的更新時間戳操作;另外,無法捕獲對時間戳以前資料的delete和update 操作,在資料準確性上受到了一定的限制。


全表刪除插入方式

這個就比較好理解了,每次ETL 操作均刪除目標表資料,由ETL 全新載入資料。


優點:ETL 載入規則簡單,速度快。


缺點:不可以實現資料的遞增載入


全表比對的方式

ETL 工具事先為要抽取的表建立一個結構類似的臨時表,該臨時表記錄源表主鍵以及根據所有欄位的資料計算出來,每次進行資料抽取時,對源表和臨時表進行的比對,如有不同,進行Update 操作,如目標表沒有存在該主鍵值,表示該記錄還沒有,即進行Insert 操作。


優點:對已有系統表結構不產生影響,不需要修改業務操作程式,所有抽取規則由ETL完成,管理維護統一,可以實現資料的遞增載入,沒有風險。


缺點:ETL 比對較複雜,設計較為複雜,速度較慢。與觸發器和時間戳方式中的主動通知不同,全表比對方式是被動的進行全表資料的比對,效能較差。當表中沒有主鍵或唯一列且含有重複記錄時,全表比對方式的準確性較差。


PS:說了這麼多,可能會有朋友問那用什麼進行ETL測試啊!答案:手工或ETL測試工具Informatica 或Hivetest (後續有機會我們會介紹該工具如何使用,如果有朋友很熟悉了,也歡迎投稿給我們哈)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69942496/viewspace-2652995/,如需轉載,請註明出處,否則將追究法律責任。

相關文章