ETL 表示 Extract(提取)、Transform(转换)和 Load(加载)。它包括将数据从源中进行移动和转换以使其进入目标的过程。在教程“搭建 Oracle Warehouse Builder 项目”中,您学习了如何定义连接您的源和目标模式的 Warehouse Builder 模块。现在,您将学习如何创建数据移动和转换逻辑。
在本主题中,您需要创建一个基本映射,以了解 ETL 设计在 Warehouse Builder 中的工作方式。您将 OE 示例模式用作向 DP_TGT 目标加载数据的源。
部署是根据逻辑设计或模型创建目标系统的过程。在您部署 ETL 映射时,部署过程会生成一个 PL/SQL 脚本。您需要以显式方式运行这些脚本才能执行 ETL。在部署映射之前,您应该已经部署了该映射引用的对象。
| 1. |
要进行部署,您必须启动 Control Center Manager。从 Tools 菜单中选择 Control Center Manager。
|
| 2. |
单击 DP_TGT_LOCATION 以使其高亮显示。在 Object Details 面板中,观察您定义的两个对象 SIMPLE_MAP 和 CONS_ORDERS,Design Status 设为 New,Deploy Status 设为 Not Deployed。
|
| 3. |
单击 Default Actions,将 Deploy Action 由 None 改为 Create。
因为已执行过其他教程,DP_TGT_LOCATION 下可能有许多其他的对象。要选择 SIMPLE_MAP 和 CONS_ORDERS 这两个对象,展开 DP_TGT_LOCATION > DP_TGT。
展开 Tables。展开 Mappings。按住 ctrl 键,选择 SIMPLE_MAP 和 CONS_ORDERS 这两个对象,然后单击 Default Actions,如下面的屏幕截图所示。
|
| 4. |
从 File 菜单中,选择 Deploy > To Control Center。
您可以在 Control Center 窗口右下角的 Control Center Jobs 面板中监视部署的进度。
在 Control Center Jobs 面板中,部署状态由“generate”变为“run”,然后变为“completed successfully”。映射已成功部署,为执行做好了准备。
要查看生成的映射代码,双击 Control Center Jobs 面板中的 HANDSON 作业。
注:如果您已在本系列的任何其他教程中执行过部署,则在此面板中您会看到多个作业。如果您在窗口中看到多个作业,请检查 Finished 列中的日期和时间,选择最近的作业。
|
| 5. |
在 Job Details:Handson 对话框中,单击 Script 选项卡。
注意:Warehouse Builder 为部署的映射生成一个 .pls (PL/SQL) 代码。要查看为 SIMPLE_MAP 生成的代码,选择 SIMPLE_MAP 并单击 View Code。
向下滚动代码窗口,检查所生成的代码。从 Code 菜单中选择 Close。然后在 Job Details 窗口的 File 菜单中,单击 Close 退出。
|
SIMPLE_MAP 映射的设计是为了利用 JOINER 运算符选择 OE.ORDERS 和 OE.ORDER_ITEMS 中符合联接条件的行,然后将结果数据加载到 CONS_ORDERS 表中。
| 1. |
假设您没有退出 Control Center,展开 DP_TGT_LOCATION > DP_TGT > Mappings 并单击 SIMPLE_MAP。
|
| 2. |
从 File 菜单中选择 Start。
单击 Start,Control Center Jobs 面板切换至 Execution 选项卡。您可以在本面板中监视执行的情况。
要查看执行的详细信息,双击 Control Center Jobs 面板的 Job 列中的 SIMPLE_MAP。
|
| 3. |
在 Job Details:SIMPLE_MAP 对话框中,单击 Execution Results 选项卡,监视 Row Activity。
您可以获得目标表 CONS_ORDERS 中插入的行数。从 Job Details: SIMPLE_MAP 对话框的 File 菜单中,选择 Close。从 Control Center Manager 的 File 菜单中,选择 Close 退出。
|
| 1. |
在 Project Explorer 面板中,展开 DP_TGT 下方的 Tables。右键单击 CONS_ORDERS 并从菜单中选择 Data。
|
| 2. |
Relational Data Viewer 显示 CONS_ORDERS 表中的数据。上下或左右滚动以检查数据。从 Object 菜单中选择 Close Window 退出 Data Viewer。
|
| 1. |
在 Project Explorer 面板中展开 DP_TGT。以鼠标右键单击 Mappings,然后选择 New。
此时出现 Create Mapping 窗口。
|
| 2. |
在 Create Mapping 窗口中,键入 MAP_CUSTOMERS 作为该映射的名称。单击 OK。
Mapping Editor 启动 MAP_CUSTOMERS 映射。
|
| 3. |
在 Explorer 面板中,确保选中了 Available Objects 选项卡。展开 Oracle > OE > Tables。将 CUSTOMERS 表拖到画布上。单击最大化图标 ( ) 最大化 CUSTOMERS 运算符。
|
| 4. |
双击 CUSTOMERS 运算符中的 CUST_ADDRESS 属性。
在 Table Editor:Customers 窗口中,注意 CUST_ADDRESS 属性的数据类型。数据类型是 OE.CUST_ADDRESS_TYP,一个用户定义的数据类型。单击 OK。
|
| 5. |
要解释 CUSTOMERS 中的 CUST_ADDRESS_TYP,您需要使用 Expand 运算符。
从 Palette 中,将 Expand Object 运算符拖到画布上。此时显示 Add Expand Object 窗口。
|
| 6. |
在 Add Expand Object 窗口中,选择 CUST_ADDRESS_TYP,如下面的屏幕截图所示。单击 OK。
通过单击最大化图标 ( ) 最大化 CUST_ADDRESS_TYP 运算符。
|
| 7. |
从 CUSTOMERS.CUST_ADDRESS 拖出一条连接线指向 INGRP1.CUST_ADDRESS_TYPE。
|
| 8. |
注意该类型具有 COUNTRY_ID。要找到对应的国家名,您需要定义一个查找。
从 Palette 中,将 Key Lookup 运算符拖到画布上。将该运算符置于 Expand Object 运算符的右侧。Key Lookup 向导启动。在 Welcome 页面中单击 Next。
|
| 9. |
在 Name 页面中,接受默认名 KEY_LOOKUP。单击 Next。
|
| 10. |
在 Groups 页面中,接受默认组。单击 Next。
|
| 11. |
在 Input Connections 页面中,展开 CUST_ADDRESS_TYP > OUTGRP1 并选择 COUNTRY_ID。
单击 > 将 COUNTRY_ID 从 Available Attributes 列表移至 Mapped Attributes。单击 Next。
|
| 12. |
在 Lookup 页面中,单击下拉列表以选择含有查找结果的对象。展开 OE 并选择 CUSTOMER。
|
| 13. |
单击空白的 Lookup table Key 字段并选择 COUNTRY_C_ID_PK。
|
| 14. |
单击空白的 Input Attribute 字段。注意 COUNTRY_ID 已添加到 COUNTRY_C_ID_PK 下面。
选择 Lookup Table Key 字段中 COUNTRY_ID 旁边的 Input Attribute 字段下方的 COUNTRY_ID。单击 Next。
|
| 15. |
在 No-match Rows 页面中,在 Lookup Table Column 字段中 COUNTRY_NAME 的 Default Value 字段中输入 'UNKNOWN'(包括单引号)。单击 Next。在 Summary 页面中检查详细信息,然后单击 Finish。
|
| 16. |
如果您不能看到与下面屏幕截图类似的所有对象,请在 Mapping Editor 的工具栏中单击 Auto-Layout,使该映射恢复到默认大小。此外,您可以单击 Fit in Window 调整您窗口中的映射。
映射如下所示:
|
| 17. |
现在,您需要创建将转换后的数据加载到的目标表。
从 Palette 中,将 Table Operator 拖到画布上。
|
| 18. |
在 Add Table Operator 窗口中,选择 Create unbound operator with no attributes。输入 SCALAR_CUST 作为新的运算符名。单击 OK。将该运算符置于 Key Lookup 运算符的右侧。
|
| 19. |
从 KEY_LOOKUP.COUNTRY_NAME 拖出一条连接线指向 SCALAR_CUST.INOUTGRP1。
|
| 20. |
从 CUST_ADDRESS_TYP 中,选择除 COUNTRY_ID 外的全部属性,并拖出一条连接线指向 SCALAR_CUST.INOUTGRP1,如屏幕截图所示。
在 Connect Operators 窗口中,接受默认的选项 Copy source attributes to target group and match。单击 Go。单击 OK。
|
| 21. |
在 CUSTOMERS 中,按住 shift 键选择 CUST_FIRST_NAME 和 CUST_LAST_NAME,并拖出一条连接线到 SCALAR_CUST>INOUTGRP1 中。
在 Connect Operators 窗口中,接受默认的选项 Copy source attributes to target group and match。单击 Go。单击 OK。
|
| 22. |
最小化除 SCALAR_CUST 之外的全部运算符。
单击 SCALAR_CUST 运算符标题。在 Table Operator 属性面板中,针对 Loading Type 属性,选择 TRUNCATE/INSERT。
|
| 23. |
注意信息库中仍没有 SCALAR_CUST 表存在。
右键单击 SCALAR_CUST 标题并从菜单中选择 Create and Bind。
在 Create and Bind 窗口中,检查详细信息,单击 OK。表 SCALAR_CUST 已添加到 DP_TGT> Tables 下方。
映射创建完毕。从 Mapping 菜单中,选择 Close 退出 Mapping Editor。
|
| 1. |
展开 DP_TGT > Mappings。右键单击 MAP_CUSTOMERS 并选择 Generate。
此时显示 Generation Results 窗口。
|
| 2. |
单击 Script 选项卡。选择 MAP_CUSTOMERS 并单击 View Code。
|
| 3. |
检查生成的映射代码。注意代码中的 NVL,确保要有 ‘UNKNOWN’ 国家名、左边外部联接的 ANSI SQL 代码和 SQL 中的类型分割。
注: 此代码已可供部署。您也可以右键单击 MAP_CUSTOMERS 映射并单击 Deploy 以部署该映射。在本教程接下来的主题中,您将在 Control Center Manager 中生成、部署和执行该映射。
在 MAP_CUSTOMERS 窗口中,从 Code 菜单中选择 Close 退出。从 File 菜单中,选择 Close 退出 Generation Results 窗口。
从 Design 菜单中选择 Save All。在 Warehouse Builder 警告对话框中,单击 Yes 保存更改。
|
| 1. |
从 Tools 菜单中选择 Control Center Manager。
|
| 2. |
在 Control Center 中,展开 DP_TGT_LOCATION > DP_TGT。展开 Tables。展开 Mappings。
|
| 3. |
按下 Ctrl 键,选择 SCALAR_CUST 和 MAP_CUSTOMERS,如屏幕截图所示。注意这两个对象的 Design Status 都设置为 New,Deploy Status 都设置为 Not Deployed。
|
| 4. |
单击 Default Actions 将 Deploy Action 设置为 Create。
|
| 5. |
从 File 菜单中,选择 Deploy > To Control Center。
在 Object Details 面板中,Deploy Status 设置为 Success。
|
| 1. |
假设您没有退出 Control Center,展开 DP_TGT_LOCATION > DP_TGT > Mappings 并单击 MAP_CUSTOMERS。从 File 菜单中选择 Start。
|
| 2. |
单击 Start,Control Center Jobs 面板切换至 Execution 选项卡。您可以在本面板中监视执行的情况。
要查看执行的详细信息,双击 Control Center Jobs 面板的 Job 列中的 MAP_CUSTOMERS。
|
| 3. |
在 Job Details:MAP_CUSTOMERS 对话框中,单击 Execution Results 选项卡,监测 Row Activity。
您可以获得目标表 SCALAR_CUST 中插入的行数。
从 Job Details: MAP_CUSTOMERS 对话框的 File 菜单中,选择 Close。从 Control Center Manager 的 File 菜单中,选择 Close 退出。
|
| 1. |
在 Project Explorer 面板中,展开 DP_TGT 下方的 Tables。右键单击 SCALAR_CUST 并从菜单中选择 Data。
|
| 2. |
Relational Data Viewer 显示 SCALAR_CUST 表中的数据。上下或左右滚动以检查数据。从 Object 菜单中选择 Close Window 退出 Data Viewer。
|
在 Warehouse Builder 中,进程流用于管理映射和相关活动的执行,如使用 FTP 将文件上载到仓库机上,或者在加载过程中出现错误时通知管理员。使用进程流,您可以定义多个映射的运行顺序,还可以根据执行结果定义操作。例如,在映射执行失败时发送通知邮件。Warehouse Builder 还允许您对进程流进行调度。
Process Flow Editor 包含各种不同的活动,您可以添加它们然后与转换连接以设计流。活动表示进程流中的工作单元。这些工作单元可以包含 Warehouse Builder 内部或外部的组件。转换指示启动活动的顺序和条件。
在开始设计进程流之前,您需要创建一个包括进程流程序包的进程流模块。进程流模块包括进程流程序包。进程流程序包是一个分组机制,用于确定您所能互联的进程流。运行期间,您可以启动一个进程流,它可以启动同一进程流程序包中的其他进程流。
| 1. |
在 Process Editor 的 Palette 面板中,将 Fork 活动拖到画布上。一个活动结束后,您可以使用 Fork 活动启动多个并发的活动。您也可以从 Explorer 面板的 Selected Objects 选项卡中拖出 Fork 活动。
|
| 2. |
在 Process Editor 中,单击 Explorer 面板中的 Available Objects 选项卡。展开 DP_TGT 并将 SIMPLE_MAP 映射拖到画布上。将该运算符置于 FORK 活动的右侧。
|
| 3. |
在 Explorer 面板中,确保选中了 Available Objects 选项卡。从 DP_TGT 将 MAP_CUSTOMERS 映射拖到画布上。
|
| 4. |
从 Palette 面板中,将 AND 活动拖到画布上,放到 SIMPLE_MAP 和 MAP_CUSTOMERS 映射活动的右侧。
|
| 5. |
将您的光标放在 Start 活动上。确保光标变为 ( )。从 Start 活动拖出一条直线(这些直线从现在起将被称作转换)指向 Fork 活动。
要拖动转换,鼠标指针必须变为 ( )。
-
从 START1 活动拖出一个指向 FORK 活动的转换。
-
从 FORK 活动拖出一个指向映射活动 SIMPLE_MAP 的转换。
-
从 FORK 活动拖出一个指向映射活动 MAP_CUSTOMERS 的转换。
-
从映射活动 SIMPLE_MAP 拖出一个指向 AND1 活动的转换。
-
从映射活动 MAP_CUSTOMERS 拖出一个指向 AND1 活动的转换。
-
从 AND1 活动拖出一个指向映射活动 END_SUCCESS 的转换。
在 Process Editor 工具栏上,单击 AutoLayout ( )。
所有活动与转换相链接后,进程流应当如屏幕截图中所示。
|
| 6. |
进程流设计已经完成。
从 Process Flow 菜单中选择 Generate 以生成 LOAD_PF 进程流。从进程流定义中生成的代码是业界标准的 XML 进程定义语言 (XPDL)。
在 Process Flow 菜单中,选择 Close 退出 Process Editor。
在 Design Center 中,单击工具栏上的 Save All ( )。在 Warehouse Builder 警告对话框中,单击 Yes 保存更改。
|
| 1. |
从 Tools 菜单中选择 Control Center Manager。在 Control Center 中展开 PFLOWS_LOCATION > PFLOWS。选择 PFLOWS。
在 Object Details 面板中,已选择进程流程序包 L_MAPS 用于部署。Design Status 设置为 New。单击 Default Actions 将 Deploy Action 设置为 Create。
注: 您将部署 进程流程序包,而非进程流。但是,您将执行 进程流。
|
| 2. |
从 File 菜单中,选择 Deploy > To Control Center。
进程流程序包 L_MAPS 已成功部署。
|
| 3. |
展开 L_MAPS(如还未展开)并单击 LOAD_PF 以选择它。
从 File 菜单中选择 Start 或单击工具栏上的 Start ( ) 按钮。
|
| 4. |
要查看执行的详细信息,双击 Control Center Jobs 面板的 Job 列中的 LOAD_PF。
在 LOAD_PF 对话框中,单击 Execution Results 选项卡,监测 Row Activity。您可以获得插入的行数。
从 Job Details: LOAD_PF 对话框的 File 菜单中,选择 Close。从 Control Center Manager 的 File 菜单中,选择 Close 退出。
LOAD_PF 进程流(一个非常简单的示例)运行两个彼此平行的映射,等待它们双双结束,然后继续。回想一下,由于您将目标表的 Loading Type 属性设置成了 TRUNCATE/INSERT,在执行此进程流时,Warehouse Builder 截取了这些行并把数据重新加载到了目标表 CONS_ORDERS 和 SCALAR_CUST 中。
您可以实现更为复杂的流,在这些流中您可以循环、设置参数和等待结果。您还可以决定根据条件和错误来遍历特定的分支,并使用通知和邮件创建完整的错误处理方案。
|