首页 > 解决方案 > Talend - 将 globalMap 变量传递给 Job 中的所有 subJobs

问题描述

将 globalMap 变量传递给 Job 中的所有 subJobs 我正在处理共享 60% 相同代码的多个作业。每次我必须更新某些东西时,我最终都会在所有工作中更改相同的东西。

这是它的外观:

Existing Job 1 - Node ETV -> Node 1 -> Node 2 -> Node 3 -> Node ABC -> Node 5 -> Node 6

Existing Job 2 - Node KJL -> Node 1 -> Node 2 -> Node 3 -> Node MNP -> Node 5 -> Node 6

Existing Job 3 - Node LDG -> Node 1 -> Node 2 -> Node 3 -> Node XYZ -> Node 5 -> Node 6

我想让它们都像这样工作:

创建子作业 1,即节点 1 -> 节点 2 -> 节点 3 的组合

创建子作业 2,它是节点 5 -> 节点 6 的组合

然后重写作业如下:

Updated Job 1 - Node ETV -> Sub Job 1 -> Node ABC -> Sub Job 2

Updated Job 2 - Node KJL -> Sub Job 1 -> Node MNP -> Sub Job 2

Updated Job 3 - Node LDG -> Sub Job 1 -> Node XYZ -> Sub Job 2

问题是,显然 globalMap 的范围是有限的,而且绝不是“全球性的”。在子作业 1 中无法访问节点 ETV 中创建的值。似乎无法超越这件事。必须有在作业中随处可访问的创建变量。

标签: talend

解决方案


您可以使用上下文变量而不是全局变量。当您使用 tRunJob 调用您的子作业时,您可以选中“传输整个上下文”选项。这样,您的子作业将自动从作业中检索上下文值。您只需在所有作业中声明具有相同名称的上下文变量。


推荐阅读