ODI并发问题解决

更新时间:2023-12-08 00:38:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

ODI 并发解决方案

文档说明

ODI接口本身并不支持并发,但是可以通过变量自定义临时表前缀的方法来实现接口的并发执行。参照一些资料,理论上应该有两种方法:一是设置全局变量;一是修改知识模块,在知识模块中设置变量。经测试,第一种方法未成功,此文档以第二种方法为例说明实现方法。

ODI接口的操作流程

一个ODI接口,一般主要由3部分组成,源数据表、目标数据表及数据操作方式, 而数据的操作方式都是由ODI的知识模块定义的。

ODI接口的数据操作主要包括:加载数据,数据集成和数据控制。

以一个简单的接口为例来说明接口的数据操作流程:

接口在运行过程中会创建并使用以下表:

加载数据用的临时工作表,默认以C$_前缀 集成用临时表,默认以I$_为前缀

控制用永久表,SNP_CHECK_TAB,这张表是永久存在的

实现并发的设置

以知识模块LKM SQL to Oracle为例,双击打开该知识模块里的内容,其实很像项目里的过程,如下图:

在“详细资料”中,就能看到该知识模块对数据操作的整个流程,双击中间的每一步即可查看它内部的代码:

这里可以看到一共有十个步骤,该知识模块本身应该只有从顺序号20以后的步骤,第一个步骤是自定义的(一定要放在顺序的第一个),用来设置前缀变量,其内容如下:

注意:技术要选择Java BeanShell。

命令中输入:,这条命令定义了一个类型为String(字符串)的变量vSess,odiRef.getSession(“SESS_NO”)是ODI内部的函数,用来获取会话的编号,整句话就是把当前正在执行的会话编码赋给变量vSess。至于是特定的语句标识。

修改物理方案中的工作表前缀:

将工作表的前缀修改为

错误:E$_ 加载:C$_ 集成:I$_

临时索引:IX$_

最后,这种方式要求必须将接口放在程序包里运行,另外,在设置完成后记得更新场景。

本文来源:https://www.bwwdw.com/article/7x6t.html

Top