通过 ODI (Oracle Data Integrator) 调用 select 脚本

Invoking an select script through ODI (Oracle Data Integrator)

请问您对以下问题有何看法: 选项 1: 我手边有 select 脚本,它通过连接许多源 table 来获取数据并执行一些转换,如聚合(分组依据)、数据转换、子字符串等。 我可以通过 ODI 映射调用此脚本并且可以将 return 结果(转换后的数据输出)插入到 ODI 映射的目标中吗? 选项 2: 通过使用等效的 ODI 转换、函数、查找等将 select 脚本转换为等效的 ODI 映射,并使用各种 tables(连接子句中的 tables)作为映射源。 基本上开发 ODI 映射相当于提供 select 脚本加上目标 table 以将记录插入其中。 我需要知道上面两个选项的优缺点(如果选项 1 可行)。 是否仍然可以通过带有选项 1 的 ODI 跟踪转换错误、连接源 tables 和 where 子句条件相关错误等? 映射失败的日志文件将具有选项 2 提供的粒度级详细信息? 我仍然可以在知识模块启用流控制并将 select 脚本错误重定向到 ODI 提供的 E$_ 错误 tables 吗?

谢谢, 罗杰尼什

选项 1:ODI 12c 立即包含该概念。在映射的物理选项卡上,单击源节点(数据存储)。然后在属性窗格中,"Extract Options" 菜单下有 CUSTOM_TEMPLATE 选项。这允许输入自定义 SQL 语句,该语句将代替 ODI 生成的代码使用。

然而,随着时间的推移,它可能比选项 2 更难维护。SQL 比映射组件更不直观。另外,如果您需要批量更改它,那将更加棘手。可以使用 SDK 更改多个映射中的组件。更改 SQL 代码需要对其进行解析。您的操作员日志中的信息可能确实较少,因为 SQL 将被视为只是一个代码块。它也不会提供任何血统。

我相信使用流量控制会起作用,但我还没有测试过。

选项 2 需要更多时间才能完成,但您将受益于 ODI 的所有功能。

我个人的偏好是偶尔对非常复杂的 SQL 查询使用选项 1,但对大多数正常用例使用选项 2。