如何将 ODI 接口转换为 SQL 查询?

How to convert a ODI interface into an SQL query?

我正在从事 ODI 10 项目,该项目有 153 个接口,分为几个包。我想要做的是用 INSERT 语句创建一个 PL/SQL 过程,而不是有 153 个接口。这些接口或多或少相似,即它们具有相同的源 table 和相同的目标(在我的例子中目标是 Essbase Hyperion 多维数据集),转换和过滤器不同。因此,无论何时我必须更新列值之类的东西,我都必须打开 153 个界面并在每个界面中进行更新。在一个过程中,我可以很容易地做到这一点,我可以只替换所有值。

所以我觉得最好创建一个 PL/SQL 过程,这样我可以更好地维护代码。

有没有办法将接口转换为 SQL 查询?。我想要一个直接的数据转储,我不想做一个复杂的增量加载。我只是想截断 table 并加载数据。

提前致谢。

可以从日志表中的 Operator 获取 ODI 生成的 SQL 代码。它也可以在存储库中检索。

这里是一个查询 ODI 12c 的例子(10g 已经很久没有支持了):

SELECT s.sess_no, s.nno, step_name, scen_task_no, def_txt
  FROM SNP_SESS_STEP s, SNP_SESS_TASK_LOG t 
  WHERE s.sess_no = t.sess_no  
  AND s.nno = t.nno;  

从 ODI 11g 开始,还可以模拟执行而不是实际执行。此功能将只显示在 ODI Studio 中生成的代码,而不是 运行 它。

最后,升级到更新的 ODI 将允许使用 ODI SDK。有了它,您可以通过编程一次性更改所有映射。可重用映射也有帮助,因为听起来某些逻辑被多次实现。这将有助于减轻这些变化,同时保持 ELT 工具的优势(调度、监控、流程的可视化表示、跨技术……)。

免责声明:我是 Oracle 员工