数据质量实践初步

作者:姜玲
2007/3/29 16:26:04
本文关键字: ttnn 2005年12期

今天的话题要谈谈dqfw框架的应用,这已经考虑很久了。月初的时候,西宁兄就提出,如何将数据质量框架实际地应用到项目当中去,那个理论的框架,虽然定义了一系列指标和最后的质量报告,总觉得不具操作性。

上周在和王璟吃饭时,大多谈论的就是这个话题,他们的项目已经被数据质量问题困扰。因此,在边吃边探讨的过程中,逐渐厘清了一点头绪。

元数据——总结出来的一句话就是这个。

当然,不是指在数据仓库领域总是叫嚣的"元数据管理",而是关系到数据质量这一块,最急迫的元数据。这些元数据怎样系统地管理先不管,先要整理出来。这就像是做企业作经营分析和上经营分析系统的区别一样。前者是必须的,后者只是起到支撑作用。

因此,这里不谈如何去管理元数据,而是探讨有那些元数据。从实际可操作的角度去思考,发现其实要达到DQFW中质量指标体系和质量分级的目的,必须有三种元数据来保证,分别是数据流、质量度量/指标、数据剖析。

数据流元数据曾经在《ETL的两种流程图》中提到过,它是区别于ETL过程的,描述了在数据抽取、转换过程中,数据集的依赖关系。这些数据集可以是表、视图、文件等等。这种元数据当然不是完全为了数据质量的考虑,也可以用作数据血统分析、变更影响分析等用途。例如在报表上某个指标的来源可以追溯到具体从哪个数据源统计出来的,或者当某个中间表结构发生变化,将导致其他哪些数据集的变化。
而作为支持数据质量的元数据,数据流可以结合质量度量来计算质量指标,例如同期误差、同期波动率等。请参见《数据质量指标》。

当然有了这种元数据,最大的好处就是使你项目中的数据关系清晰起来。想想手上的项目吧,当你询问一个工程师,"这个数据从哪里来的?",想了半天,无法确定,只能打开一个复杂的程序去寻觅。当这些数据关系发生变化时,只能去修改程序。

另外质量度量元数据,是比较核心的。对于数据源、ETL过程中每个数据集都可以定义一系列度量,可以是一种总量,也可以是分量,例如"总收入","分地市用户数"等,这种元数据的定义是依赖具体业务的。而且这是比较耗时的一步,至少在自己项目的尝试中是如此。这点参见《 数据质量体系 之 概念》。这种元数据是为了做质量稽核用的。可以借助bolow将ETL当作自来水管的比喻,或者想象一下最近松花江上的硝基苯污染吧。质量度量可以想象成插在不同段河道上的测量仪,而质量稽核就是定时将测量仪的数据取回。(不过看电视上报道,松花江上的监测都是人工进行,定时派个人划着小船去江中取水样)。

第三种是数据剖析元数据,想不到什么好名字,但因为是用于数据剖析目的的,也就是英文里面的Data Profiling,故而此名。其实,也可以将它看作是传统数据库中另外一个术语——"数据字典"的扩展。因为这种元数据就是在描述数据的结构、约束,以及和其他数据之间的关系。当然,一般来说,眼前主要是描述数据源部分,那更加有用一些。

可能有人会问?数据源的数据字典不久足以描述这些信息了吗?但现实情况并不总是如此。例如为了性能的考虑,去掉主键、外键约束,或是外键参照采取一些逻辑上的参照而非物理外键约束,或是不为数值增加范围约束等等。这些都可能造成数据源的一些质量问题,在数据剖析中,要将这些一一暴露出来,只有去扩展原来的数据字典。最简单的就是将数据源的数据字典导出来,手工补充主键、外键、空值等约束。

为什么要建立这种元数据?大多是因为数据源和后续的数据仓库系统是不同厂商去做的,当到最后报表、应用中发现数据质量问题,根本无法定位是数据源本身的问题还是BI厂商对业务的理解或是ETL的失误造成的。因此,这种元数据就是非常急迫地等待建立,支持产生数据源质量报告,以区分职责。

上面的三种元数据建立仅仅是改善数据质量的第一步,可能大家很快就发现,会缺乏一些实际的工具和数据结构来维护这些元数据,连着第一步都很难开始。

其实并不是需要好的工具才能开展这些的,先使用excel将这些元数据维护起来。数据流其实是最容易维护的一种,在ETL开发中(甚至是之前)维护就可,至于结构,可以是简单的(源,目标,过程)。如果有一种工具,能够依据这样的结构,"刷刷"地出来一个流程图,每个节点就是数据集,节点之间的箭头表示过程,那就更一目了然了。

质量度量元数据会复杂一些,耗时也会多,它的结构在以后将曾经实践过的贴出来参考一下。开始也是用excel维护的,但后来还是放到数据库中,便于后面的自动稽核操作。

最后的数据剖析元数据,相信如果你使用专门的Data Profiling工具,它会有这样的功能帮你维护,然而现在国内很少有用这样的工具。于是,可能需要你自己用土方法维护了。结构可以先按照数据字典的结构来,只是在它基础上补充约束信息即可。而之后的实际剖析,如果没有工具,只能自己写些程序,SQL语句足矣。开始可以仅仅处理一些诸如主键重复、外键、空值、字段非法等。不管如何先搭起个架子起来吧。

喔,花了一中午的整理了这些,当然,这并非是任何环境下都适用的,如果有兴趣的,可以按照这些步骤来实践。出现了问题,咱们可以进一步探讨,不断优化嘛。

昨天看到关于一种关于元数据的定义,“就是描述数据的数据”,并且给出了一个比喻,“小强住在哪,住在旺财的隔壁.......旺财住在哪,住在小强的隔壁.”

我记得我们在上学时,foxbase里学什么是数据字典,老师讲说“描述数据的数据”,我琢磨了很久都没有理解。

后来工作中同事的口语中把字典表叫数据字典,比如物业公司编码表等。

后来又经历了很多次考试,似乎是理解是数据字典的含义,但是又和元数据放在一块比较的时候,偶这小脑袋又不够使了-_-!

责编:姜玲
vsharing 微信扫一扫实时了解行业动态
portalart 微信扫一扫分享本文给好友
著作权声明:kaiyun体育官方人口 文章著作权分属kaiyun体育官方人口 、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。
畅享
首页
返回
顶部
×
畅享IT
    信息化规划
    IT总包
    供应商选型
    IT监理
    开发维护外包
    评估维权
客服电话
400-698-9918
Baidu
map