ETL测试 - 面试问题

ETL代表Extract,Transform和Load.它是数据仓库系统中的一个重要概念. 提取代表从不同数据源(如事务系统或应用程序)中提取数据. 转换代表对数据应用转换规则,以便它适合分析报告. 加载过程涉及将数据移动到目标系统,通常是数据仓库.

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 :  Power Center

  • IBM :  Websphere DataStage(以前称为Ascential DataStage)

  • SAP :  Business Objects数据服务BODS

  • IBM :  Cognos Data Manager(以前称为Cognos Decision Stream)

  • Microsoft :  SQL Server Integration Services SSIS

  • Oracle :  Data Integrator ODI(以前称为Sunopsis Data Conductor)

  • SAS :  Data Integration Studio

  • Oracle : 仓库生成器

  • ABInitio

  • 开源Clover ETL

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

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

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

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

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

示例 :  Fact_Units

Cust_IDProd_IdTime_Id否.出售的单位
10124125
10225215
10326330

A维度表存储描述事实表中对象的属性或维度.它是事实表的一组伴随表.

示例 :  Dim_Customer

Cust_idCust_Name性别
101JasonM
102AnnaF

数据集市是一种简单的数据仓库形式,它专注于单一数据集市功能区域.它通常仅从少数几个来源获取数据.

示例 : 在组织中,可能存在财务,市场营销,人力资源和其他个别部门的数据集市,这些部门存储与其特定职能相关的数据.

聚合函数用于对单个列的多行进行分组,以形成更重要的度量.当我们在数据仓库中保存聚合表时,它们也用于性能优化.

Common Aggregate函数是 :

MIN返回给定列中的最小值
MAX返回最大值给定列
SUM返回a中数值的总和给定列
AVG返回给定列的平均值
COUNT返回给定列中的值总数
COUNT(*)返回表格中的行数

示例

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

数据定义语言(DDL)语句用于定义数据库结构或模式.

示例 :

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

  • ALTER : 改变数据库的结构

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

示例 :

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

  • INSERT : 将数据插入表中

  • 更新 : 更新表格中的现有数据

  • DELETE : 删除表中的所有记录,记录的空间保持

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

示例 :

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

  • REVOKE : 撤销使用GRANT命令给出的访问权限

运算符用于指定SQL语句中的条件,并用作语句中多个条件的连词.常见的运算符类型是 :

  • 算术运算符

  • 比较/关系运算符

  • 逻辑运算符

  • 设置运算符

  • 用于否定条件的运算符

SQL中的常见集合运算符为 :

  • UNION

  • UNION ALL

  • INTERSECT

  • MINUS

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

 
 select * from First 
 INTERSECT 
 select * from second

减号操作结合了两个Select语句的结果,只返回属于第一组结果的结果.减号查询看起来如下 :

 
 select * from First 
 MINUS 
 select * from second

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

如果减去查询返回一个值并且count intersect小于源计数或目标表,那么源表和目标表包含重复的行.

分组依据子句与 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
US2500
India500
US1500

分组依据国家

国家 薪水
印度3000
印度500
US2500
US1500

ETL测试在数据移动之前完成进入生产数据仓库系统.它有时也称为表平衡或生产协调.

ETL测试的主要目标是识别和缓解在处理分析报告数据之前发生的数据缺陷和一般错误.

下表列出了数据库和ETL测试的主要功能及其比较和减号;

函数数据库测试ETL测试
主要目标数据验证和集成BI报告的数据提取,转换和加载
适用系统业务流程发生的交易系统包含历史数据但不在业务流程环境中的系统
市场上的常用工具QTP,Selenium等QuerySurge,Informatica等
业务需求它用于集成来自多个应用程序的数据,严重影响.它用于分析报告,信息和预测.
建模ER方法多维
数据库键入它通常用于OLTP系统它适用于OLAP系统
数据类型具有更多连接的规范化数据具有较少连接,更多索引和聚合的非规范化数据.

ETL测试可根据其功能和减号分为以下类别;

  • 目标计数测试的来源 : 它涉及匹配源系统和目标系统中的记录数.

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

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

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

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

  • 系统集成测试 :  ;它涉及测试所有单个系统,然后组合结果以查找是否存在任何偏差.

  • ETL过程中的数据丢失.

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

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

  • 通常,ETL测试人员无法访问ETL工具中的作业计划.他们几乎无法访问BI报告工具,无法在报告中查看报告和数据的最终布局.

  • 因为数据量太大而难以生成和构建测试用例高度复杂.

  • ETL测试人员通常不了解最终用户报告要求和信息的业务流程.

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

  • 有时测试人员未获得源代码目标映射信息.

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

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

  • 验证源系统中的表格 : 去;计数检查,数据类型检查,密钥不丢失,重复数据.

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

  • 数据从临时区域加载到目标系统:聚合值和计算的度量,关键字段不会丢失,计数检查目标表,BI报告验证等.

  • 测试ETL工具及其组件,测试用例和减号;创建,设计和执行测试计划,测试用例,测试ETL工具及其功能,测试DW系统等.

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

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

分区是指将数据存储区域划分为多个部分.通常这样做是为了提高交易的性能.

如果你的DW系统规模很大,那么定位数据需要时间.通过对存储空间进行分区,您可以更轻松,更快速地查找和分析数据.

分离可以是两种类型和减号;循环分区和散列分区.

在循环分区中,数据在所有分区之间均匀分布,因此每个分区中的行数相对相同.散列分区是指服务器使用散列函数创建分区键以对数据进行分组.

  • Mapplet定义转换规则.

  • 会话被定义为在数据从源系统移动到目标系统时指示数据.

  • 工作流是一组指示服务器执行任务的指令.

  • 映射是数据从源到目的地的移动.

查找转换允许您访问未在映射文档中定义的关系表中的数据.它允许您更新缓慢变化的维度表,以确定目标中是否已存在记录.

代理键是序列生成的数字,没有任何意义,只是为了识别行唯一.它对用户或应用程序不可见.它也被称为候选键.

代理键具有序列生成的数字,没有任何意义.它用于唯一标识行.

主键用于唯一标识行.它对用户可见,并可根据要求进行更改.

在这种情况下,您可以应用校验和方法.您可以从检查源系统和目标系统中的记录数开始.选择总和并比较信息.

在这个测试中,测试人员验证数据范围.应检查目标系统中的所有阈值,以确保它们符合预期结果.

示例 : 年龄属性的值不应大于100.在日期列DD/MM/YY中,月份字段的值不应大于12.

 
选择Cust_Id,Cust_NAME,数量,COUNT(*)
来自Customer GROUP BY Cust_Id,Cust_NAME,Quantity HAVING COUNT(*)> 1;

如果没有定义主键,则可能会出现重复值.

由于映射不正确,也可能出现数据重复,以及从源系统向目标系统传输数据时的手动错误.

回归测试是指我们对数据转换和聚合规则进行更改以添加新功能并帮助测试人员查找新错误.回归测试中出现的数据中出现的错误称为回归.

这三种方法是 : 自上而下,自下而上和混合.

最常见的ETL测试场景是 :

  • 结构验证

  • 验证映射文档

  • 验证约束

  • 数据一致性检查

  • 数据完整性验证

  • 数据正确性验证

  • 数据转换验证

  • 数据质量验证

  • 无效验证

  • 重复验证

  • 日期验证检查

  • 使用减号查询的完整数据验证

  • 其他测试方案

  • 数据清理

数据清除是从数据仓库中删除数据的过程.它会删除包含空值或额外空格的行等垃圾数据.

化妆品错误与应用程序的GUI有关.它可能与字体样式,字体大小,颜色,对齐,拼写错误,导航等有关.

它被称为与边界值分析相关的错误.

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

值比较 : 它涉及比较源系统和目标系统中的数据,只需要进行最小的转换或不进行转换.可以使用各种ETL测试工具完成,例如Informatica中的源限定符转换.

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

您可以使用Minus和Intersect语句执行数据完整性验证.当你执行源减去目标和目标减去源并且减去查询返回一个值时,它是行不匹配的标志.

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

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

在Repository Manager中,通过分配"共享"状态来创建快捷方式.之后,可以将对象从此文件夹拖动到另一个文件夹.此过程允许对象的单一控制点,并且多个项目没有将所有导入源和目标放入其本地文件夹.

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

当您将单个表连接到自身时,它被称为自加入.

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

规范化涉及将表分解为更少冗余(和更小)的表但不丢失信息.

无事实的事实表是没有任何度量的事实表.它本质上是一个维度的交叉点.有两种类型的无事实表:一种用于捕获事件,另一种用于描述条件.

慢慢变化维度是指属性随时间变化的值. SCD有三种类型:类型1,类型2和类型3.