ETL 測試 - 面試問題



ETL 代表提取、轉換和載入。它是資料倉庫系統中的一個重要概念。**提取**是指從不同的資料來源(例如交易系統或應用程式)中提取資料。**轉換**是指對資料應用轉換規則,使其適合分析報告。**載入**過程包括將資料移動到目標系統,通常是資料倉庫。

ETL 週期中涉及的三層是:

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

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

  • **訪問層** - 訪問層供終端使用者檢索資料以進行分析報告。

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

最常見的 ETL 工具包括:SAP BO 資料服務 (BODS)、Informatica、Microsoft – SSIS、Oracle 資料整合器 ODI、Talend Open Studio、Clover ETL 開源等。

最常見的 BI 工具包括:SAP Business Objects、SAP Lumira、IBM Cognos、JasperSoft、Microsoft BI 平臺、Tableau、Oracle Business Intelligence Enterprise Edition 等。

市場上流行的 ETL 工具包括:

  • Informatica - Power Center
  • IBM - Websphere DataStage(以前稱為 Ascential DataStage)
  • SAP - Business Objects 資料服務 BODS
  • IBM - Cognos 資料管理器(以前稱為 Cognos Decision Stream)
  • Microsoft - SQL Server Integration Services SSIS
  • Oracle - 資料整合器 ODI(以前稱為 Sunopsis Data Conductor)
  • SAS - 資料整合工作室
  • Oracle - 倉庫構建器
  • ABInitio
  • 開源 Clover ETL

暫存區是資料來源和資料倉庫/資料市場系統之間的一箇中間區域。可以設計暫存區以提供許多好處,但使用它們的主要動機是為了提高 ETL 過程的效率、確保資料完整性和支援資料質量操作。

與資料探勘相比,資料倉庫是一個更廣泛的概念。資料探勘涉及從資料中提取隱藏資訊並將其解釋為未來的預測。相反,資料倉庫包括諸如分析報告以生成詳細報告和臨時報告、資訊處理以生成互動式儀表板和圖表等操作。

OLTP 代表聯機事務處理系統,通常是關係資料庫,用於管理日常事務。

OLAP 代表聯機分析處理系統,通常是多維繫統,也稱為資料倉庫。

假設一家公司將其產品銷售給客戶。每次銷售都是發生在公司內部的事實,事實表用於記錄這些事實。每個事實表都儲存主鍵以將事實表連線到維度表和度量/事實。

**示例** - Fact_Units

Cust_ID Prod_Id Time_Id 銷售數量
101 24 1 25
102 25 2 15
103 26 3 30

維度表儲存描述事實表中物件的屬性或維度。它是事實表的一組伴侶表。

**示例** - Dim_Customer

Cust_id Cust_Name Gender
101 Jason M
102 Anna F

資料市場是資料倉庫的一種簡單形式,它專注於單個功能區域。它通常僅從少數來源獲取資料。

**示例** - 在一個組織中,資料市場可能存在於財務、營銷、人力資源和其他各個部門,這些部門儲存與其特定職能相關的資料。

聚合函式用於對單個列的多個行進行分組以形成更重要的度量。當我們在資料倉庫中儲存聚合表時,它們也用於效能最佳化。

常見的聚合函式包括:

MIN 返回給定列中的最小值
MAX 返回給定列中的最大值
SUM 返回給定列中數值的總和
AVG 返回給定列的平均值
COUNT 返回給定列中值的總數
COUNT(*) 返回表中的行數

示例

SELECT AVG(salary) 
FROM employee 
WHERE title = 'developer'; 

資料定義語言 (DDL) 語句用於定義資料庫結構或模式。

**示例** -

  • **CREATE** - 在資料庫中建立物件

  • **ALTER** - 更改資料庫的結構

資料操縱語言 (DML) 語句用於操作資料庫中的資料。

**示例** -

  • **SELECT** - 從資料庫中檢索資料

  • **INSERT** - 將資料插入表中

  • **UPDATE** - 更新表中現有的資料

  • **DELETE** - 刪除表中的所有記錄,記錄的空間保留

資料控制語言 (DCL) 語句用於控制對資料庫物件的訪問。

**示例** -

  • **GRANT** - 為使用者授予對資料庫的訪問許可權

  • **REVOKE** - 撤銷使用 GRANT 命令授予的訪問許可權

運算子用於在 SQL 語句中指定條件,並用作語句中多個條件的連線詞。常見的運算子型別包括:

  • 算術運算子
  • 比較/關係運算符
  • 邏輯運算子
  • 集合運算子
  • 用於否定條件的運算子

SQL 中常見的集合運算子包括:

  • UNION
  • UNION ALL
  • INTERSECT
  • MINUS

Intersect 操作用於組合兩個 SELECT 語句,但它只返回兩個 SELECT 語句中共同的記錄。在 Intersect 的情況下,列數和資料型別必須相同。MySQL 不支援 INTERSECT 運算子。Intersect 查詢如下所示:

select * from First 
INTERSECT 
select * from second 

Minus 操作組合兩個 Select 語句的結果,並僅返回屬於第一組結果的結果。Minus 查詢如下所示:

select * from First 
MINUS 
select * from second 

如果執行源減去目標和目標減去源,如果減法查詢返回一個值,則應將其視為不匹配行的案例。

如果減法查詢返回一個值並且交集計數小於源計數或目標表,則源表和目標表包含重複行。

**Group-by** 子句與**select** 語句一起使用以收集類似型別的資料。**HAVING** 與**WHERE** 非常相似,除了其中的語句具有聚合性質。

**語法** -

SELECT dept_no, count ( 1 ) FROM employee GROUP BY dept_no;  
SELECT dept_no, count ( 1 ) FROM employee GROUP BY dept_no HAVING COUNT( 1 ) > 1;

**示例** - 員工表

國家 薪資
印度 3000
美國 2500
印度 500
美國 1500

按國家分組

國家 薪資
印度 3000
印度 500
美國 2500
美國 1500

ETL 測試是在將資料移動到生產資料倉庫系統之前進行的。有時也稱為表平衡或生產協調。

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

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

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

根據其功能,ETL 測試可以分為以下類別:

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

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

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

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

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

  • **系統整合測試** - 它涉及測試所有單個系統,然後組合結果以查詢是否存在任何偏差。

  • ETL過程中資料丟失。

  • 資料錯誤、不完整或重複。

  • 資料倉庫系統包含歷史資料,因此資料量非常龐大,在目標系統中執行ETL測試非常複雜。

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

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

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

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

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

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

ETL測試人員的主要職責包括:

  • 驗證源系統中的表:計數檢查、資料型別檢查、主鍵不缺失、資料不重複。

  • 在載入資料之前應用轉換邏輯:資料閾值驗證、代理鍵檢查等。

  • 從暫存區載入資料到目標系統:聚合值和計算指標、關鍵欄位不缺失、目標表中的計數檢查、BI報表驗證等。

  • 測試ETL工具及其元件,測試用例:建立、設計和執行測試計劃、測試用例、測試ETL工具及其功能、測試資料倉庫系統等。

轉換是一組生成、修改或傳遞資料的規則。轉換可以分為兩種型別:主動轉換和被動轉換。

在主動轉換中,一旦發生轉換,建立為輸出的行數可能會發生變化。這在被動轉換期間不會發生。資訊透過與作為輸入給出的相同數量的資訊傳遞。

分割槽是指將資料儲存區域劃分為多個部分。通常是為了提高事務的效能。

如果您的資料倉庫系統規模龐大,則查詢資料需要花費時間。儲存空間的分割槽允許您更容易、更快地查詢和分析資料。

分割槽可以分為兩種型別:迴圈分割槽和雜湊分割槽。

在迴圈分割槽中,資料均勻分佈在所有分割槽中,因此每個分割槽中的行數相對相同。雜湊分割槽是指伺服器使用雜湊函式來建立分割槽鍵以對資料進行分組。

  • Mapplet定義了轉換規則。

  • 會話用於指示資料何時從源系統移動到目標系統。

  • 工作流是一組指示伺服器執行任務的指令。

  • 對映是指將資料從源移動到目標。

查詢轉換允許您訪問對映文件中未定義的關係表中的資料。它允許您更新緩慢變化的維度表以確定記錄是否已存在於目標中。

代理鍵是具有序列生成的數字,沒有意義,只是為了唯一地識別行。它對使用者或應用程式不可見。它也稱為候選鍵。

代理鍵具有序列生成的數字,沒有意義。它旨在唯一地識別行。

主鍵用於唯一地識別行。它對使用者可見,可以根據需要更改。

在這種情況下,您可以應用校驗和方法。您可以從檢查源系統和目標系統中的記錄數量開始。選擇總和並比較資訊。

在此測試中,測試人員驗證資料的範圍。要檢查目標系統中的所有閾值,以確保它們符合預期結果。

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

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

當沒有定義主鍵時,可能會出現重複值。

資料重複也可能是由於錯誤的對映以及在將資料從源系統傳輸到目標系統期間出現的人為錯誤造成的。

迴歸測試是指當我們對資料轉換和聚合規則進行更改以新增新功能並幫助測試人員查詢新錯誤時。在迴歸測試中出現的資料中的錯誤稱為迴歸。

這三種方法是:自頂向下、自底向上和混合。

最常見的ETL測試場景包括:

  • 結構驗證
  • 驗證對映文件
  • 驗證約束
  • 資料一致性檢查
  • 資料完整性驗證
  • 資料正確性驗證
  • 資料轉換驗證
  • 資料質量驗證
  • 空值驗證
  • 重複驗證
  • 日期驗證檢查
  • 使用減法查詢進行完整資料驗證
  • 其他測試場景
  • 資料清洗

資料清除是從資料倉庫中刪除資料的過程。它刪除垃圾資料,例如包含空值或額外空格的行。

介面錯誤與應用程式的圖形使用者介面相關。它可能與字型樣式、字型大小、顏色、對齊方式、拼寫錯誤、導航等相關。

在執行閾值驗證測試時出現的測試錯誤稱為什麼?

您可以透過建立對映變數和篩選轉換來實現。您可能需要生成一個序列,以便獲得所需的特定排序記錄。

**值比較**:它涉及在源系統和目標系統中比較資料,轉換最少或沒有轉換。可以使用各種ETL測試工具(例如Informatica中的源限定符轉換)來完成此操作。

可以透過比較源系統和目標系統中的不同值來檢查關鍵資料列。

您可以使用減法和交集語句來執行資料完整性驗證。當您執行源減目標和目標減源,並且減法查詢返回一個值時,則表示存在不匹配的行。

如果減法查詢返回值,並且交集計數小於源計數或目標表計數,則表示存在重複行。

**快捷方式轉換**是對共享資料夾中可用物件的引用。這些引用通常用於需要在不同專案或環境之間共享的各種源和目標。

在儲存庫管理器中,透過分配“共享”狀態來建立快捷方式。之後,可以將物件從此資料夾拖到另一個資料夾。此過程允許對物件進行單點控制,並且多個專案不必將其所有匯入源和目標匯入到其本地資料夾中。

**可重用轉換**是特定於資料夾的。**示例**:用於分配倉庫客戶 ID 的可重用序列生成器。它有助於從多個源系統載入客戶詳細資訊併為每個新的源鍵分配唯一 ID。

當您將單個表連線到自身時,稱為自連線。

資料庫規範化是組織關係資料庫的屬性和表的流程,以最大程度地減少資料冗餘。

規範化包括將表分解成冗餘度更低(更小)的表,但不會丟失資訊。

無事實事實表是沒有度量的事實表。它本質上是維度的交集。無事實表有兩種型別:一種用於捕獲事件,另一種用於描述條件。

緩慢變化維度是指屬性值隨時間變化的情況。SCD 有三種類型:型別 1、型別 2 和型別 3。

廣告

© . All rights reserved.