ODI使用技巧_01利用变量实现增量抽取

来源:互联网 发布:unity3d小球下落很慢 编辑:程序博客网 时间:2024/06/11 00:24

ODI使用技巧_01利用变量实现增量抽取

有时候由于数据量较多,我们不想每次都进行全表覆盖,如果你的源数据有规律增长的ID或者时间戳,就可以使用自定义变量的方式进行增量抽取。

进行本章之前需要先做以下前提工作: 
1、有创建好的项目 
2、已经将源数据和目标数据创建到模型中

如果前提工作已经做好,可以参考以下步骤进行设置:

1、 新建变量,输入变量名称,如果变量较多建议采用前缀来区分,因为是不能分文件夹的。 
这里写图片描述

2、设置变量属性。

【定义】标签页: 
- 数据类型:字母数字、文本、数值、日期。根据需要进行选择。 
- 保留历史记录:该属性是设置是否将变量的历史值进行保存。如果值不是很大的话,建议保存,以便后续查找错误,如果要保存全部的话,要选择【所有值】。 
- 安全值:如果启用,代表该值为保密的安全值,将不进行任何记录。一般来说只有密码等信息回使用安全值。 
- 默认值:如果取不到值,则会采用默认值

【刷新】标签页: 
选择逻辑方案,设置查询语句。 
Oracle查询语句是不能带有分号的。 
点击右上方的【测试】按钮测试语句是否正确。 
点击右上方的【刷新】按钮,如果语句执行正确且前面选择的记录历史记录,那么在【历史记录】标签页能看到刷新的变量值。 
在这里我们设置该变量值为目标表.创建时间 的最大值。

这里写图片描述 
这里写图片描述 
这里写图片描述

3、增加过滤器 
在映射中的大部分位置均可以使用变量。在此处以过滤条件为例。 
在之前的【创建简单项目】教程中介绍了直接进行两个表映射的方法。 
此处在之前的基础上利用变量进行条件过滤。 
从组件栏拖动【过滤器】到映射的逻辑设计界面,并使用连接线将过滤器连接到源表和目标表中间。

注意:将FILTER的默认名称进行修改。要不然在后期任务一增多,重名的FILTER会创建相同名称的临时表,两个作业时间重叠的话会造成任务执行失败。 
这里写图片描述

4、设置过滤条件 
选中过滤器,在【属性栏】可以看到过滤条件的属性,点击过滤条件右边的设置按钮,打开设置窗口进行条件设置。 
在这里可以选用系统函数等,也可以直接选用项目变量。 
我们设置条件,设置源表的创建时间>变量值(即目标表的创建时间的最大值) 
这里写图片描述

5、验证映射 
将设计视图切换到【物理】标签页,可以看到物理结构已经有了变化。 
保存映射,运行。 
运行完毕后,在【操作器】–》【会话】中能看到运行会话的结果,如果哪一个步骤出现错误,也能看到具体错误信息。

此处会出现错误,或者没有错误出现,但是数据抽取的有问题。有可能是条件没有起作用,也有可能是变量的值为空。 
原因是 变量的值不能直接在映射中进行刷新,需要借助于程序包。

6、建立程序包 
这里写图片描述

将变量拖动到程序包的设计窗口 
这里写图片描述

将映射拖动到程序包的设计窗口 
这里写图片描述

设置第一步变量刷新成功后执行第二部的映射 
这里写图片描述

注意:第一步的变量的属性中一般信息设置为 【刷新变量】

保存程序包,运行程序包。 
此时应该能够正确增量抽取数据。

0 0