1. 程式人生 > >小白學習大數據測試之ETL

小白學習大數據測試之ETL

type 業務 時間 轉換 全量 是什麽 nor mat style

之前發布過一篇關於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(後續有機會我們會介紹該工具如何使用,如果有朋友很熟悉了,也歡迎投稿給我們哈)


小白學習大數據測試之ETL