📜  ETL测试–面试问题

📅  最后修改于: 2020-12-06 09:29:29             🧑  作者: Mango


ETL代表提取,转换和加载。它是数据仓库系统中的重要概念。提取代表从不同数据源(例如事务系统或应用程序)中提取数据。转换代表将转换规则应用于数据,从而使其适合于分析报告。加载过程涉及将数据移至目标系统,通常是数据仓库。

ETL周期涉及的三层是-

  • 暂存层-暂存层用于存储从不同源数据系统提取的数据。

  • 数据集成层-集成层将数据从登台层进行转换,并将其移动到数据库中,在该数据库中,数据按层次结构组(通常称为维度) ,事实和汇总事实进行排列。 DW系统中事实和维度表的组合称为模式

  • 访问层-最终用户使用访问层来检索数据以进行分析报告。

ETL工具用于从不同的数据源提取数据,转换数据并将其加载到DW系统中。相反,BI工具用于为最终用户生成交互式和临时报告,高级管理人员的仪表板,每月,每季度和每年的董事会会议的数据可视化。

最常见的ETL工具包括-SAP BO数据服务(BODS),Informatica,Microsoft – SSIS,Oracle Data Integrator ODI,Talend Open Studio,Clover ETL开源等。

最常见的BI工具包括-SAP Business Objects,SAP Lumira,IBM Cognos,JasperSoft,Microsoft BI平台,Tableau,Oracle商业智能企业版等。

市场上流行的ETL工具是-

  • Informatica-电源中心
  • IBM-Websphere DataStage(以前称为Ascential DataStage)
  • SAP-业务对象数据服务BODS
  • IBM-Cognos Data Manager(以前称为Cognos Decision Stream)
  • Microsoft-SQL Server集成服务SSIS
  • Oracle-数据集成商ODI(以前称为Sunopsis Data Conductor)
  • SAS-数据集成工作室
  • Oracle-仓库生成器
  • 阿比尼蒂奥
  • 开源三叶草ETL

暂存区域是位于数据源和数据仓库/数据集市系统之间的中间区域。可以将暂存区域设计为提供许多好处,但是使用暂存区域的主要动机是提高ETL流程的效率,确保数据完整性并支持数据质量操作。

与数据挖掘相比,数据仓库是一个更广泛的概念。数据挖掘涉及从数据中提取隐藏信息,并将其解释为将来的预测。相反,数据仓库包括诸如分析报告以生成详细报告和临时报告之类的操作,以及信息处理以生成交互式仪表板和图表的操作。

OLTP代表在线交易处理系统,该系统通常是一个关系数据库,用于管理日常交易。

OLAP代表在线分析处理系统,该系统通常是多维系统,也称为数据仓库。

假设一家公司将其产品出售给客户。每次销售都是公司内部发生的事实,事实表用于记录这些事实。每个事实表存储将事实表连接到维表和度量/事实的主键。

示例-Fact_Units

Cust_ID Prod_Id Time_Id No. of units sold
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 returns the smallest value in a given column
MAX returns the largest value in a given column
SUM returns the sum of the numeric values in a given column
AVG returns the average value of a given column
COUNT returns the total number of values in a given column
COUNT(*) returns the number of rows in a table

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

数据定义语言(DDL)语句用于定义数据库结构或架构。

示例

  • 创建-在数据库中创建对象

  • ALTER-更改数据库的结构

数据操作语言(DML)语句用于操作数据库中的数据。

示例

  • SELECT-从数据库中检索数据

  • INSERT-将数据插入表中

  • UPDATE-更新表中的现有数据

  • DELETE-删除表中的所有记录,保留记录的空间

数据控制语言(DCL)语句用于控制对数据库对象的访问。

示例

  • GRANT-授予用户对数据库的访问权限

  • REVOKE-撤回GRANT命令给定的访问权限

运算符用于指定SQL语句中的条件,并用作语句中多个条件的联合。常见的运算符类型是-

  • 算术运算符
  • 比较/关系运算符
  • 逻辑运算符
  • 集合运算符
  • 运算符用于否定条件

SQL中的常见集合运算符是-

  • 联盟
  • 全联盟
  • 相交
  • 减去

相交操作用于合并两个SELECT语句,但它仅返回两个SELECT语句共有的记录。如果是相交,则列数和数据类型必须相同。 MySQL不支持INTERSECT运算符。相交查询如下所示-

select * from First 
INTERSECT 
select * from second 

减号运算组合两个Select语句的结果,并且仅返回属于第一组结果的那些结果。一个减号查询如下-

select * from First 
MINUS 
select * from second 

如果执行源负目标和目标负源,并且负查询返回一个值,则应将其视为行不匹配的情况。

如果减号查询返回一个值,并且计数相交小于源计数或目标表,则源表和目标表包含重复的行。

group-by子句与select语句一起使用,以收集相似类型的数据。 HAVINGWHERE非常相似,只不过其中的语句具有汇总性质。

语法

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;

示例-员工表

Country Salary
India 3000
US 2500
India 500
US 1500

按国家分组

Country Salary
India 3000
India 500
US 2500
US 1500

在将数据移入生产数据仓库系统之前,已完成ETL测试。有时也称为表平衡或生产对帐。

ETL测试的主要目标是识别和减轻在处理数据以进行分析报告之前发生的数据缺陷和一般错误。

下表捕获了数据库和ETL测试的主要功能及其比较-

Function Database Testing ETL Testing
Primary Goal Data validation and Integration Data Extraction, Transform and Loading for BI Reporting
Applicable System Transactional system where business flow occurs System containing historical data and not in business flow environment
Common Tools in market QTP, Selenium, etc. QuerySurge, Informatica, etc.
Business Need It is used to integrate data from multiple applications, Severe impact. It is used for Analytical Reporting, information and forecasting.
Modeling ER method Multidimensional
Database Type It is normally used in OLTP systems It is applied to OLAP systems
Data Type Normalized data with more joins De-normalized data with less joins, more indexes and Aggregations.

ETL测试可以根据其函数分为以下几类:

  • 源到目标计数测试-它涉及源和目标系统中记录计数的匹配。

  • 源到目标数据测试-它涉及源和目标系统之间的数据验证。它还涉及目标系统中的数据集成和阈值检查以及重复数据检查。

  • 数据映射或转换测试-确认源系统和目标系统中对象的映射。它还涉及检查目标系统中数据的功能。

  • 最终用户测试-涉及为最终用户生成报告,以验证报告中的数据是否符合预期。它涉及发现报告中的偏差并交叉检查目标系统中的数据以进行报告验证。

  • 重新测试-它涉及修复目标系统中数据中的错误和缺陷,并再次运行报告以进行数据验证。

  • 系统集成测试-涉及测试所有单个系统,然后合并结果以发现是否存在偏差。

  • ETL过程中的数据丢失。

  • 数据不正确,不完整或重复。

  • DW系统包含历史数据,因此数据量太大且非常复杂,无法在目标系统中执行ETL测试。

  • 通常不向ETL测试人员提供在ETL工具中查看工作计划的权限。他们几乎无法使用BI报表工具查看报表的最终布局以及报表中的数据。

  • 由于数据量太大和太复杂,很难生成和构建测试用例。

  • ETL测试人员通常对最终用户报告要求和信息的业务流程一无所知。

  • ETL测试涉及各种复杂的SQL概念,用于目标系统中的数据验证。

  • 有时,测试人员没有获得源到目标的映射信息。

  • 不稳定的测试环境会导致开发和测试过程的延迟。

ETL测试人员的主要职责包括-

  • 验证源系统中的表-计数检查,数据类型检查,键不丢失,重复数据。

  • 在加载数据之前应用转换逻辑:数据阈值验证,代理ky检查等。

  • 从暂存区域到目标系统的数据加载:汇总值和计算得出的度量,不缺少关键字段,目标表中的计数检查,BI报表验证等。

  • 测试ETL工具及其组件,测试用例-创建,设计和执行测试计划,测试用例,测试ETL工具及其函数,测试DW系统等。

转换是生成,修改或传递数据的一组规则。转换可以有两种类型-主动和被动。

在活动转换中,一旦发生转换,就可以更改作为输出创建的行数。在被动转换期间不会发生这种情况。信息通过与输入相同的数字。

分区是指将数据存储区分成几部分。通常这样做是为了提高交易性能。

如果您的DW系统规模巨大,将需要一些时间来定位数据。分区存储空间使您可以更轻松,更快地查找和分析数据。

分区可以分为两种类型:循环分区和哈希分区。

在循环分区中,数据均匀地分布在所有分区中,因此每个分区中的行数相对相同。哈希分区是指服务器使用哈希函数来创建分区键以对数据进行分组时。

  • 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测试方案是-

  • 结构验证
  • 验证映射文件
  • 验证约束
  • 数据一致性检查
  • 数据完整性验证
  • 数据正确性验证
  • 数据转换验证
  • 数据质量验证
  • 空验证
  • 重复验证
  • 日期验证检查
  • 使用减号查询的完整数据验证
  • 其他测试方案
  • 数据清理

数据清除是从数据仓库中删除数据的过程。它将删除垃圾数据,例如具有空值或多余空格的行。

外观错误与应用程序的GUI有关。它可能与字体样式,字体大小,颜色,对齐方式,拼写错误,导航等相关。

它称为与边界值分析有关的错误。

您可以通过创建映射变量和过滤转换来实现。您可能需要生成一个序列才能获得所需的经过特殊排序的记录。

值比较-它涉及比较源系统和目标系统中的数据而无需进行最少的转换或不进行任何转换。可以使用各种ETL测试工具(例如Informatica中的Source Qualifier Transformation)来完成。

可以通过比较源系统和目标系统中的不同值来检查关键数据列。

您可以使用Minus和Intersect语句执行数据完整性验证。当您执行源减目标和目标减源,并且减查询返回一个值时,则表示行不匹配。

如果减号查询返回一个值并且计数相交小于源计数或目标表,则存在重复的行。

快捷方式转换是对共享文件夹中可用的对象的引用。这些参考通常用于要在不同项目或环境之间共享的各种源和目标。

在资源库管理器中,通过分配“共享”状态来创建快捷方式。以后,可以将对象从该文件夹拖动到另一个文件夹。此过程允许对对象进行单点控制,并且多个项目没有将所有导入源和目标都导入到其本地文件夹中。

可重用转换是文件夹本地的。示例-可重用序列生成器,用于分配仓库客户ID。从多个源系统加载客户详细信息并将唯一的ID分配给每个新的源密钥非常有用。

当您将单个表联接到自身时,它称为“自联接”。

数据库规范化是组织关系数据库的属性和表以最小化数据冗余的过程。

规范化涉及将表分解为较少冗余(和较小)的表,但又不会丢失信息。

无事实事实表是没有任何度量的事实表。它本质上是尺寸的交集。事实表有两种类型:一种用于捕获事件,另一种用于描述条件。

尺寸变化缓慢是指属性随时间变化的值。 SCD具有三种类型-类型1,类型2和类型3。