事务控制转换

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

事务控制转换是一种活动且连接的转换。它允许我们基于通过事务控制转换的一组行来提交和回滚事务。

提交和回滚操作非常重要,因为它保证了数据的可用性。

事务是由提交或回滚行绑定的一组行。我们可以基于不同数量的输入行来定义事务。我们还可以基于按通用键排序的一组行来识别事务,例如员工 ID 或订单输入日期。

当处理大量数据时,可能需要将数据提交到目标。如果提交执行得太快,那么它将成为系统的开销。

如果提交执行得太晚,那么在发生故障的情况下,存在丢失数据的可能性。因此,事务控制转换提供了灵活性。

在 PowerCenter 中,事务控制转换在以下级别定义,例如

  • 在映射内: 在映射内,我们使用事务控制转换来确定事务。我们在事务控制转换中使用表达式定义事务。我们可以根据表达式的返回值选择提交、回滚或继续,而无需任何事务更改。
  • 在会话内: 我们为用户定义的提交配置会话。如果集成服务无法转换任何行或将任何行写入目标,那么我们可以选择提交或回滚事务。

当我们运行会话时,集成服务会为进入转换的每一行评估表达式。当它评估已提交的行时,它会将事务中的所有行提交到目标。当集成服务评估回滚行时,它会从目标回滚事务中的所有行。

如果映射具有平面文件作为目标,则集成服务可以每次为新事务生成一个输出文件。我们可以动态地命名目标平面文件。 这是一个动态创建平面文件的示例 - 动态平面文件创建。

TCL COMMIT & ROLLBACK 命令

事务控制转换中有五个内置变量可用于处理操作。

  1. TC_CONTINUE_TRANSACTION
    集成服务不会对行执行任何事务更改。这是表达式的默认值。
  2. TC_COMMIT_BEFORE
    集成服务提交事务,开始新事务,并将当前行写入目标。 当前行在新事务中。
    在 tc_commit_before 中,当发现设置此标志时,将在处理当前行之前执行提交。
  3. TC_COMMIT_AFTER
    集成服务将当前行写入目标,提交事务,并开始新事务。当前行在已提交的事务中。
    在 tc_commit_after 中,先处理当前行,然后再执行提交。
  4. TC_ROLLBACK_BEFORE
    集成服务回滚当前事务,开始新事务,并将当前行写入目标。当前行在新事务中。
    在 tc_rollback_before 中,首先执行回滚,然后处理数据以进行写入。
  5. TC_ROLLBACK_AFTER
    集成服务将当前行写入目标,回滚事务,并开始新事务。当前行在回滚的事务中。
    在 tc_rollback_after 中,处理数据,然后执行回滚。

如何创建事务控制转换

按照以下步骤创建事务控制转换,例如

步骤 1:转到映射设计器。

步骤 2:单击工具栏中的转换,然后单击创建按钮。

步骤 3:选择事务控制转换。

步骤 4:然后,输入名称,然后单击创建按钮。

步骤 5:现在单击完成按钮。

步骤 6:我们可以将端口拖到事务控制转换中,或者可以在端口选项卡中手动创建端口。

步骤 7:转到属性选项卡。

步骤 8:然后在事务控制条件中输入事务控制表达式。

配置事务控制转换

以下是在事务控制转换中可以配置的组件,例如

  1. 转换选项卡:它可以重命名转换并添加描述。
  2. 端口选项卡:它可以创建输入或输出端口。
  3. 属性选项卡:它可以定义事务控制表达式和跟踪级别。
  4. 元数据扩展选项卡:它可以添加元数据信息。

事务控制表达式

我们可以在属性选项卡中的“事务控制条件”选项中输入事务控制表达式。

事务控制表达式使用 IIF 函数来检查每行是否符合条件。

语法

以下是事务控制转换表达式的语法,例如

例如

示例

在以下示例中,当 dept no = 10 时,我们将数据提交到目标,并且此条件为真。

步骤 1:创建一个以 EMP 作为源,EMP_TARGET 作为目标的映射。

步骤 2:使用转换菜单创建一个新转换,然后

  1. 选择一个事务控制作为新转换。
  2. 输入转换名称 tc_commit_dept10。
  3. 然后单击“创建”按钮。

步骤 3:将创建事务控制转换,然后单击“完成”按钮。

步骤 4:将所有列从源限定符拖放到事务控制转换中,然后将所有列从事务控制转换链接到目标表。

步骤 5:双击事务控制转换,然后在编辑属性窗口中

  1. 选择属性选项卡。
  2. 单击事务控制编辑器图标。

步骤 6:在表达式编辑器中输入以下表达式

  1. "iif(deptno=10,tc_commit_before,tc_continue_transaction)"。
  2. 然后单击“确定”按钮。
  3. 这意味着如果找到 deptno 10,则在目标中提交事务,否则继续当前处理。

步骤 7:单击上一个窗口中的“确定”按钮。

现在保存映射,并在创建会话和工作流后执行它。 当在数据中找到部门编号 10 时,此映射会将数据提交到目标。