序列生成器转换

2024 年 8 月 29 日 | 4 分钟阅读

序列生成器是一个被动和连接的转换,它生成数字序列值,如 1、2、3 等。它不影响输入行的数量。

序列生成器转换用于创建唯一的主键值并替换缺失的主键。

例如,如果我们想将序列值分配给源记录,那么我们需要使用序列生成器。

序列生成器转换包含两个输出端口。我们无法编辑或删除这些端口,例如

  1. CURRVAL
  2. NEXTVAL

NEXTVAL

NEXTVAL 端口用于通过将其连接到转换或目标来生成序列号。 生成的序列号基于 Current Value 和 Increment By 属性。

如果序列生成器未配置为循环,则 NEXTVAL 端口会生成序列号,直到达到设置的结束值。

我们可以将 NEXTVAL 端口连接到多个转换,以便为每一行生成唯一值。

序列生成器转换同时创建一个数字块。 如果使用了数字块,那么它会生成下一个序列号块。

例如,我们可能会将 NEXTVAL 连接到映射中的两个目标表,以创建唯一的主键值。

集成服务为第一个目标生成 1 到 10 的数字块。 当第一个数字块被加载后,才会为第二个目标生成另一个 11 到 20 的数字块。

CURRVAL

CURRVAL 端口是 NEXTVAL 加上 Increment By 值。

仅当 NEXTVAL 端口已链接到下游转换时,我们才连接 CURRVAL 端口。

如果我们在没有连接 NEXTVAL 端口的情况下组合 CURRVAL 端口,则集成服务会为每一行传递一个常量值。

当我们在序列生成器转换中组合 CURRVAL 端口时,集成服务处理每个块中的一行。

我们可以通过仅连接映射中的 NEXTVAL 端口来优化性能。

示例:假设 STUD 将是一个源表。

在共享文件夹中创建一个目标 STUD_SEQ_GEN_EXAMPLE。 结构与 STUD 相同。 向目标表添加两个额外的端口 NEXT_VALUE 和 CURR_VALUE。

我们可以创建一个序列生成器转换以在单个映射中使用,或者创建一个可重用的序列生成器转换以在多个映射中使用。

可重用的序列生成器转换可以维护每个使用序列生成器转换实例的映射中的序列完整性。

序列生成器转换的属性

以下是配置序列数据对象和新序列的以下属性

属性描述
起始值生成的序列的起始值是使用循环选项时的集成服务。 如果我们选择循环,当集成服务到达结束值时,它会循环回到该值。
默认值为 0。
最大值为 9,223,372,036,854,775,806。
结束值集成服务生成的最大值。 如果集成服务在会话期间达到此值,并且序列未配置为循环,则会话将失败。
最大值为 9,223,372,036,854,775,807。
增量值NEXTVAL 端口中两个连续值之间的差。
默认值为 1。
并且它必须是一个正整数。
最大值为 2,147,483,647。
如果启用,集成服务将循环通过序列范围并从起始值重新开始。
如果禁用,集成服务将在配置的结束值处停止序列。 如果集成服务到达结束值并且仍然有行要处理,则集成服务将使会话失败并出现溢出错误。
重置如果启用,则集成服务会在映射完全运行后将序列数据对象重置为起始值。 如果禁用,集成服务会在映射运行结束后增加当前值,并在下一次映射运行时使用该值。
对于可重用的序列生成器转换以及使用可重用序列数据对象的不可重用序列生成器转换,此属性处于禁用状态。
跟踪级别集成服务写入映射日志的有关转换的详细级别。 我们可以选择简短、正常、详细初始化或详细数据。 正常设置为默认级别。
保持行顺序保持输入到转换的输入数据的行顺序。 如果集成服务不应执行任何可能更改行顺序的优化,请选择此选项。

示例

在下面的示例中,我们将生成序列号并按以下步骤将其存储在目标中,例如

步骤 1:创建一个目标表。

步骤 2:将创建的表作为目标表导入到 Informatica 中。

步骤 3:创建一个新映射并导入 STUD 源和 STUD_SEQUENCE 目标表。

步骤 4:在映射中创建一个新的转换,

  1. 选择序列转换作为类型。
  2. 输入转换名称,例如 seq_stud。
  3. 单击创建

步骤 5:将创建序列生成器转换,然后单击完成按钮。

步骤 6:将序列生成器的 NEXTVAL 列链接到目标表中的 SNO 列。

步骤 7:将源限定符转换中的其他列链接到目标表。

步骤 8:双击序列生成器以打开属性窗口,然后

  1. 选择属性选项卡。
  2. 输入起始值 =1 的属性,并将其他属性保留为默认值。
  3. 单击“确定”。

现在保存映射并在创建会话和工作流后执行它。

目标中的 SNO 列将包含由序列生成器转换生成的序列号。


下一个主题事务控制转换