Informatica 中的事务控制转换(示例)

什么是事务控制转换?
事务控制是一种主动且相互关联的转换,它允许我们在映射执行期间提交或回滚事务。ping提交和回滚操作非常重要,因为它们可以保证数据的可用性。
处理大量数据时,有时需要将数据提交到目标位置。如果提交过于频繁,会给系统带来过大的开销;如果提交过晚,一旦发生故障,则可能导致数据丢失。
因此,为了提供灵活性,提供了事务控制转换。它不是将提交点保留为会话默认值,而是允许在会话内部设置条件。 地图ping 逐行确定一笔交易的结束位置和下一笔交易的开始位置。
TCL提交和回滚命令
此转换中内置了五个变量来处理操作。条件必须为每一行返回这五个变量之一,如果返回的值不在列表中,则集成服务将导致会话失败。
TC_CONTINUE_TRANSACTION
在 TC_CONTINUE_TRANSACTION 中,不执行任何操作,数据加载过程将继续进行。这是该表达式的默认值。
TC_COMMIT_BEFORE
在 TC_COMMIT_BEFORE 中,如果此标志被设置,则会在处理当前行之前执行提交操作。然后开始一个新的事务,并将当前行写入目标。
TC_COMMIT_AFTER
在 TC_COMMIT_AFTER 中,当前行处理完毕后,执行提交操作,然后开始下一个事务。
TC_ROLLBACK_BEFORE
在 TC_ROLLBACK_BEFORE 中,首先执行回滚操作,然后处理数据以进行写入。
TC_ROLLBACK_AFTER
在 TC_ROLLBACK_AFTER 中,数据处理完毕后,执行回滚操作。
事务控制转换属性
该对象在“编辑转换”窗口中进行配置,该窗口与其他 PowerCenter 转换一样,包含四个选项卡。了解每个选项卡包含哪些设置,可以省去以下演练过程中大量的查找工作。
| 制表 | 那里配置了什么? |
| 转型 | 转换的名称、转换描述以及对象是否可重用。 |
| 端口 | 输入和输出端口通常是通过从上游转换中拖入列而创建的。 |
| 物业 | 点击字段旁边的箭头即可打开“交易控制条件”按钮。 Tracing Level 已写入会话日志。 |
| 元数据扩展 | 用户自定义元数据与转换一起保存在存储库中。 |
真正起作用的是两个设置。 交易控制条件 该表达式通常是一个 IIF() 测试,返回五个变量之一。 Tracing 级别 决定在调查运行时,会话日志中显示多少有关转换的详细信息。
一个设置位于转换之外。当地图ping 包含有效的事务控制转换,会话运行于 提交类型 在“属性”选项卡上设置为“用户定义” 会议而不是 Target 或者使用固定提交间隔的源提交类型。
如何在 Informatica 中使用事务控制转换
在这个例子中,当部门编号 = 20 的条件为真时,我们将向目标提交数据。
步骤1) 创建地图ping 以 EMP 为源,EMP_TARGET 为目标。地图ping 设计画布随后包含源、其源限定符和目标定义。
步骤2) 使用“转换”菜单创建新的转换,然后在“创建转换”窗口中:
- 选择事务控制作为新的转换
- 输入转换名称“tc_commit_dept20”
- 选择创建选项
步骤3) 事务控制转换创建完成后,点击“完成”按钮。新对象现在会出现在画布上的“源限定符”旁边。
步骤4) 将源限定符中的所有列拖放到事务控制转换中,然后将事务控制转换中的所有列链接到目标表。管道现在运行源 → 源限定符 → tc_commit_dept20 → EMP_TARGET。
步骤5) Double 单击“事务控制”转换,然后在编辑属性窗口中:
- 选择属性选项卡
- 点击事务控制编辑器图标
步骤6) 在表达式编辑器中输入表达式 –
iif(deptno=20,tc_commit_before,tc_continue_transaction)
然后选择“确定”。这意味着如果找到部门编号为 20 的实例,则在目标系统中提交事务;否则,继续当前处理。
步骤7) 在上一个窗口中选择“确定”。该条件现在已存储在转换的“属性”选项卡中。
现在保存地图ping 创建会话和工作流后执行它。此映射ping 当数据中找到部门编号为 20 的数据时,将数据提交到目标位置。
有效和无效的交易控制转型
该转换是一个事务生成器。它会丢弃来自上游的任何事务边界,并为下游的所有内容定义新的边界,因此它在管道中的位置与其状态同样重要。
它被称为 高效 对于目标而言,当它所形成的边界仍然到达该目标时,并且 无效 当后续转换丢弃这些边界时,就会发生这种情况。根据 Informatica PowerCenter 转换指南,以下对象会丢弃传入的事务边界:
对目标无效并不意味着对象就毫无用处。下游转换(其转换范围为事务)仍然使用上游定义的边界,因此同一个转换可能对排序器有效,但对其背后的表无效。
在地图上ping 面对多个目标时,该物体可能对一个目标有效,而对另一个目标无效。ping 当所有目标都连接到有效的事务控制转换时,此映射保持有效;一旦有一个目标不再连接到事务控制转换,此映射即失效。设计器会在映射失效时报告哪些转换对目标无效。ping 已保存或已验证。
交易控制转型规则和指南
这种转换的大部分问题都是在运行时而不是设计时出现的,因此在构建会话之前,值得检查以下几点。
- 返回值是严格的。 如果条件评估结果不是提交、回滚或继续,则集成服务会话将失败。
- TC_CONTINUE_TRANSACTION 是备用方案。 IIF() 的每个分支都必须在某个地方结束,而 continue 的值会使当前事务保持不变。
- 目标类型很重要。 连接到关系型、XML 或动态 MQSeries 目标以外的任何目标的事务控制转换对该目标无效。
- 该条件只能利用它所能获取的资源。 只有连接到转换的端口、其可变端口和内置变量才能在事务控制编辑器中使用。
- 提交频率是一种权衡。 几乎每行都会触发的条件会消除缓冲的好处,而几乎从不触发的条件会重新引入数据丢失窗口,而添加转换正是为了关闭这个窗口。
- 查看会话日志。 日志记录了实际执行的提交点,这是确认条件是否按预期运行的最快方法。 性能调优.







