您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 商业智能平台研究:ETL中的数据质量控制
商业智能平台研究:ETL中的数据质量控制来源:本站原创|作者:cognoschina网编|分类:数据转换|2011-4-1915:30正文评论(0)数据质量一直是ETL工具的一个高级特性,为了解释清楚这个问题,让我们看看oracle的商业ETL工具OracleWarehouseBuilder在数据质量上是如何管理的。ETL难以成功有以下几个难点:1.数据仓库的数据来自于多个数据源,所以数据的一致性很难得到保证,很多情况下需要一种硬性的标准来决定数据的取舍问题.2.数据格式问题,例如数据缺失,超出数据范围,无效数据格式等等。3.出现错误之后没有正确的处理问题,导致数据的质量不断的下降。4.数据一致性问题,处于数据库性能考虑,有时候可能会有意的去掉一些外间或者检查约束。5.业务逻辑问题.由于数据库在最初设计时就不够严格和谨慎。我们怎么判断数据的质量好坏的呢,一般用户拿原有系统的显示方式查看某一查询条件的数据与用商业智能报表所产生出来的数据进行对比,看有多大的出入,这个可能需要原先系统有足够的能力显示这些数据并且商业智能工具的报表有足够强大的查询和报表展示能力,或者是用商业智能的报表与OLAP运行出来的报表进行对比,看有多大的出入,出入一般都是会存在的,因为数据不可能完全的准确,但是一定要搞清楚哪里数据出现了问题,并且尽量不要让这些误差扩大到用户无法接受的地步,否则就认为BI失败了。(咋同是一个工具做出来的,数据的出入就这么大呢?)oraclewarehousebuilder提供三个特性来使ETL的过程简单1.GraphicalDataProfiler可以查看数据的结构,语义,内容,异常,和大纲,数据规则,这就是在前一篇说的,kettle的数据管理没有oraclewarehousebuilder强大的特性.kettle也提供查看表结构,column的结构,但是它不会判断一个column是不是主键或外键,一个字符串的最小长度是多少,最大长度是多少,一个整数的长度是多少,一个double的精度是多少。2.CorrectionWizard把数据规则应用到你的ETL过程中,自动映射并更正,清理,转化数据,相当于oraclewarehousebuilder提供一些默认的值来帮助你更快的创建映射规则,这个功能也比kettle强大。3.DataAuditor获取数据规则并监控数据转换的过程。kettle也提供数据监控的机制,并把log记入下来,并告诉你重复的记录数,读写多少条记录,更新拒绝多少条记录,时间,速度,步骤是否成功等信息.oraclewarehousebuilder提供查看选中表的结构信息和数据信息数据归档编辑器有很多面板。这些面板显示已归档的对象和归档的结果。为了方便解释,可以将整个面板分成6个部分,分别是左上角的面板(有两个tab)叫做1号面板,左边中间的property面板,叫做2号面板,左下角的monitor面板,叫做3号面板,右上角的ProfileResultsCanvas面板(有10个tab),叫4号面板,右边中间的DataGridPanal,叫5号面板,右下角的DataRulePanal,叫6号面板。1号面板显示已归档的表、视图、物化视图(oracle10g新加的特性)、外部表、维度和事实等对象以及已经创建的任何更正模块的详细信息。2号面板显示与数据归档关联的属性的列表。使用该属性列表,您可以优化数据归档的参数;启用或禁用某些数据归档组件并启用选定表的数据规则归档。3号面板是监视器面板。该面板显示已提交的所有归档作业的进度。数据归档需要时间,所以可以在后台完成的作业,同时执行其他OracleWarehouseBuilder任务;当作业完成时,OracleWarehouseBuilder会发出通知,kettle在执行监控上提供的信息比oraclewarehousebuilder多一些,包括速度和时间,还可以看到你启动多少线程组和线程,线程进行到那一步都显示的出来。4号面板提供最多的信息,所以分成了10格tab,包含大量归档结果汇总的tab。5号面板显示数据的统计信息,某一个column出现的值,出现的次数,占的百分比,有了这个功能,如果出现了错误的数据,将可以更容易的看到和清除。6号面板显示数据规则。其中4号面板有10个tab,其中有几个tab非常有用。(看上面的图)DataTypetab详细说明表中每列的列名,数据格式,主要的数据类型,主要的数据类型所占的百分比,数据的长度,最大值和最小值,主要的长度,主要的长度所占的百分比,类型的精度。其中所谓的主要长度类型在Date那一列为40%,可见有些值为空,它不光列出最小值和最大值,而且还有主要值的长度和它所占百分比,统计方面功能比较强大,这种初步的数据统计不知道算不算接近于OLAP分析,功能上比kettle强大些.UniqueKeytab显示检测到唯一键或主键的所有列。该选项卡还显示唯一值的数量多得足以建议删除或更正非唯一行时可以定义唯一键的列。你可以看到图中有SixSigma列。这是一个1到7之间的数字,它指明“每千个的缺陷”数量,即对象中未能通过唯一约束的行。ProfileObjecttab相当于kettle中的sql编辑器,显示所有的数据并加上查询条件。Domaintab为归档对象的每列显示建议的域,以及数据与该域的一致程度。域就是列的一组允许的值,OracleWarehouseBuilder认为出现两次或以上值的列就叫域。从图上看到,PACK_count,PROD_ID,PROD_NAME都是唯一性比较高的列,所以没有domain,这个面板同样也有SixSigma值。创建数据转化规则在它给出的例子中,MANUF_countRY的国家列包含NotKnown,Canada,USA,UK和Mexico,它想把所有的England转化为UK,在Product表中,把所有REORDER_YN为’N’的记录删掉,并使MARKET_SEGMENT表的所有值为’Economy’或’executive’.当你完成了数据规则的建立后,在实际转换的过程中,有可能出现你没有考虑到的情况,oraclewarehousebuilder提出了三种操作,Igore这个不用解释吧。Report在一个新建的ERR$$$表中记录下这条记录。数据继续转化。Cleanse应用转化规则来清理数据.如果没有什么特殊的原因,一般最好不要使用第一种策略,你即不知道有没有数据处错了,也不知道有多少数据出错了,这样很容易让你的数据误差越来越大,第二种Report策略能让我们知道那些数据出错了,并记录下来,当我们需要找到数据误差原因的时候,或者我们需要更正这些数据误差的时候有依据。当然如果我们真正的清楚数据转换规则的话,第三种策略是最好的,把这种误差消失在ETL的过程之中.其中对于应用了数据转化规则的列,oraclewarehousebuilder又提供四种策略来使数据达到我们想要的程度:1.Remove,把我们认为满足特定数据条件的数据删除,例子中就是要把REORDER_YN=Y的数据删掉。2.SimilarityMatch把不在我们规定的域内的数据自动更改为最接近的值,这个值是oracle用特定算法算出来的,我不清楚到底是怎么样的规则。不过我猜是不是按照字典的顺序来排序,谁接近就转化成谁,比如有applet,book,orange,如果要转化book的话,就把book转化为applet,因为b开头的单词比o开头的单词离的近一些,中文的话可能不会支持吧。当然,这只是我猜的.具体是怎么样只有问那些高手了。3.SoundexMatchoracle有一个函数叫做SOUNDEX,它是应用以下规则,保留首字母,把所有的元音a,e,i,o,u和w,y删掉。把剩下的字符串按如下数字相加b,f,p,v=1c,g,j,k,q,s,x,z=2d,t=3l=4m,n=5r=6如果两个或两个以上有相同的数字接近原来的值(在第一步之前),或者接近除去h和w的值,忽略掉除第一个字母以外的数字.返回4个字节。格式大概如下:selectname,SOUNDEX(namecol)FROMtest;select*FROMtestwhereSOUNDEX(namecol)=SOUNDEX(’SMITH’);以上例子摘自,如果你对算法有疑问可以自己去看看。4.Custom使用自定义的转化规则来清理数据,大多数时候都是使用这种方式。例子中的把MANUF_countRY的England转化为UK就是这种情况。在你进行数据转化之后,你对数据的质量满意了,你可以设置DataAuditor来监控以后传入的数据的质量DataAuditor使用定义的数据规则,生成关于数据的一致程度的统计报告,然后将其存储在错误记录表中。还可以对DataAuditor进行编程,指定DataAuditor在分数低于一定的阈值后向您发出通知,然后在特定情况运行清理映射来清理数据。运行该清理映射后,可以对DataAuditor进行编程,使其仅在设计分数高于特定级别或SixSigma值时才继续进行余下的ETL过程,避免将错误数据载入数据仓库,使数据仓库的质量能够得到保证。ETL是非常重要的一步,往往一个项目的成败就是看ETL过程的成功与否.选用一个好的ETL工具会让项目更加的有信心。
本文标题:商业智能平台研究:ETL中的数据质量控制
链接地址:https://www.777doc.com/doc-430598 .html