数据仓库-数据清洗
定义
ETL
抽取(Extract)、转换(Transform)、加载(Load)
ETL的核心价值在"T"所代表的转换部分
数据清洗是对数据进行重新审查和校验的过程,目的在于删除重复信息、纠正存在的错误,并提供数据一致性
为什么要进行数据清洗
数据仓库中的数据是面向某一主题数据的集合,这些数据从多个业务系统中抽取而来,并且包含历史数据,因此就不可避免地出现某些数据是错误的,或者数据相互之间存在冲突的情况。这种数据被称为脏数据。
按照一定的规则处理脏数据,这个过程就是数据清洗
任务
数据清洗的任务是过滤那些不符合要求的数据,将过滤的结果交给业务主管部门,确认是直接删除掉,还是修正之后再进行抽取。
脏数据类型
- 残缺的数据
这一类数据主要是一些应该有的信息缺失,如产品名称、客户名称、客户的区域信息,还包括业务系统中由于缺少外键约束所导致的主表与明细表不能 匹配等。
- 错误的数据
这一类错误产生的原因多是业务系统不够健全,在接收输入后没有进行合法性检查或检查不够严格,将有问题的数据直接写入后台数据库造成的,比如 用字符串存储数字、超出合法的取值范围、日期格式不正确、日期越界等。
- 重复的数据
源系统中相同的数据存在多份。
- 差异的数据
本来具有同一业务含义的数据,因为来自不同的操作型数据源,造成数据不一致。这时需要将非标准的数据转化为在一定程度上的标准化数据。
数据清洗原则
优先对数据清洗处理流程进行分析和系统化的设计,针对数据的主要问题和特征,设计一系列数据对照表和数据清洗程序库的有效组合,以便面对不断变化的、形形色色的数据清洗问题。
清洗流程
- 预处理
对于大的数据加载文件,特别是新的文件和数据集合,要进行预先诊断和检测,不能贸然加载。有时需要临时编写程序进行数据清洁检查
- 标准化处理
应用建于数据仓库内部的标准字典,对于地区名、人名、公司名、产品名、分类名以及各种编码信息进行标准化处理。
- 查重
应用各种数据库查询技术和手段,避免引入重复数据;
- 出错处理和修正
将出错的记录和数据写入到日志文件,留待进一步处理。