1.1 BI
BI(Business Intelligence)即商务智能。用来将企业中现有的数据(原始数据或商业数据或业务数据等)进行有效的整合,快速准确地提供报表并提出决策依据,帮助企业做出明智的业务经营决策。用于汇报、分析、挖掘、数据质量、交互、预测分析等。
1.2 数据仓库
数据仓库是为查询和分析而不是事务处理而设计的数据库。
数据仓库是通过整合不同的异构数据源而构建起来的。
数据仓库的存在使得企业或组织能够将整合、分析数据工作与事务处理工作分离。
数据能够被转换、整合为更高质量的信息来满足企业级用户不同层次的需求。
1.3 ETL
ETL是Extract-Transform-Load的缩写(提取-转换-载入),是一个完整的从源系统提取数据,进行转换处理,载入至数据仓库的过程。数据获取,数据清洗,数据发掘,数据可视化, 数据分析。
ETL能够转换不同结构/类型的数据集为统一的结构,以便后续使用BI工具生成有意义的分析和表报。
Extract:
- 提取有效的数据
Transform:
- 将提取的数据转换为数据仓库模式/格式。
- 构建keys:一个key是一个或多个数据属性的惟一标识实例,key的类型可以是主键(primary key)、外键(foreign key)、替代键(alternate key)、复合键(composite key)以及代理键(surrogate key)。这些key只允许数据仓库进行维护管理,且不允许其他任何实体进行分配。
- 数据清理:在提取好数据后,则进入下一个节点:数据清理。对提取的数据中的错误进行标识和修复。解决不同数据集之间的不兼容的冲突问题,使数据一致性,以便数据集能用于目标数据仓库。通常,通过转换系统的处理,我们能创建一些元数据(meta data)来解决源数据的问题,并改进数据的质量。
Load:
- 将转换后的数据载入数据仓库
- 构建聚集:创建聚集对数据进行汇总并存储数据至表中,以改进终端用户的查询体验。
1.4 ETL测试
ETL测试是为了确保从源到目的地数据经过业务转换完成后是准确的。同时它还涉及数据的验证,即从源到目的地数据各个不同阶段验证数据。
ETL测试过程:分析需求、业务和源数据,获取数据,实现业务逻辑和维度建模,构建和填充数据,生成报告
ETL测试类型
- Production Validation Testing该类型的ETL测试是在数据迁移至生产系统时进行的。为了保证生产业务的正常运营,生产系统中的数据必须以正确的顺序进行排序。在该ETL测试类型中要注意从数据层面进行自动化测试和管理能力的植入。
- Source to Target Testing(Validation Testing)该类型的测试主要元组转换的数据是否满足预期的转换目标
- Application Upgrades(升级测试)该类型的ETL测试是可以自动生成的,能节省大量的测试开发时间。主要检查旧应用或存储库中提取的数据是否与新的应用或新的存储库中的数据完全相同。
- Metadata testing(元数据测试)元数据测试包括数据类型检查、数据长度和索引/约束检查。
- Data Completeness Testing(数据完整性测试)当把所有期望的数据从源加载到目标地时,就算完成了数据完整性测试。在数据完整性测试过程中,我们还可以进行一些简单的转换或无转换的源与目标之间的计数、聚合和实际数据比较和验证的测试。
- Data Accuracy Testing(数据准确性测试)该类型测试验证数据正确的完成加载和按预期目标进行转换。
- Data Transformation Testing(数据转换测试)测试数据转换是一个复杂的过程,并不是简单的写一个源SQL查询并与目标进行比较来实现的。可能需要为每个行运行多个SQL查询,来验证转换规则
- Data Quality Testing(数据质量测试)数据质量测试包含语法和基准测试。为了避免在业务过程中由于日期或唯一编号(例如订单号)引起的错误,进行数据质量测试。
- 语法测试:根据无效字符、字符模式、不正确大小写、顺序等出具脏数据测试结果
- 基准测试:基于数据模型检查数据,例如客户ID数据质量测试,包含:数字检查、日期检查、精度检查、数据检查、零校验等等
- Incremental ETL Testing(增量ETL测试)该类型测试主要验证旧数据和新数据的完整性,并添加新数据。增量测试验在增量ETL过程中,插入和更新是否满足预期的要求。
- GUI/Navigation Testing该类型测试主要检查生成的大数据报告的UI\导航方面是否正常
1.5数据仓库测试 VS 数据库测试
数据库测试 | 使用规模较小的数据,通常是OLTP(联机事务处理)的数据库。 | 通常是从统一数据源中持续注入。 | 一般只执行CRUD(Create, read, update and delete)。 | 标准化的数据库被用于DB测试中。 |
数据仓库测试 | 大容量的数据,涉及的是OLAP(联机分析处理)数据库。 | 数据来自不同类型的数据源且数据是不连续和无序的。 | 只读(select)操作。 | 历史DB则被使用在数据仓库测试中。 |
数据合法性、有效性等(类型、空值、脏数据等)
加载规则测试(全量:先清空再插入(truncate and insert)、增量:先删后插(delete and insert))