3

我正在尝试使用 Informatica 在平面文件中创建 AAA、AAB、AAC、AAD、....、BAA、BAB、BAC 等字符序列。我有创建字符序列的公式。

在这里,我需要在 informatica 中生成序列号。但是我没有任何源文件或数据库来拥有这个源。

当没有要读取的源记录时,Informatica 中是否有任何方法可以使用序列生成器创建序列?

4

4 回答 4

3

这有点棘手,因为 Informatica 将逐行进行处理,并且在您通过输入(文件或数据库)提供源行之前,您的映射不会初始化。因此,要通过 Informatica 转换生成 n 长度的序列,您需要输入 n 行。另一种解决方案是使用虚拟源(即具有一行的源),您可以从该源传递循环参数,然后使用 Java 转换和 Java 代码生成此序列。

于 2015-01-09T06:39:07.977 回答
1

如果没有映射中的源,就无法生成行。

当我需要这样做时,我使用以下方法之一:

  • seq使用Unix 下的命令生成包含所需行数的文件。它也可以用作直接管道源而无需创建文件。
  • 从数据库中获取行

例如,Oracle 可以使用分层查询生成任意数量的行:

SELECT LEVEL just_a_column
FROM dual
CONNECT BY LEVEL <= 26*26*26

DB2 可以通过递归查询来做到这一点:

WITH DUMMY(ID) AS (
    SELECT 1 FROM SYSIBM.SYSDUMMY1    
    UNION ALL
    SELECT ID + 1 FROM DUMMY WHERE ID < 26*26*26
)
SELECT ID FROM DUMMY
于 2015-01-09T22:07:25.260 回答
1

您可以使用 Java 转换生成行。但即使要使用它,您也需要一个来源。我建议您使用 Java 转换中的公式和带有 select getdate() 语句的数据库的虚拟源,以便返回记录以调用 Java 转换。然后,您也可以在 Java 转换中生成序列,或者将序列生成器连接到 Java 转换的输出以对它们进行编号。

于 2021-05-21T13:31:14.793 回答
0

即使源中没有序列号,我们也可以选择创建序列号。

  1. 创建一个序列生成器转换。您将获得 NEXTVAL 和 CURRVAL。

  2. 在属性选项卡中,您将有一个创建序列号的选项。

    • 起始值 - 它应该开始的值
    • 增量 - 增量值
    • 结束值 - 它应该结束的值
    • 当前值 - 您的当前值
    • 循环 - 如果您需要循环
    • 缓存值的数量
    • 重置
    • 跟踪级别
  3. 将 NEXTVAL 连接到目标列。

于 2016-02-23T06:36:29.873 回答