存档

文章标签 ‘data quality’

OWB 与ODI Data Profiling and Quality 比较

2009年3月2日 1 条评论

数据质量已经成为企业数据信息最重要的一部分, 而ETL工具提供的数据质量控制工具一直都是比较ETL工具强弱的重要部分.

数据质量的控制一般分为两个阶段,Data Profile 和Data Quality , Data Profile 简单来说就是计算出数据的各种统计值,比如唯一值,频率等等, 然后我们通过Profile 出来的结果判断出那些是有质量问题的数据,然后选择相应的解决方式. Data Quality 指的就是在我们知道了Data Profile 的结果之后,通过ETL过程清理掉那些有质量问题的数据.

Oracle 提供的两款ETL 工具OWB 和 ODI 都已经提供了数据质量控制的组件 , 现在来看一下这两个工具的功能如何.

分析的都是oracle 自带的示例方案, sh schema 里面的

OWB 的Data Profile 组件:

OWB 的界面布局和操作更加紧凑一些,喜欢所有东西放一起.

owb_aggregation

OWB 的Aggregation面板, 里面显示的是每一列的总体信息,最大值,最小值,唯一值个数, 其中上面的Six-sigma 是OWB 特有的, 数值为1-6 ,越高表示质量越好. 上面全部是7 , 表示完美,因为这个示例数据本身已经过滤过了的.

 

 

owb_datatype

OWB 默认的配置选项是探测数据类型的,上图还显示了每一列符合它所属的数据类型的百分比.

 

 

owb_domaini

OWB 最重要的一个界面.Domain 面板,Domain 在OWB 里面表示每一列的唯一值,上图就是显示了sales 表的PROD_ID 的Domain 统计情况, 注意左边设置里面的 "Domain Value Compliance Min Rows Percentage" 选的是1 ,  所以右边的PROD_ID 的唯一值的频率如果小于1% 就认为是有问题的数据(红色表示),

 

 

ODI 的Data Profile 组件:

ODI 的操作界面和操作方式简单而高效, 基本所有的方式都是点击下转. 而且界面响应速度要比OWB 快很多,整体的运行速度也比OWB 快, OWB 使用java swing 做的界面虽然摆脱了swing 做出的默认比较丑的样子,但是界面响应速度上总是感觉有延时. ODI 则响应速度快多了.

默认ODI 安装的时候不让选择安装语言,它会根据你的操作系统的语言安装相应语言, 而且进入ODI 后也不能设置语言环境,OWB 这点则好多了, 可以选择自己想要显示的语言.

 

odi_entity_metadata

想要进行Profile 项目首先创建Entity (实体), 里面分析的仍然是sh 的sales 表. 上面ODI 显示了, 总行数,最长行,最短行等.

 

odi_column

在左边项目里点击Entity 的属性,列出当前实体的所有属性总的统计信息. 之后在你想要看的某一列上右键点击,就可以选择下转到对应列的详细信息了.

 

odi_entity_column

上图中就列出了sh 的sales 表Amount Sold 列的信息, 其中列出唯一值,最小值,最大值,空值等.

 

odi_unique_column

你可以在列的唯一值上右键单击, 选择下转到详细的唯一值数据

 

odi_view_data

在选择的唯一值数据中,可以继续下转,细化到真正数据库中满足这些唯一值的数据

 

odi_join_metadata

ODI 的一大特色就是可以分析两表之间连接列的属性, 上图就显示了sales 表的PROD_ID 列和Products 表的PROD_ID 列的连接属性, 左侧匹配行,右侧匹配行,内部连接行等等. 你还可以点击连接属性选择生成维恩图. (维恩图大概从离开初中之后就没听过了,这是第一次听到,看来我初中的东西还没忘光,嘿嘿!!!)

 

 

ODI Quality Project 设定:

odi_quanlity_project

OWB 和ODI 都可以即时从Profile 结果中创建Quality Project ,  上图中看到的就是ODI 设置Quality Project  里面转换的属性,比如对Products 表不容许空值超过多少个,不容许某些特定列的特定值出现等.

 

odi_quanlity_setting

你也可以设置更细致的ODI 属性, 默认的ODI 是不进行数据类型检查的,OWB 会默认检查. 你也可以修改这些设定.

 

OWB 和 ODI 的性能

从操作上来说,OWB 的操作更为麻烦一些,任何东西都要先部署到Control Center , 然后还要编译, 然后才能运行使用。 ODI 的操作相对简单, 它不在一个界面显示过多的东西,任何信息都是一步一步点击, 界面的响应速度也很快.

从OWB 和ODI 运行Profile 的速度来看,ODI 也具有明显优势, 上面同样分析的是sh 的sales 表,OWB 即使已经编译部署到了Control Center , 对于92万条记录的数据量还是使用了180多秒, 而ODI 即使包括操作时间在内也只花了不到15秒时间,整个运行的速度还是差距很大.

 

OWB 和 ODI 在Data Quality Project 上比较

OWB 在数据清理上基本按照如下流程:

overview

从Profile –> Data Rules –> Corrections –> Mappings –> Load Cleanse 一条直线,其中Profile 之后可以选择自动让OWB 生成Data Rules, 它的Corrections 和 Mappings 也基本上都是向导操作,比较简单。而ODI 则没有类似功能,你要自己创建Quality Project, 然后手工创建ETL操作清理操作,不过好在速度很快,使用起来也很简单.

另外一个ODI 特有的功能则是ODI 有Time Series Data Quality Project, 它可以针对随着时间变化而持续跟踪数据质量的变化,这个功能主要针对对时间要求比较严的数据质量项目,可以提供更准确的随着时间变化数据质量是变好还是变坏的报告.

 

参考资料:

http://www.rittmanmead.com/2009/02/11/comparing-odi-and-owbs-data-profiling-and-quality-options/

建议大家看看rittmanmead 的这篇owb 与odi 的文章. 毕竟人家是owb 方面的专家.

 

http://www.gemini5201314.net/?p=17

我翻译OWB 教程的其中一篇,介绍如何进行data profile 的.

 

http://www.oracle.com/technology/obe/11gr1_owb/index.htm

otn 上介绍owb 使用的文章.

分类: ETL 标签: , ,