市场研究公司Forrester副总裁Erin Kinikin曾经把低劣的数据质量做了一个形象的比喻“用更好的方法访问劣质的数据,结果类似于把已经腐烂了的桃子用更快的卡车,走更好的路线运输到达市场时,桃子仍然是腐烂的。”质量低劣的数据带给我们的不仅仅是报表数据的错误,更危险的是它可能会导致决策的偏离。
随着数据质量问题渐渐被广泛地关注,我们为了降低和避免低劣的数据质量带来的影响和危害,通常在ETL(抽取、转换和加载)过程中增加了数据清洁的步骤,这样一来ETL就变成了ECTL(抽取、清洁、转换和加载),数据在被转换和加载到数据仓库之前,会被过滤、清洁和规则化,在很大程度上提高了数据仓库中的数据质量。
然而我们慢慢会发现,仅仅依靠ECTL对数据进行清洁是远远不够的。我们低估了“脏数据”表现形式的不确定性。“脏数据”之所以“脏”的原因有很多,例如:空值,字段值溢出,违反外键约束,重复记录,违反业务逻辑等。在最初设计ETL规则的时候,我们并不知晓哪个字段会有什么类型的脏数据,无法有针对性地在ETL过程中建立有效的数据清洁规则,而只能在ETL规则运行时遇到数据质量问题引发的错误后,才能去解决它。这样虽然在一定程度上提高了数据质量,但是这种“头疼医头,脚疼医脚”的方式永远是被动的,无法统筹和系统化地解决数据质量的问题。
面对脏数据突施的冷箭,与其被动地对应,不如主动地有所作为。面对错综复杂的数据源系统,在进行数据处理和ETL规则的设计之前,我们应该对数据有一个全面的,完整的认识——这就是数据剖析,即Data
Profiling。数据仓库大师Ralph
Kimball博士对数据剖析是这样定义的——对数据源内容系统化的预先的分析。他认为在做数据整合的时候,数据源系统能够提供什么质量等级的数据制约着下一步的ETL设计工作,全面了解系统中数据情况是提出合理完善的解决办法的前提。
数据剖析通常会包含如下几个内容:
1)列分析。列分析是对数据源表中的字段的值进行统计,比如:最大值,最小值,唯一值个数,NULL
值的比例,字段类型,长度,字段格式以及数值分布比例等。作为数据剖析的基础,我们通过列分析可以获得数据NULL值的情况,数值是否越界,数值格式是否规范等信息,这对于我们设计ETL中数据清洁规则是非常必要的。
2)连接分析。连接分析是对两个表之间的连接列和匹配程度进行分析。它能够显著提高ETL中的Lookup操作的匹配率和正确率。
3)键值分析。键值分析是分析和检查表的中某1列或多列是否符合唯一性约束。它对于数据仓库中数据模型的设计和ETL规则设计也是非常重要的。
通过数据剖析,我们能够深入了解数据的结构,数值的有效性,分布情况以及在多个分散系统之间关联等重要信息。而获取这些信息是我们变被动为主动地改善数据质量的第一步。当天空突然下起大雨,我们总会看到有的人被雨水淋得湿透,狼狈不堪,而有的人撑起雨伞从容应对。出门之前听天气预报,是生活中的常识。而在设计ETL规则之前先进行数据剖析,是我们实践的真谛。
连接:http://www.itpub.net/thread-1366729-1-1.html