存档

文章标签 ‘ETL’

ETL装载速度Greenplum vs Vertica

2009年3月20日 1 条评论

在08年底的时候vertica 宣布了它的ETL世界纪录,在57分21.51秒时间内装载了5.4TB 的记录,这项记录由Syncsort(一个DI 供应商)和Vertica 共同发布. 最近Greenplum 在mysql/fox interactive media 的应用也发布了一个ETL装载记录4TB/h.
vertica 的记录由16 two quad-core server blades and 16 storage blades in HP BladeSystem c-Class enclosures , 运行在Red hat Linux operation system 上.
Greenplum 则是在一小时装载4TB , 由40台Sun fire 4500 运行的greenplum 集群组成,Sun fire 4500 有2 dual-core AMD .

两个声明都是由供应商自己发出,取自客户的实例,只不过greenplum 的应用是在myspace/fox 上. 更加实际,Vertica 更像是一种实验性质的测试.
阅读全文…

分类: ETL 标签: , ,

ETL 控制中心

2009年3月3日 没有评论

不少ETL工具为了控制复杂的元数据,都有一个中央的控制台,像是OWB 的Control Center 应该每个使用OWB 的开发人员都见过了, Informatica 特有一个Matadata Manager 作为它的一个附加组件,ODI 同样也有一个基于WEB 的控制台oracledimn 可以让你连接到ODI 的repository 查看元数据.

ETL 的控制中心都是为了方便开发人员能在众多的元数据中更好的管理ETL ,其中有3个主要的目的是每个ETL 工具都想达到的, 调度,执行报告和可视化的数据流 (或者叫专业一点Data Lineage).

调度就是让开发人员能够定时的执行ETL 任务,或者手工的启动一个ETL 任务, 现在定时框架这么多(比如java 的quartz), 这个功能算是最基本的.

执行报告则是报告每个ETL 任务的执行次数,执行时间,执行者,执行结果,输入的参数,输出的参数,成功装载多少条,更新多少条,失败多少条,删除多少条等等.

Data Lineage 则是搞清楚整个数据的流向问题,某个转换数据源有哪些字段,输出到哪里,这可以帮助ETL 开发人员更好的理清ETL 开发的思路。

 

OWB 的控制台

owb_cc_execution

在OWB 里面,你执行一个ETL 任务之后,你可以查看执行的结果,上图中的Row Activity 显示了数据的插入数,更新数,删除数,如果执行失败了,当然也会在下面面板的Job Summary 里面显示.

 

owb_cc_data_lineage

OWB 的data lineage 图形可视化做的非常标准,里面可以非常清楚的看到对象与对象之间的关系,你想要查看任何一个转换使用了那些数据源字段和目标字段都一清二楚.

 

ODI 的控制台

ODI 在安装包内也提供了一个WEB 的控制台,在oracledimn 文件夹下,你可以把它放到任何一个java web 容器里埋你比如tomcat 的webapp 目录下就算部署好了, 它需要能够连接你的ODI 使用的repository 的数据库. 比如它默认环境的demo repository (hsqldb) , 然后进入http://localhost:8080/oradimn , 选择repository 就是OracleDI local repository , 默认的用户名密码就是ODI 的demo repository 的admin 用户名和密码( SUPERVISOR和SUNOPSIS ) , 如果你使用的是自己建立的repository , 修改它WEB-INF 目录下的snps_login_work.xml 文件就可以了.

odi_cc

登录进去之后的界面差不多就上图, 左边导航栏包含了所有ODI 的元数据管理项了, 其中 执行菜单 下面的计划程序里面就可以安排定时执行的任务, 而 元数据菜单 下的 数据沿袭 就是展现ETL 任务的数据流的 (Data Lineage 翻译成沿袭还真是不太习惯)

 

Informatica Matadata Manager

informatica 的元数据控制台是matadata manager , 默认是不包含在powercenter 里面的,跟它的Data Analysis 是属于额外组件,需要另外的license .

如果谁有informatica data analysis/matadata manager 的license 请给我一份(8.1.1 sp4 的)

informatic_metadata_manager1

 

informatic_metadata_manager2

 

informatic_metadata_manager3

 

 

informatica_metadata_manager4

 

informatica_metadata_manager5

 

informatica_metadata_manager6

 

informatica 的控制台可以说是做的最好的一个,其中它的metadata report 就有不少,从各个角度报告元数据的使用情况,而且查询条件非常细.

它的data lineage 也是非常的强,一个字段,一个字段都计算的非常的细, 最后一个图还显示了它的workflow 的其中一个transformation 的数据流动(浅黄颜色表示),字段,输入,输出,表达式.

 

 

最后

ETL 的元数据管理已经越来越重要,而且不少公司都已经认识到了不光要做好ETL工具的使用,而且管理元数据也同样重要. 商业的ETL 工具在这方面已经做得非常好了, 上面介绍的3种算是非常优秀的, 相比之下,开源的ETL 工具在这方面就要差很多. 不过成本也是另外一个非常重要的考虑方面,就看各自的需求了.

除了使用成熟的ETL工具之外, 不少公司对于ETL 也有自己的一套架构,比如使用ETL 编程框架 或是手工代码+sql 类型, 不太清楚这方面如果公司需要管理元数据会有怎么样的一个思路,感觉上如果使用ETL 编程框架或者手工代码+sql 的方式,元数据产生的过程不容易收集,如果只是调度还比较简单, 但是执行报告 尤其是 data lineage 怎么做就……  ,  如果哪位有这方面经验不妨交流交流.

分类: ETL 标签: , , ,

Oracle Warehouse Builder 11g 教程 Part 5

2008年7月27日 没有评论

本系列教程翻译自OTN官方文档,为OWB的系列教程,全教程共12篇文章,我只介绍启中5篇,主要是想通过此教程向大家介绍OWB工具的的基本使用方法和数据仓库建模方法,由于水品有限,只能大体上保证翻译的通顺,如有任何不足之处请参考官方OTN文档.,文中很多英文词汇未翻译主要是为了配合截图

这系列文章也同时发表在itpub 上:

http://tech.it168.com/d/2007-12-28/200712271916501.shtml

http://tech.it168.com/d/2008-02-15/200802141542372.shtml

http://tech.it168.com/d/2008-02-27/200802271433072.shtml

转载注明出处 http://www.gemini5201314.net

原教程索引: http://www.oracle.com/technology/obe/11gr1_owb/index.htm

原教程列表如下:

1. Starting::

1 Starting with Oracle Warehouse Builder 11g Release 1 1

2 Working with Flat File Transactional Data

3 Designing the Relational Target Warehouse 5

4 Designing ETL Data Flow Mappings

5 Deploying Objects in the Target Warehouse

6 Loading the Target Warehouse

2. Extending:

1 Setting Up the Oracle Warehouse Builder Project 2

2 Examining Source Data Using Data Profiling 4

3 Matching and Merging Records

4 Extracting, Transforming and Loading Data 3

5 Modeling the Target Schema

6 Using Experts to Automate Warehouse Builder Tasks

只翻译其中5章,顺序如列表所示,本文所有图片来至OTN.,部分专业词汇尽量附上原英文单词.对于与程序有关的词汇尽量不翻译并给出原英文单词.,一些截图中的按钮部分单词也尽量是原文。

设计关系型目标数据库

http://www.gemini5201314.net

目的

用Oracle Warehouse Builder 来设计关系型数据库(从3范式到维度)模式可以让你的数据仓库发挥最大作用,同样的,你可以设计一个多维数据库来提供更高要求的分析需要。

在这节课中,你会建立一个小型的立方体包含两个维,这个数据仓库的原数据是文本文件

注意:这节课中的脚本只在OWB11g中有效。

主题

这节课包含如下主题

总览

先决条件

定义一个目标数据仓库模块 (略过)

创建一个外部表 (略过)

设计一个维

设计一个立方体

总结

总览

OWB 提供高级的关系型和维度型建模能力,它让你定义关系型对象比如表,试图,物化视图,序列,外部表,和维度目标对象比如维度和立方体。

OWB 把维度的设计和实现直接分开,对于维度对象你可以只点击一个按钮来选择一个关系型实现或一个多维的实现方式,因此,同样的维度对象可以是现成一个关系型数据仓库或者一个多维数据仓库(在OLAP中实现)。

在这节课中,你将设计一个维度模型来实现一个关系型目标数据仓库,对于关系型建模,OWB 同时支持设计和实现 星型模型和雪花模型

你同时会设计实现一个简单的星形模型包含一个立方体引用两个维的外键

先决条件

在开始这篇课程之前,你应该

1. 下载owbdemo_files.zip 文件,解压缩到你的硬盘上

2. 完成课程1 和 2 ,并用rep_owner / rep_owner 登录

设计维

维是星形模型最重要的数据组织方式,一些通用的维度信息如客户,产品和时间。

一个维度包含一组层级(Level) ,一组层级关系(hierarchies),定义这些层级,用户总是使用这些已知的层级关系来下钻数据,查询的性能提升是因为查询优化器知道该如何选择那些数据可用。

为了创建一个维,你必须定义如下信息:

维属性 ( Dimension Attributes)

层级 (Levels)

层级属性 (Level Attributes)

层级关系 (Hierarchies)

在这节课程里,你必须执行以下步骤:

在Data Object Editor 里面检查预定义的PRODUCTS 维。

使用时间维向导创建REL_TIME 维

使用向导创建REL_CATEGORY 维

Data Object Editor 里面检查预定义的产品信息。

这节主题介绍一个维的示例,在创建一个维之前你可以查看已经存在的维来理解维的基本设计方式。

1. 在Project Explorer 面板里,展开OWB_DEMO > Databases > Oracle ,展开SALES_WH, 然后展开Dimension .右键点击打开PRODUCTS 然后选Open Editor.

注意:你也可以双击打开PRODUCTS

clip_image002

图1

启动Data Object Editor ,Data Object Editor 是一个单用户界面让你容易的设计,创建,管理多种数据库或维对象,Data Object Editor 是你使用图形(diagrams)和属性栏(property sheet) 来建立和修改各种数据模式的中心位置。界面应该如下图所示:

clip_image004

图2

2. 为了查看维属性,在Dimension Details 面板里点击Attributes 选项卡

注意维度有一个序列,PROD_DIM_SEQ ,这个序列是在装载数据的时候用的。

同样的,ID 属性被定义成了一个代理主键( Surrogate) 而SOUCE_ID 属性被定义成了业务主键(Business Key)

注意:维的主键列是维的主键并在每一个层级上使用代理主键的方式实现,使用序列的方式,你可以用唯一值来填满维的主键。

译者注:这句话有点绕口,因为维可以有两个理论上的主键,一个是代理主键,一个是业务主键,所以我们把其中的代理主键设成主键,但你也可以不设,只要保证值的唯一性就可以了,使用SEQUENCE 是一个简单的方法。注意下面的那张图

一个代理主键从序列装载数据的时候定义了每一个记录在所有层级上的唯一性,这是在维的主要字段指定的

一个业务主键定义了总是从数据源来的自然主键。

一个父标识符在你想使用基于值的层级关系时可用。

Descriptor 列,维属性被标记成Long DescriptionShort Description ,他们被用来在business intelligence tools (一个oracle 的工具)里面显示成员属性

点击Name 列,添加两个时间属性,VALID_FROM_DATE 和 VALID_TO_DATE ,详细信息如下图。

clip_image006

图3

3. 为了查看维的层级和层级属性,在Dimension Details 面板里点击Levels 选项卡来查看。注意其中有四个层级并且每个层级都有一组合适的属性,比如PRODUCT 层实现了所有的层级属性除了前面你定义的两个属性

为了使这两个时间字段适用与PRODUCT层级,点击Applicable 复选框:VALID_FROM_DATE 和 VALID_TO_DATE 属性,如下图所示

注意:一个层级并不需要实现所有的属性,在每个层级上保存这个层级的信息可以使你在一个层级上实现一个层级的维属性。(原文: A level is not required to implement all dimension attributes. Implementing a dimension attribute on a level enables you to store this information on a level.)

译者注:这句话翻译起来有点绕口,作者的意思大概是这样的:比如我们有一个地区 > 产品 的两级维,我们地区的所有属性比如地区主键,地区代号,地区名字,地区描述都可以传给下一个层级产品,而我们的产品可以有两个地区属性:一个是生产地,一个是销售地,甚至还可以包括消费者居住地地区信息,但是我们在实现产品这个维的时候,我们并不需要实现所有维信息尤其是当前维所继承的一些属性(这些属性比较不唯一),换句话说就是数据粒度的问题,我们在实现比较细粒度的维属性时不要包括了上层的粗粒度维信息

4. 在关系型实现里面,一个层级属性就是一个表的一列,层级属性并没有维属性相同的名字,不过OWB可以默认设置这个。

当你定义了层级属性的时候不要担心它们的顺序,这些层级只会被层级关系排序。

clip_image008

图4

为了查看层级信息,在Dimension Details 面板里面点击Hierarchies 选项卡,注意到里面只有一个层级关系,PROD_STD ,它的层级如下图所示的排序(从上到下的关系)

默认的Default 单选框可以在用户查询的时候使用你指定默认的层级关系,所以选择最常用的层级关系非常重要。

clip_image010

图5

5. 当你定义一个维的时候,你也可以定义缓慢增长维的策略

缓慢增长维(Slowly Changing Dimensions) 决定了你如何储存你的维的历史信息,你可以选择如图所示的三种策略

点击SCD 选项卡来决定PRODUCT维的SCD策略

clip_image012

图6

注意:Type 2 和Type 3 的SCD只在Enterprise ETL 选项里才有(当你只有Core ETL 功能的时候,SCD 里面只有Type 1可选,如果你只使用Core ETL功能并且你不打算执行这一步,你可以跳过下列操作),这个步骤只是检查一些信息,并没有和后面的步骤有联系。

如果你想保存完整的历史变化信息,选择Type 2 实现,点击Type2 : Store the complete change history

注意到Settings 按钮被激活了,点击Settings.

Type2 slowly changing dimension 对话框中,在Recording History 下拉列表中,选择你需要的属性:

Trigger History (触发记录历史信息):选择这个选项让你在创建一个新的记录的时候记录历史信息

Effective Date (有效时间起):选择这个选项可以让你记录一条记录开始活动的时间或日期

Expiration Date(失效日期)::这个选项可以记录一条记录失效的时间或日期

比如,你想当LIST_PRICE , NAME ,PACK_SIZE 其中任何一个变化的时候记录它的历史信息,把它们设置成Trigger History 属性,如下图所示,同样的,VALID_FROM_DATE 指定到Effective Date , VALID_TO_DATE指定到Expiration Date 属性。

clip_image014

图7

Type2 slowly changing policy 对话框里面点击Close 来关闭它

6. 你用OWB来设计一个维对象然后把它们部署到一个关系型数据库或者多维数据库,

在Storage 选项卡页面,你可以自己决定是把它们用关系型方法实现还是多维型方法实现。OWB会自动产生合适的代码

点击Storage 选项卡来查看PRODUCT维的实现方式,对于一个关系型实现,你可以选择 星形模型,雪花模型,或者手工方式。

clip_image016

图8

Data Object Editor 同样提供给你查看维里面数据的工具:Data Viewer

从Diagram 菜单,选择Close Window 来退出Data Object Editor

在下面的步骤中,你将要创建两个简单的跟EXPENSES相关的维,你可以在Data Object Editor 里面创建,但是在这节课中,我们将选择使用向导的方式创建维,这将提供给你一些默认值并使你通过简单的易于理解的方式创建维

使用时间维创建向导创建REL_TIME

时间维被广泛的应用于数据仓库中当作时间系列,比如季度(这个季度的花费和上年同季度的花费比如何)

时间维也由一组层级和定义这些层级的层级关系组成,你可以使用OWB创建财政时间维或者日历时间维

OWB可以使你不仅创建时间维而且可以预填充时间维,当你使用向导创建时间维的时候,OWB自动的创建了映射并填充了数据

同样的,这些装入的数据符合时间维的OLAP标准属性

现在,你使用时间维向导来创建REL_TIME时间维

1. 你先前检查了SALES_WH 模块,现在,展开EXPENSE_WH ,右键点击Dimensions 并选择 New > Using Time Wizard

clip_image018

图9

2. 在Name and Description 页面,输入REL_TIME作为时间维的名字,点击Next

clip_image020

图10

3. 在Storage 页面,选择ROLAP : Relational storage 作为维的实现方式

clip_image022

图11

4. 在Data Generation 页面,你选择创建时间的范围,这个信息用来产生预定义的映射并填充时间维,在这个映射里,你输入的值将作为一个参数,这个映射将在最后一步得到

对于Start Year , 输入2003并输入3作为Number of years ,确定Calendar 被选中, 如下图

注意:在时间维里面的层级关系定义了一组相临近的层级之间的层级关系,一个时间维可以有一个或多个层级关系,每一个层级关系必须指定是财政层级或日历层级

如果时间维由财政数据组成,你必须指定start month 和财政年的日期和财政周开始的日期,你也需要指定月和季度的边界,可以是445或544

clip_image024

图12

点击Next

5. 在Levels页面,选择Normal Hierarchy并选择:Calendar Year, Calendar Quarter, Calendar Month 和Day,点击Next

clip_image026

图13

6. 在Pre Creates Settings 页面,检查详细信息并Next

clip_image028

图14

一个进度对话框显示了向导创建必要对象的进度

clip_image030

图15

在成功完成后,点击Next ,在Summary 页面,检查一遍详细信息并点Finish

注意到向导创建了四个必要的对象,REL_TIME维对象,REL_TIME_SEQ序列用来产生代理主键的,REL_TIME表用来支持时间维的物理存储方式的,还有最重要的REL_TIME_MAP对象来产生时间维映射的

clip_image032

图16

如果你好奇REL_TIME_MAP对象长什么样子,双击REL_TIME_MAP启动Mapping Editor

从View 菜单,选择Auto Layout,你可以看到扩展后的映射,你可以上下移动或放大缩小来查看这个映射,OWB自动创建这个映射来提高你的效率和节省时间

clip_image034

图17

你已经完成了创建REL_TIME时间维,下一步,你将要创建REL_CATEGORY维

使用向导创建REL_CATEGORY

1. 在EXPENSE_WH模块中,右键点击Dimension ,选择New > Using Wizard

clip_image036

图18

2. 在Name and Description 页面,输入REL_CATEGORY作为维的名字,点击Next

clip_image038

图19

3. 在Storage Type 页面,选择ROLAP : Relational Storage 来指定维的实现方式,点击Next

clip_image040

图20

4. 在Dimension Attributes 页面,你找到预定义的列,ID,NAME,和DESCRIPTION,注意对于ID属性选择Surrogate (代理主键),对于Name属性选择Business

你可以随你喜欢改变这些值,但你必须有一个代理主键和业务主键,代理主键标识符必须是数字类型

对于NAME属性,把Length变成30,点击Next

clip_image042

图21

5. 在Levels页面,输入下面层级信息作为维的默认层级关系

CATEGORY (Description: Accounting Category)

TYPE (Description: As entered on Expense Report)

clip_image044

图22

6. 在Level Attributes页面,对于每一个你定义的层级,你选择维属性应用到那一层,接受默认选择并点击Next

clip_image046

图23

7. 在SCD页面,保持默认的SCD选项选中,点击Next

clip_image048

图24

如果你有其他要求,OWB默认实现最低层级的层级关系并创建时间属性(VALID_DATE 和 EXPIRED_DATE)

Pre Create Settings 页面,点击Next ,维创建进度条出现,成功完成后,选择Next,点击Finish 关闭Summary 页面

注意到REL_CATEGORY已经被添加到了EXPENSE_WH目标模块,对于维,OWB会默认创建一个表用星型模型来实现并且也会创建一个序列来填充ID 列

clip_image050

图25

设计立方体

立方体包含到一个或多个维的连接,立方体的轴包含维的值,立方体的身体包含度量值,大多数度量都是数字类型并且可加减,比如,销售数据可以组织成一个立方体包含时间,产品,和客户维并且身体包含度量值销售额和美元销售额

在一个关系实现中,一个立方体用外键约束连接到维表并且包含一组维,为了创建一个立方体,你必须定义下列对象

立方体度量(Cube Measures

立方体维度(Cube Dimensionality)

你执行以下步骤:

在Data Object Editor里面检查预定义的SALES立方体

使用向导创建REL_EXPENSE立方体

让我们先检查预定义的SALES立方体的度量和维度

在Data Object Editor里面检查预定义的SALES立方体

这个主题向你介绍一个实例立方体,通过查看一个已经存在的立方体,你可以理解设计一个立方体的基础,后面的主题中,你使用向导创建一个简单的立方体引用到expense 模块

1. 在Project Explorer 面板里,展开OWB_DEMO > Databases > Oracle ,展开SALES_WH , 然后展开Cubes ,右键点击Sales ,然后选择Open Editor.

注意:你也可以双击SALES

clip_image052

图26

2. 在Dimensional 面板里,向上或向下拖动来理解设计图,你将会看到SALES立方体连接到5个维:PRODUCTS , CHANNELS , CUSTOMERS , PROMOTIONS 和TIMES

clip_image054

图27

3. 在检查了SALES立方体后,在Cube Details 面板里点击Dimensions 选项卡,注意其中SALES立方体连接维的层级

比如,SALES 立方体引用了PRODUCTS 的PRODUCT层级,Role 列显示了一个下拉框,里面包括了一个我们选择的维所包含的维角色信息

clip_image056

图28

4. 为了检查SALES立方体的度量信息,点击Measures 选项卡,注意到三个度量都是数字类型,这些度量可以聚合产生总花费,数量,或一段时期或者一个特定的消费者或一个特定产品的销售数量

clip_image058

图29

5. 点击Aggregation 选项卡来定义每一个维的聚合方式

你选择聚合方式来聚合数据,你也可以对于每一个立方体所引用的维预计算这些度量,默认的集合方式是SUM

你必须指定下列值

Cube Aggregation Method: 选择聚合方式来聚合数据,默认的是SUM

Summary Refresh Method: 选择数据刷新方式,你可以选择ON DEMAND 或者ON COMMIT

Summary Strategy for Cube: 定义对于每一个维的层级的预计算方式

clip_image060

图30

6. 你可以实现一个关系型或者一个多维型实现,在关系型实现中,一个关系型表储存数据,当使用多维实现的时候,一个分析区(Analytic Workspace)储存数据

如果你想改变一个立方体的实现方式,点击Storage选项卡,你可以在关系型实现和多维型实现之间选择

对于关系型实现,你可以选择创建Bitmap index, 有这些索引可以提高查询时间的性能

clip_image062

图31

对于维,你可以用Date Viewer 来查看立方体的数据,从Design 菜单选择Close Window 来关闭Data Object Editor

使用向导创建一个REL_EXPENSE立方体

现在,你要创建一个简单的关系型立方体,REL_EXPENSE, 这个立方体引用两个前面已经创建的维:REL_TIME和REL_CATEGORY , 这个向导将帮助你使用简单的几步创建立方体

1. 前面你已经查看了SALES_WH模块,现在,切换到EXPENSE_WH模块,右键点击Cubes,然后选择New > Using Wizard.

clip_image064

图32

2. 在Name and Description 页面,输入REL_EXPENSE 作为立方体的名字,点击Next

clip_image066

图33

3. 在Storage Type 页面,选择ROLAP : Relational Storage 作为立方体的关系型实现,点击Next

clip_image068

图34

4. 在Dimensions 页面,你选择你的立方体要引用的维,从左边的Available Dimensions 展开EXPENSE_WH。选择EXPENSE_WH 点击 > 按钮移动到右边。点击Next

clip_image070

图35

5. 在Measures 页面,输入EXPENSE作为名字,点击Next

clip_image072

图36

Summary 页面,查看cube 的详细信息,点击Finish

注意到REL_EXPENSE立方体被添加到了EXPENSE_WH模块的下面,在Data Object Editor 里面查看立方体,右击REL_EXPENSE并选择Open Editor 或者双击REL_EXPENSE 检查立方体,然后关闭Data Object Editor

clip_image074

图37

Design 菜单选择Save All 来提交你的工作

clip_image076

图38

总结

在这节课程中,你设计了一个关系型星型模型立方体连接到两个维

这节课程中,你学会了

创建一个目标用户模式和模块

创建一个外部表指向两个简单的文本文件

使用向导创建维包括一个时间维

使用向导创建一个立方体

注意一点,你设计了维对象,这些实现对象与序列,或一些数据装载程序(映射)有关,但是这些对象并不存在物理的数据中,这是OWB提供最主要的功能来分开逻辑上的设计和物理上的实现

为了真正的创建目标数据库,你需要进一步部署这些维对象和立方体,你同样需要设计,部署和执行ETL映射来装载数据,把数据从关系型数据库或文本文件转换到我们想要的格式并最终把这些数据加载到维和立方体表中

分类: ETL 标签: ,