一.什么是ETL
ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、交互转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库(来自百度百科)。通俗的讲,ETL就是对数据仓库的大量原始数据进行清洗、转化、合并数据和部分聚合统计,从而直接得到部分基础标签并且为部分标签的挖掘做好数据准备。
ETL是大数据开发中的重要一环,通常来说数据仓库引入的数据源往往都存在各种问题,异常数据会影响挖掘的准确性,而源数据中的部分数据太过分散也不适合挖掘直接使用,需先用经过简单的聚合统计才能使用,ETL过程会将数据源中的各种问题分析后找出来,对各种异常数据进行过滤清洗,对一些格式不统一的数据做统一的格式转化,对于一些行为进行聚合统计得到指定行为的制定时间段内的行为次数等,得到的整理后的数据才能用于挖掘。
二.ETL测试
ETL测试通过有以下几种测试类型:
1.表数据量对比测试
通过对比处理前后的数据量变化,验证ETL开发过程中是否有代码错误导致数据丢失,这种直接对比量表数据量的比较适用数据仓库底层仅做数据过滤和数据转化时,不太适合聚合过程的测试。
2.统计值总量对比测试
这种测试方法适用于对部分表进行聚合统计前后做数据无损验证。举个例子,挖掘同学在挖掘购物偏好时一般会向ETL同学提交需求,要求把源数据零散的查看和购买等行为聚合统计为某类目在一天内的访问、购买次数,这种情况由于聚合过程存在,源表和结果表数据量必然不同,此时可通过统计源表的数量总量对比结果表SUM(行为次数)的方式来确保聚合过程中是否有数据量损失。
部分聚合统计过程可能缺失存在正常的损失数据,这种情况下也需要对比源表和结果表数据,分析这种损失是否合理。
3.数据清洗测试
这种情况首先需要分析出那些数据是异常数据,举一些例子:ip、imei、邮箱、mac地址等这些信息本身是有规则的,可以考虑使用对应的正则来