数据质量的话题

  作者:丁西宁
2007/3/30 17:52:33
本文关键字: ttnn 2006年02期

前段时间太忙,老板开恩,提前放假了。对自己说,利用这个时间好好想想数据质量的问题吧,节后就会用上。

想想我们以前如何调试程序吧?比如用java实现个算法。算法可能要包括一些变量,保存中间的过程数据;有输入参数,用来让其他人调用;有输出参数,调用后实际的结果。如果按照面向对象方法来设计,算法会被设计成一个对象,与其他对象一起来完成某种服务,这就是现在流行的SOA。说远了!
现在发现结果数据有问题,该怎么调试呀?为了调试,除了利用现有的变量外,我们可能还会在对象中再多定义一些变量,然后在程序运行时在不同的语句位置上输出这些变量,看看这些保存中间过程数据的变量值是否与预期一样,最终定位错误发生的位置。这是手工测试!

调试程序的艰辛地球人都知道,为了调试,把程序弄得面目全非,到处贴的是膏药。所以出现了自动测试的工具,比如JUnit。JUnit可以说是一个测试的框架。
有兴趣可以看看JUnit的原理,看看有无可以借鉴的地方。

数据仓库中数据质量的问题比调试一个程序要复杂的多。多在哪?复杂在哪个环节呢?如果数据从数据源到数据仓库只是简单的复制的话,那么如果出现数据质量问题,我们会把目光的焦点集中到数据源身上;现在出现了ETL,也有叫ECTL的,是因为数据仓库和数据源的数据结构不同,不能简单的复制。也就是说数据质量现在有问题了,要怀疑的地方多了,数据源、ETL和数据仓库。

前两天ttnn论坛里面曾经讨论是否需要数据仓库的问题,是否直接把数据ETL到CUBE中去?这里暂且不谈。如果用后者的话,CUBE-多维数据库也是要考虑的地方。

数据源 -> ETL -> 数据仓库-> CUBE

先不去深入到各个部分内部去做详细分析,单从外部看这个数据流程,每个节点都包括输入和输出,我们能不能在每个节点处来判断输入和输出是否正确呢?我想这样做的目的就是明确数据错误的所在,是用手工的方法也好,是建立一个框架也好。

再往细分,深入到各个部分的内部去。

讨论数据源:数据源中的数据是否符合数据库的规则,主外键、各种约束,数据字典是否一致等等;

讨论ETL:包括设计问题(业务规则是否正确?是否有错误处理规则?)和实施问题(程序问题、网络问题);

讨论数据仓库:是否设立了主外键及各种约束。

上面试图描述如何分析一个问题。具体到数据仓库实施中还有一个问题就是需求的变化导致数据的变化,如何进行元数据的同步,从而保证数据的同步,就像调试java程序也一样,输入的参数变了,程序的规则可能改,也可能不用改。或者直接规则改了。

ttnn论坛里面有很多讲的很好的数据质量的文章,大家可以看一看,包括很多测试的方法,数据质量的定义、分级、如何进行元数据的同步。我想可以把数据质量中按照解决问题的难度来排个序,最难解决的不妨放到最后去解决:

我们解决任何问题的途径就是分析问题,明确问题,找出结果,结果是唯一的。如果错误发现了,谁都解决不了,就商量以哪个为主吧。


 

责编:丁西宁
vsharing微信扫一扫实时了解行业动态
portalart微信扫一扫分享本文给好友

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