ETL測試 - 快速指南



ETL測試–簡介

資料倉庫系統中的資料是使用ETL(提取、轉換、載入)工具載入的。顧名思義,它執行以下三個操作:

  • 從事務系統(可以是Oracle、Microsoft或任何其他關係資料庫)提取資料;

  • 透過執行資料清洗操作轉換資料;然後

  • 將資料載入到OLAP資料倉庫。

您還可以使用ETL工具從平面檔案(如電子表格和CSV檔案)提取資料,並將其載入到OLAP資料倉庫中進行資料分析和報告。讓我們舉個例子來更好地理解它。

示例

假設有一家制造公司擁有多個部門,例如銷售、人力資源、物料管理、EWM等。所有這些部門都有單獨的資料庫,它們用於維護與其工作相關的 資訊,並且每個資料庫都有不同的技術、架構、表名、列等。現在,如果公司想分析歷史資料並生成報表,則應將所有這些資料來源中的資料提取並載入到資料倉庫中以儲存用於分析工作。

ETL工具從所有這些異構資料來源中提取資料,轉換資料(例如應用計算、連線欄位、鍵、刪除不正確的欄位等),並將資料載入到資料倉庫中。稍後,您可以使用各種商業智慧(BI)工具,使用此資料生成有意義的報表、儀表板和視覺化。

ETL工具和BI工具的區別

ETL工具用於從不同的資料來源提取資料,轉換資料,並將其載入到DW系統中;但是BI工具用於為終端使用者生成互動式和臨時報表,為高階管理人員生成儀表板,為每月、每季度和每年的董事會會議生成資料視覺化。

最常見的ETL工具包括:SAP BO Data Services (BODS)、Informatica – PowerCenter、Microsoft – SSIS、Oracle Data Integrator ODI、Talend Open Studio、Clover ETL開源等。

一些流行的BI工具包括:SAP Business Objects、SAP Lumira、IBM Cognos、JasperSoft、Microsoft BI平臺、Tableau、Oracle Business Intelligence Enterprise Edition等。

ETL流程

現在讓我們更詳細地討論ETL過程中涉及的關鍵步驟:

提取資料

它涉及從不同的異構資料來源提取資料。從事務系統提取資料會根據需求和使用的ETL工具而有所不同。它通常透過在非營業時間執行計劃作業來完成,例如在晚上或週末執行作業。

Extracting Data

轉換資料

它涉及將資料轉換為適合輕鬆載入到DW系統的格式。資料轉換包括應用計算、連線和定義資料上的主鍵和外部索引鍵。例如,如果您想要資料庫中沒有的總收入百分比,您將在轉換中應用百分比公式並載入資料。同樣,如果您在不同的列中擁有使用者的姓名和姓氏,則可以在載入資料之前應用連線操作。某些資料不需要任何轉換;此類資料稱為**直接移動**或**直通資料**。

資料轉換還涉及資料的校正和清洗,刪除不正確的資料、不完整的資料形成以及修復資料錯誤。它還包括在將資料載入到DW系統之前的資料完整性和格式化不相容的資料。

將資料載入到DW系統

它涉及將資料載入到DW系統中以進行分析報告和資訊處理。目標系統可以是簡單的分隔平面檔案或資料倉庫。

ETL工具功能

典型的基於ETL工具的資料倉庫使用暫存區、資料整合和訪問層來執行其功能。它通常是三層架構。

  • **暫存層** - 暫存層或暫存資料庫用於儲存從不同源資料系統提取的資料。

  • **資料整合層** - 整合層轉換來自暫存層的資料並將資料移動到資料庫,其中資料被排列成層次結構組,通常稱為**維度**,以及**事實**和**聚合事實**。DW系統中事實表和維度表的組合稱為**模式**。

  • **訪問層** - 終端使用者使用訪問層來檢索用於分析報告和資訊的資料。

下圖顯示了這三層如何相互互動。

ETL Tool Functions

ETL測試 - 任務

在將資料移動到生產資料倉庫系統之前進行ETL測試。有時也稱為**表平衡**或**生產協調**。就其範圍和完成此操作所需的步驟而言,它與資料庫測試不同。

ETL測試的主要目標是識別和減輕在處理用於分析報告的資料之前發生的資料缺陷和一般錯誤。

ETL測試–要執行的任務

以下是ETL測試中涉及的常見任務:

  • 瞭解要用於報告的資料
  • 審查資料模型
  • 源到目標對映
  • 源資料的資料檢查
  • 包和模式驗證
  • 目標系統中的資料驗證
  • 資料轉換計算和聚合規則的驗證
  • 源系統和目標系統之間的樣本資料比較
  • 目標系統中的資料完整性和質量檢查
  • 資料的效能測試

ETL測試與資料庫測試

ETL測試和資料庫測試都涉及資料驗證,但它們並不相同。ETL測試通常在資料倉庫系統中的資料上執行,而資料庫測試通常在事務系統上執行,這些系統中的資料來自不同的應用程式到事務資料庫。

在這裡,我們重點介紹了ETL測試和資料庫測試之間的主要區別。

ETL測試

ETL測試包括以下操作:

  • 驗證資料從源系統到目標系統的移動。

  • 驗證源系統和目標系統中的資料計數。

  • 驗證資料提取,根據需求和預期進行轉換。

  • 驗證在轉換過程中是否保留表關係——連線和鍵。

常見的ETL測試工具包括**QuerySurge、Informatica**等。

資料庫測試

資料庫測試更強調資料準確性、資料正確性和有效值。它包括以下操作:

  • 驗證是否維護主鍵和外部索引鍵。

  • 驗證表中的列是否具有有效的資料值。

  • 驗證列中的資料準確性。**示例** - 月數列的值不應大於12。

  • 驗證列中缺失的資料。檢查是否存在實際上應該具有有效值的空列。

常見的資料庫測試工具包括**Selenium、QTP**等。

下表捕獲了資料庫和ETL測試的關鍵特徵及其比較:

功能 資料庫測試 ETL測試
主要目標 資料驗證和整合 用於BI報告的資料提取、轉換和載入
適用系統 發生業務流程的事務系統 包含歷史資料且不在業務流程環境中的系統
常用工具 QTP、Selenium等。 QuerySurge、Informatica等。
業務需求 它用於整合來自多個應用程式的資料,影響嚴重。 它用於分析報告、資訊和預測。
建模 ER方法 多維
資料庫型別 它通常用於OLTP系統 它應用於OLAP系統
資料型別 規範化資料,連線更多 反規範化資料,連線較少,索引和聚合較多。

ETL測試 - 分類

ETL測試分類是根據測試和報告的目標進行的。測試類別因組織標準而異,也取決於客戶要求。通常,ETL測試根據以下幾點進行分類:

  • **源到目標計數測試** - 它涉及匹配源系統和目標系統中記錄的數量。

  • **源到目標資料測試** - 它涉及源系統和目標系統之間的資料驗證。它還涉及資料整合和閾值檢查以及目標系統中的重複資料檢查。

  • **資料對映或轉換測試** - 它確認源系統和目標系統中物件的對映。它還涉及檢查目標系統中資料的功能。

  • **終端使用者測試** - 它涉及為終端使用者生成報表,以驗證報表中的資料是否符合預期。它涉及查詢報表中的偏差,並交叉檢查目標系統中的資料以進行報表驗證。

  • 重新測試 − 它包括修復目標系統中資料的錯誤和缺陷,並再次執行報告以進行資料驗證。

  • 系統整合測試 − 它包括測試所有各個系統,然後合併結果以查詢是否存在任何偏差。可以使用三種方法來執行此操作:自頂向下、自底向上和混合。

根據資料倉庫系統的結構,ETL 測試(無論使用什麼工具)可以分為以下幾類:

新的資料倉庫系統測試

在這種型別的測試中,構建並驗證了一個新的資料倉庫系統。資料輸入來自客戶/終端使用者以及不同的資料來源,並建立一個新的資料倉庫。之後,藉助 ETL 工具在新系統中驗證資料。

遷移測試

在遷移測試中,客戶擁有現有的資料倉庫和 ETL,但他們正在尋找新的 ETL 工具來提高效率。它涉及使用新的 ETL 工具從現有系統遷移資料。

變更測試

在變更測試中,從不同的資料來源向現有系統新增新資料。客戶還可以更改現有的 ETL 規則,或者也可以新增新的規則。

報表測試

報表測試包括建立報表以進行資料驗證。報表是任何資料倉庫系統的最終輸出。報表根據其佈局、報表中的資料和計算值進行測試。

ETL 測試 – 挑戰

ETL 測試不同於資料庫測試或任何其他常規測試。在執行 ETL 測試時,可能會面臨不同型別的挑戰。這裡列出了一些常見的挑戰:

  • ETL 過程中資料丟失。

  • 資料不正確、不完整或重複。

  • 資料倉庫系統包含歷史資料,因此資料量太大且極其複雜,難以在目標系統中執行 ETL 測試。

  • ETL 測試人員通常無法訪問 ETL 工具中的作業計劃。他們幾乎無法訪問 BI 報表工具來檢視報表的最終佈局和報表中的資料。

  • 由於資料量過大和複雜性,難以生成和構建測試用例。

  • ETL 測試人員通常不知道終端使用者的報表需求和資訊的業務流程。

  • ETL 測試涉及各種複雜的 SQL 概念,用於在目標系統中進行資料驗證。

  • 有時不會向測試人員提供源到目標的對映資訊。

  • 不穩定的測試環境會延遲流程的開發和測試。

ETL – 測試人員的角色

ETL 測試人員的主要職責是驗證資料來源、提取資料、應用轉換邏輯以及將資料載入到目標表中。

ETL 測試人員的主要職責如下所示。

驗證源系統中的表

它包括以下操作:

  • 計數檢查
  • 與源資料協調記錄
  • 資料型別檢查
  • 確保沒有載入垃圾郵件資料
  • 刪除重複資料
  • 檢查所有鍵都已到位

應用轉換邏輯

在載入資料之前應用轉換邏輯。它包括以下操作:

  • 資料閾值驗證檢查,例如,年齡值不應超過 100。

  • 應用轉換邏輯前後記錄計數檢查。

  • 從暫存區到中間表的資料流驗證。

  • 代理鍵檢查。

資料載入

資料從暫存區載入到目標系統。它包括以下操作:

  • 從中間表到目標系統的記錄計數檢查。

  • 確保鍵欄位資料不丟失或為空。

  • 檢查事實表中是否載入了聚合值和計算度量。

  • 檢查基於目標表的建模檢視。

  • 檢查是否已在增量載入表上應用 CDC。

  • 檢查維度表和歷史表中的資料。

  • 根據載入的事實表和維度表以及預期結果檢查 BI 報表。

測試 ETL 工具

ETL 測試人員還需要測試工具和測試用例。它包括以下操作:

  • 測試 ETL 工具及其功能
  • 測試 ETL 資料倉庫系統
  • 建立、設計和執行測試計劃和測試用例。
  • 測試平面檔案資料傳輸。

ETL 測試 – 技術

在開始測試過程之前,定義正確的 ETL 測試技術非常重要。您應該徵得所有利益相關者的同意,並確保選擇正確的技術來執行 ETL 測試。測試團隊應該熟悉這種技術,並且應該瞭解測試過程中涉及的步驟。

可以使用各種型別的測試技術。本章將簡要討論測試技術。

生產驗證測試

為了執行分析報告和分析,生產中的資料應該正確。此測試是在將資料移動到生產系統後對資料進行的。它涉及在生產系統中進行資料驗證,並將其與源資料進行比較。

源到目標計數測試

當測試人員的時間不足以執行測試操作時,就會進行這種型別的測試。它包括檢查源系統和目標系統中的資料計數。它不涉及檢查目標系統中資料的數值。它也不涉及資料在對映後是否按升序或降序排列。

源到目標資料測試

在這種型別的測試中,測試人員會驗證從源系統到目標系統的資料值。它檢查源系統中的資料值以及轉換後目標系統中的相應值。這種型別的測試非常耗時,通常在金融和銀行專案中執行。

資料整合/閾值驗證測試

在這種型別的測試中,測試人員會驗證資料的範圍。如果目標系統中的所有閾值都符合預期結果,則會進行檢查。它還包括在轉換和載入後,從多個源系統整合目標系統中的資料。

示例 − 年齡屬性的值不應大於 100。在日期列 DD/MM/YY 中,月份欄位的值不應大於 12。

應用程式遷移測試

當您從舊應用程式遷移到新應用程式系統時,通常會自動執行應用程式遷移測試。此測試節省了大量時間。它檢查從舊應用程式提取的資料是否與新應用程式系統中的資料相同。

資料檢查和約束測試

它包括執行各種檢查,例如資料型別檢查、資料長度檢查和索引檢查。在這裡,測試工程師執行以下場景:主鍵、外部索引鍵、NOT NULL、NULL 和 UNIQUE。

重複資料檢查測試

此測試包括檢查目標系統中的重複資料。當目標系統中存在大量資料時,生產系統中可能存在重複資料,這可能會導致分析報告中的資料不正確。

可以使用類似以下的 SQL 語句來檢查重複值:

Select Cust_Id, Cust_NAME, Quantity, COUNT (*) 
FROM Customer
GROUP BY Cust_Id, Cust_NAME, Quantity HAVING COUNT (*) >1;

由於以下原因,目標系統中會出現重複資料:

  • 如果未定義主鍵,則可能會出現重複值。
  • 由於對映不正確或環境問題。
  • 從源系統到目標系統傳輸資料時的手動錯誤。

資料轉換測試

資料轉換測試不是透過執行單個 SQL 語句來執行的。它非常耗時,並且需要為每一行執行多個 SQL 查詢以驗證轉換規則。測試人員需要為每一行執行 SQL 查詢,然後將輸出與目標資料進行比較。

資料質量測試

資料質量測試包括執行數字檢查、日期檢查、空值檢查、精度檢查等。測試人員執行語法測試以報告無效字元、不正確的上下大小寫順序等,並執行引用測試以檢查資料是否符合資料模型。

增量測試

增量測試用於驗證是否按預期結果執行 INSERT 和 UPDATE 語句。此測試是使用舊資料和新資料逐步執行的。

迴歸測試

當我們更改資料轉換和聚合規則以新增新功能時,這也有助於測試人員查詢新的錯誤,這稱為迴歸測試。在迴歸測試中出現的 資料錯誤稱為迴歸。

重新測試

修復程式碼後執行測試稱為重新測試。

系統整合測試

系統整合測試包括單獨測試系統的元件,然後整合模組。系統整合可以透過三種方式完成:自頂向下、自底向上和混合。

導航測試

導航測試也稱為測試系統的前端。它涉及從終端使用者的角度進行測試,檢查前端報表的所有方面,包括各個欄位中的資料、計算和聚合等。

ETL 測試 – 流程

ETL 測試涵蓋 ETL 生命週期中涉及的所有步驟。它從瞭解業務需求開始,到生成彙總報告結束。

ETL 測試生命週期中的常見步驟如下所示:

  • 瞭解業務需求。

  • 驗證業務需求。

  • 測試估算用於提供執行測試用例和完成彙總報告的預計時間。

  • 測試計劃包括根據業務需求的輸入查詢測試技術。

  • 建立測試場景和測試用例。

  • 測試用例準備就緒並獲得批准後,下一步是執行預執行檢查。

  • 執行所有測試用例。

  • 最後一步是生成完整的彙總報告並提交關閉流程。

ETL 測試 – 場景

ETL測試場景用於驗證ETL測試流程。下表解釋了ETL測試人員使用的一些最常見的場景和測試用例。

測試場景 測試用例

結構驗證

這包括根據對映文件驗證源表和目標表的結構。

應驗證源系統和目標系統中的資料型別。

源系統和目標系統中資料型別的長度應相同。

資料欄位型別及其格式在源系統和目標系統中應相同。

驗證目標系統中的列名。

驗證對映文件

這包括驗證對映文件,以確保已提供所有資訊。對映文件應包含更改日誌、維護資料型別、長度、轉換規則等。

驗證約束

這包括驗證約束並確保它們應用於預期的表。

資料一致性檢查

這包括檢查外部索引鍵等完整性約束的誤用。

雖然屬性的定義在語義層保持相同,但在不同的表中,屬性的長度和資料型別可能會有所不同。

資料完整性驗證

這包括檢查是否將所有資料從源系統載入到目標系統。

計算源系統和目標系統中的記錄數量。

邊界值分析。

驗證主鍵的唯一值。

資料正確性驗證

這包括驗證目標系統中資料的數值。

表中發現拼寫錯誤或不準確的資料。

在匯入時停用完整性約束時,會儲存空值或非唯一資料。

資料轉換驗證

這包括建立一個包含輸入值和預期結果的場景電子表格,然後與終端使用者一起驗證。

透過建立場景來驗證資料中的父子關係。

使用資料分析來比較每個欄位的值範圍。

驗證倉庫中的資料型別是否與資料模型中提到的相同。

資料質量驗證

這包括執行數字檢查、日期檢查、精度檢查、資料檢查、空值檢查等。

示例 - 日期格式對於所有值都應相同。

空值驗證

這包括檢查在該欄位中提到非空值的位置的空值。

重複值驗證

這包括在目標系統中驗證重複值,而資料來自源系統的多個列。

根據業務需求,驗證主鍵和其他列是否存在任何重複值。

日期驗證檢查

驗證ETL流程中執行的各種操作的日期欄位。

執行日期驗證的常見測試用例:

  • 開始日期不得大於結束日期

  • 日期值的格式應正確。

  • 日期值不應包含任何垃圾值或空值

全資料驗證減法查詢

這包括使用減法查詢驗證源表和目標表中的完整資料集。

  • 您需要執行源減目標目標減源

  • 如果減法查詢返回一個值,則應將其視為不匹配的行。

  • 您需要使用交集語句匹配源和目標中的行。

  • 交集返回的計數應與源表和目標表的單個計數匹配。

  • 如果減法查詢不返回任何行,並且交集計數小於源計數或目標表計數,則表包含重複行。

其他測試場景

其他測試場景可以驗證提取過程沒有從源系統提取重複資料。

測試團隊將維護一個SQL語句列表,這些語句用於驗證沒有從源系統提取重複資料。

資料清洗

在將資料載入到暫存區之前,應刪除不需要的資料。

ETL測試——效能

ETL效能調優用於確保ETL系統能否處理預期的大量使用者和事務負載。效能調優通常涉及ETL系統上的伺服器端工作負載。它用於測試多使用者環境中的伺服器響應並查詢瓶頸。這些瓶頸可能存在於源系統和目標系統、系統對映、會話管理屬性等配置中。

ETL Performance

如何執行ETL測試效能調優?

請按照以下步驟執行ETL測試效能調優:

  • 步驟1 - 查詢正在生產環境中轉換的負載。

  • 步驟2 - 建立相同負載的新資料或從生產資料移動到本地效能伺服器。

  • 步驟3 - 在生成所需的負載之前停用ETL。

  • 步驟4 - 從資料庫表中獲取所需資料的計數。

  • 步驟5 - 記下ETL的最後一次執行並啟用ETL,以便它能夠承受足夠的壓力來轉換建立的整個負載。執行它

  • 步驟6 - ETL完成執行後,獲取建立資料的計數。

關鍵績效指標

  • 找出轉換負載所需的時間。
  • 找出效能時間是否得到改善或下降。
  • 檢查是否提取和傳輸了整個預期負載。

ETL測試——可擴充套件性

ETL測試的目標是獲得可信的資料。透過使測試周期更有效,可以獲得資料可信度。

全面的測試策略是建立有效的測試周期。測試策略應涵蓋ETL流程每個階段的測試計劃,每次資料移動時以及宣告每個利益相關者的責任,例如業務分析師、基礎設施團隊、質量保證團隊、DBA、開發人員和業務使用者。

為了確保從各個方面做好測試準備,測試策略應重點關注的關鍵領域是:

  • 測試範圍 - 描述將使用的測試技術和型別。

  • 設定測試環境。

  • 測試資料可用性 - 建議使用涵蓋所有/關鍵業務需求的類似生產環境的資料。

  • 資料質量和效能驗收標準。

ETL測試——資料準確性

在ETL測試中,資料準確性用於確保資料根據預期準確載入到目標系統。執行資料準確性的關鍵步驟如下:

值比較

值比較涉及比較具有最小或無轉換的源系統和目標系統中的資料。可以使用各種ETL測試工具來完成此操作,例如Informatica中的Source Qualifier Transformation。

在資料準確性測試中還可以執行一些表示式轉換。SQL語句可以使用各種集合運算子來檢查源系統和目標系統中的資料準確性。常見的運算子是Minus和Intersect運算子。這些運算子的結果可以被視為目標系統和源系統中值的偏差。

檢查關鍵資料列

可以透過比較源系統和目標系統中的不同值來檢查關鍵資料列。這是一個可用於檢查關鍵資料列的示例查詢:

SELECT cust_name, Order_Id, city, count(*) FROM customer 
GROUP BY cust_name, Order_Id, city;

ETL測試——元資料

檢查元資料涉及相對於對映文件驗證源表和目標表的結構。對映文件包含源列和目標列、資料轉換規則和資料型別的詳細資訊,所有這些欄位都定義了源系統和目標系統中表的結構。

資料長度檢查

目標列資料型別的長度應等於或大於源列資料型別。讓我們舉個例子。假設源表中有名和姓,每個的定義資料長度為50個字元。然後,目標系統中全名列的目標資料長度應至少為100或更多。

資料型別檢查

資料型別檢查涉及驗證源資料型別和目標資料型別,並確保它們相同。轉換後,目標資料型別可能與源資料型別不同。因此,還需要檢查轉換規則。

約束/索引檢查

約束檢查涉及根據設計規範文件驗證索引值和約束。所有不能具有空值的行都應具有非空約束。主鍵列根據設計文件進行索引。

ETL測試——資料轉換

執行資料轉換有點複雜,因為它不能透過編寫單個SQL查詢然後將輸出與目標進行比較來實現。對於ETL測試資料轉換,您可能必須為每一行編寫多個SQL查詢以驗證轉換規則。

首先,確保源資料足以測試所有轉換規則。成功執行資料轉換的ETL測試的關鍵是從源系統中選擇正確且足夠的資料樣本以應用轉換規則。

ETL測試資料轉換的關鍵步驟如下:

  • 第一步是建立一個輸入資料場景和預期結果的列表,並與業務客戶一起驗證這些場景。這是在設計期間進行需求收集的好方法,也可以用作測試的一部分。

  • 下一步是建立包含所有場景的測試資料。利用ETL開發人員自動化使用場景電子表格填充資料集的整個過程,以允許靈活性和移動性,因為場景可能會發生變化。

  • 接下來,利用資料分析結果來比較目標資料和源資料中每個欄位的值範圍和提交情況。

  • 驗證ETL生成的欄位(例如,代理鍵)的準確處理。

  • 驗證倉庫中的資料型別與資料模型或設計中指定的相同。

  • 在測試引用完整性的表之間建立資料場景。

  • 驗證資料中的父子關係。

  • 最後一步是執行查詢轉換。您的查詢查詢應直接且沒有任何聚合,並預期每個源表只返回一個值。您可以像之前的測試一樣,直接在源限定符中連線查詢表。如果不是這種情況,請編寫一個使用查詢表連線主表的查詢,並比較目標中相應列中的資料。

ETL測試——資料質量

在ETL測試期間檢查資料質量涉及對載入到目標系統中的資料執行質量檢查。它包括以下測試:

數字檢查

數字格式在整個目標系統中應相同。例如,在源系統中,列編號的格式為x.30,但如果目標只有30,則它必須載入目標列號不加字首x.

日期檢查

日期格式在源系統和目標系統中應一致。例如,它在所有記錄中都應相同。標準格式為:yyyy-mm-dd。

精度檢查

精度值應在目標表中按預期顯示。例如,在源表中,值為15.2323422,但在目標表中,它應顯示為15.23或四捨五入為15。

資料檢查

這包括根據業務需求檢查資料。不符合特定條件的記錄應被過濾掉。

示例 - 只有日期ID >=2015且帳戶ID != '001'的記錄應載入到目標表中。

空值檢查

某些列應根據要求和該欄位的可能值具有空值。

示例 - 除非活動狀態列為“T”或“已故”,否則“終止日期”列應顯示空值。

其他檢查

可以進行常見的檢查,例如開始日期不得大於結束日期。

ETL測試——資料完整性

資料完整性檢查用於驗證資料載入後目標系統中的資料是否符合預期。

為此可以執行的常見測試如下:

  • 檢查聚合函式(sum、max、min、count),

  • 檢查和驗證源和目標之間列的計數和實際資料(無轉換或簡單轉換)。

計數驗證

比較源表和目標表中記錄數量的計數。可以透過編寫以下查詢來完成:

SELECT count (1) FROM employee; 
SELECT count (1) FROM emp_dim; 

資料概要驗證

它涉及檢查源表和目標表(事實表或維度表)中的聚合函式,例如計數、求和和最大值。

列資料概要驗證

它涉及比較每個不同值的唯一值和行數。

SELECT city, count(*) FROM employee GROUP BY city; 
SELECT city_id, count(*) FROM emp_dim GROUP BY city_id;

重複資料驗證

它涉及根據業務需求驗證列中或列組合中應唯一的主鍵和唯一鍵。可以使用以下查詢執行重複資料驗證:

SELECT first_name, last_name, date_of_joining, count (1) FROM employee
GROUP BY first_name, last_name HAVING count(1)>1;

ETL測試 – 備份恢復

系統備份恢復計劃旨在確保系統能夠儘快從故障中恢復,並在不丟失任何重要資料的情況下儘早恢復執行。

ETL備份恢復測試用於確保資料倉庫系統能夠成功從硬體、軟體或網路故障中恢復,而不會丟失任何資料。

必須制定適當的備份計劃,以確保最大限度的系統可用性。備份系統應能夠輕鬆恢復,並應在不丟失任何資料的情況下接管故障系統。

ETL測試備份恢復涉及將應用程式或DW系統暴露於任何硬體元件、軟體崩潰等的極端條件下。下一步是確保啟動恢復過程、完成系統驗證並實現資料恢復。

ETL測試 – 自動化

ETL測試主要使用SQL指令碼並在電子表格中收集資料。這種執行ETL測試的方法非常緩慢且耗時,容易出錯,並且是在樣本資料上執行的。

手動ETL測試中的技術挑戰

您的ETL測試團隊編寫SQL查詢以測試資料倉庫系統中的資料,他們需要使用SQL編輯器手動執行這些查詢,然後將資料放入Excel電子表格中並手動比較它們。此過程耗時、資源密集且效率低下。

市場上有各種工具可以自動化此過程。最常見的ETL測試工具是QuerySurge和Informatica資料驗證。

QuerySurge

QuerySurge是一款資料測試解決方案,專為測試大資料、資料倉庫和ETL流程而設計。它可以為您自動化整個流程,並很好地融入您的DevOps策略。

QuerySurge的關鍵功能如下:

  • 它具有查詢嚮導,可以快速輕鬆地建立測試QueryPairs,而無需使用者編寫任何SQL。

  • 它具有包含可重用查詢程式碼段的設計庫。您也可以建立自定義QueryPairs。

  • 它可以比較來自原始檔和資料儲存的資料與目標資料倉庫或大資料儲存的資料。

  • 它可以在幾分鐘內比較數百萬行和列的資料。

  • 它允許使用者安排測試執行:(1)立即,(2)任何日期/時間,或(3)在事件結束後自動執行。

  • 它可以生成資訊豐富的報告、檢視更新並將結果自動透過電子郵件傳送給您的團隊。

為了自動化整個過程,您的ETL工具應在ETL軟體完成其載入過程後透過命令列API啟動QuerySurge。

QuerySurge將自動無人值守地執行,執行所有測試,然後透過電子郵件向團隊中的每個人傳送結果。

與QuerySurge一樣,Informatica資料驗證提供了一個ETL測試工具,可幫助您加快和自動化開發和生產環境中的ETL測試過程。它允許您在更短的時間內提供完整、可重複和可稽核的測試覆蓋率。它不需要任何程式設計技能!

ETL測試 - 最佳實踐

要測試資料倉庫系統或BI應用程式,需要採用以資料為中心的方法。ETL測試最佳實踐有助於最大限度地降低執行測試的成本和時間。它提高了要載入到目標系統的資料質量,從而為終端使用者生成高質量的儀表板和報表。

我們在這裡列出了一些可以遵循的ETL測試最佳實踐:

分析資料

分析資料以瞭解需求以設定正確的資料模型至關重要。花時間瞭解需求併為目標系統擁有正確的資料模型可以減少ETL挑戰。研究源系統、資料質量併為ETL模組構建正確的資料驗證規則也很重要。應根據源系統和目標系統的資料結構制定ETL策略。

修復源系統中的不良資料

終端使用者通常知道資料問題,但他們不知道如何解決這些問題。在這些錯誤到達ETL系統之前找到並糾正這些錯誤非常重要。解決此問題的常見方法是在ETL執行時,但最佳實踐是在源系統中查詢錯誤,並在源系統級別採取步驟來糾正它們。

找到相容的ETL工具

常見的ETL最佳實踐之一是選擇與源系統和目標系統最相容的工具。ETL工具生成源系統和目標系統SQL指令碼的能力可以減少處理時間和資源。它允許在最合適的環境中處理轉換。

監控ETL作業

ETL實施過程中的另一個最佳實踐是排程、稽核和監控ETL作業,以確保載入按預期執行。

整合增量資料

有時,資料倉庫表的大小很大,不可能在每個ETL週期中重新整理它們。增量載入確保自上次更新以來僅更改的記錄被引入ETL流程,這對可伸縮性和刷新系統所需的時間產生巨大影響。

通常,源系統沒有時間戳或主鍵來輕鬆識別更改。如果在專案的後期階段發現此類問題,則可能非常昂貴。ETL最佳實踐之一是在初始源系統研究中涵蓋此類方面。此知識有助於ETL團隊識別更改資料捕獲問題並確定最合適的策略。

可擴充套件性

最佳實踐是確保提供的ETL解決方案具有可擴充套件性。在實施時,需要確保ETL解決方案能夠滿足業務需求及其未來的潛在增長。

廣告