【问题标题】:how to call Sequence function from SQL into Informatica如何从 SQL 调用 Sequence 函数到 Informatica
【发布时间】:2018-07-25 04:25:55
【问题描述】:
我在 Informatica 中的表达式转换中有一个端口“Number_1”。我将 Number_1 端口连接到目标 sql 表。
每次我运行从 1 到 999 的映射时,我都需要为此端口“Number_1”生成编号。一旦达到 999,Number_1 的值应再次重置为 1。我知道有序列生成器反式但我需要从 SQL 服务器调用序列函数。以上如何实现?
【问题讨论】:
标签:
informatica
informatica-powercenter
【解决方案1】:
在 sql server 中创建一个存储过程,然后使用存储过程转换从 Informatica 调用它
【解决方案2】:
您可以使用Stored Procedure 转换来调用它。您也可以在Source Qualifier 上使用存储过程作为 SQL 覆盖,但是...
我希望您知道自己在做什么,因为这通常是一个非常糟糕的主意。每次调用都需要在集成服务和数据库之间进行通信——这将导致巨大的延迟。因此,最好使用 Informatica 的 Sequence Generator 或者 - 如果您需要的只是一个带循环的整数端口 - 一个简单的表达式变量,也许更好。
【解决方案3】:
虽然 maciejg 说在性能方面很有意义 - 但是我知道有相当多的人比使用内置数据库排序器更舒服(甚至是一些 Informatica 专家)。
Informatica 定序器的关键在于它们提供了多大的灵活性,当它们设置错误时,可能会导致意外的数字被选中。
我的一个示例是用于在表中创建唯一键的定序器 - 如果您在会话之间保留该值,那么它可以正常工作,直到您在重新导入映射时选择了不正确的选项。
如果您选择从配置文件/表中查找您之前的结束值并将排序器生成的值添加到此值,那么有一天当有人错误地将排序器设置为在运行之间保持值时,您会突然之间每次重新启动会话时跳过序列中的那么多数字。原生 db 排序器非常基础,使其非常可预测且防呆