OWB 与ODI Data Profiling and Quality 比较
数据质量已经成为企业数据信息最重要的一部分, 而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面板, 里面显示的是每一列的总体信息,最大值,最小值,唯一值个数, 其中上面的Six-sigma 是OWB 特有的, 数值为1-6 ,越高表示质量越好. 上面全部是7 , 表示完美,因为这个示例数据本身已经过滤过了的.
OWB 默认的配置选项是探测数据类型的,上图还显示了每一列符合它所属的数据类型的百分比.
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 这点则好多了, 可以选择自己想要显示的语言.
想要进行Profile 项目首先创建Entity (实体), 里面分析的仍然是sh 的sales 表. 上面ODI 显示了, 总行数,最长行,最短行等.
在左边项目里点击Entity 的属性,列出当前实体的所有属性总的统计信息. 之后在你想要看的某一列上右键点击,就可以选择下转到对应列的详细信息了.
上图中就列出了sh 的sales 表Amount Sold 列的信息, 其中列出唯一值,最小值,最大值,空值等.
你可以在列的唯一值上右键单击, 选择下转到详细的唯一值数据
在选择的唯一值数据中,可以继续下转,细化到真正数据库中满足这些唯一值的数据
ODI 的一大特色就是可以分析两表之间连接列的属性, 上图就显示了sales 表的PROD_ID 列和Products 表的PROD_ID 列的连接属性, 左侧匹配行,右侧匹配行,内部连接行等等. 你还可以点击连接属性选择生成维恩图. (维恩图大概从离开初中之后就没听过了,这是第一次听到,看来我初中的东西还没忘光,嘿嘿!!!)
ODI Quality Project 设定:
OWB 和ODI 都可以即时从Profile 结果中创建Quality Project , 上图中看到的就是ODI 设置Quality Project 里面转换的属性,比如对Products 表不容许空值超过多少个,不容许某些特定列的特定值出现等.
你也可以设置更细致的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 在数据清理上基本按照如下流程:
从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 使用的文章.