您的数据有多干净?

日期: 2013-03-05 作者:Andy Hogg翻译:冯昀辉 来源:TechTarget中国 英文

“不需要清洗数据。我们只是把数据从源系统提取出来,然后加载进入数据仓库中。我们的数据一直就是干净的。”   多少次,可怜的ETL咨询顾问听到过这样的结论后,还能保持外交式微笑,但内心已经纠结地要撞墙。

  听起来很简单:从源系统(可能是关系数据库,文本文件,电子表格等等)取出数据,然后载入到数据仓库中。   问题是在事务处理系统中,数据很少能保持完全干干净净。这是因为事务处理系统通常一次只处理单条记录或者一小批记录。   相比之下,分析系统需要更大量的数据记录。

就像铺上了白色的地毯,数据进行分析时,脏数据才能真正显露出来。   常见数据质量问题   源系统内的数据质量总是会比预期的差,通常是由……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

“不需要清洗数据。我们只是把数据从源系统提取出来,然后加载进入数据仓库中。我们的数据一直就是干净的。”

  多少次,可怜的ETL咨询顾问听到过这样的结论后,还能保持外交式微笑,但内心已经纠结地要撞墙。

  听起来很简单:从源系统(可能是关系数据库,文本文件,电子表格等等)取出数据,然后载入到数据仓库中。

  问题是在事务处理系统中,数据很少能保持完全干干净净。这是因为事务处理系统通常一次只处理单条记录或者一小批记录。

  相比之下,分析系统需要更大量的数据记录。就像铺上了白色的地毯,数据进行分析时,脏数据才能真正显露出来。

  常见数据质量问题

  源系统内的数据质量总是会比预期的差,通常是由于缺乏合理的机制。

  引用完整性。例如,订单库存中有分配给客户编号为CB3742的订单,而这个客户可能已经不在客户信息库中了。

  NULL的使用。例如,客户的电话信息默认是空的(NULL)。我们不清楚这个客户是没有电话,还是没有提供电话号码,或者是从没有被要求过提供电话号码。

  数值检查的合理性。例如,有的客户生日记录是1869年7月1日。很明显不合理。

  预定义域的值限制。例如,用户添加了类型为Reverund的客户信息,而不是从预定义值列表中进行选择。比如“Mr、Mrs、Miss、Ms、Dr或Rev”。

  业务逻辑。例如,AAA信用评级客户必须持有一个账号至少五年,但是并没有机制去限制这条规则。

  分析数据

  源系统内的数据应该出于以下两个原因分析。

  首先,准确估计涉及清理系统数据的工作量。数据越脏,就需要花费更多的时间和成本。

  其次,对于拒绝的情况,可以展示证据表明数据并不像预期的那样质量完好。

  使用比SQL查询更有效的工具,数据可以被在关系型源系统中分析并建立质量。

  在客户信息表中,我们应该运行如下查询:

  可能返回结果如下:

  之前不可见的脏数据现在就暴露出来了。

  另一个例子是在客户信息表中查找年龄不合理信息:

  下面的例子查找地址数据中第一行太短不合理的情况:

  最后一个例子是查找不存在的客户信息:

  尽管可以用SQL 查询来分析数据,但是也有一些专门的工具可以使用。

  一致性

  在从多个数据源提取数据时,即便源数据在每个独立源系统中都是干净的,也需要注意数据一致性。

  一致性过程有三个阶段。

  1.标准化阶段

  从三个来源系统提取数据,性别信息在第一个系统中可能是用的数字标记(“1”代表男性,“2”代表女性),在第二个系统中可能用字母表示(用“M”和“F”代表男性和女性),在第三个系统中可能用单词来表示(“Male”和“Female”代表男性和女性)。

  在各个来源系统内部,这项数据可能是干净的,但是把三套系统中的数据合并到一个数据仓库中,数据可能就需要标准化处理了。

  我们可能会规定数据仓库中性别的代表符号为单词“Male”,“Female”和“Unknown”。

  对于第一个系统,数字标记可以被转换成这些值。对于第二个系统,单个字符标志也可以类似处理。

  第三个系统需要检查“Male”和“Female”值存在,如果有误拼写则需要纠正。控制应该转换成数据仓库中的“Unknown”标志。

  有时候标准化比这个简单的例子要更复杂的多,比如对于地址类信息可能就需要专门的工具来处理检查了。

  2.匹配重复记录

  接下来一步是从不同数据来源识别关联相关实体。这些记录可能在最后一步中合并到一起。

  有时候这个过程会很轻松,因为来自不同数据源的员工记录都包含有员工编号,但是有时候可能就更麻烦一些。

  3.存活数据

  存活是最后一个阶段,要匹配记录并合并为一条记录。来自每个匹配记录的值中质量最好的数据会被合并,形成尽可能最高质量的单一记录。

  总结

  本文我们探讨了常见数据质量误区,我们了解了数据为什么会变脏,以及如何发现脏数据。我们还探讨了数据一致性问题。

相关推荐