【问题标题】:Mapping FK into a table in talend将 FK 映射到 talend 中的表中
【发布时间】:2019-07-26 18:25:15
【问题描述】:

我的架构中有 2 个实体。我已经映射了一个,现在对于第二个,在使用 talend 映射时,我还需要将第一个实体的 PK 作为第二个实体中的 FK。他们都在同一个工作中,但是如何在第二个实体的映射中使用第一个实体的 Pk 呢?

enter image description here

这就是我目前所拥有的(row1 是 entity1,它在 tmap 中有一个自动生成的键)

row2 正在从 xml 文件创建 csv row3 映射从 row2 生成的 csv 文件,但是它应该具有来自 row1 的实体 1 的 fk

【问题讨论】:

  • 有人请回答!谢谢
  • 我不知道这是否是您要查找的内容,但您可以使用 tSetGlobalVar 或 tJavaRow 设置要在任何地方使用的全局变量。但我担心的是你只能在那里保存一个值,并且事情会相互覆盖。你是什​​么意思第 1 行的密钥将用于第 2 行?如果您在 row1 中解析了多个文件,则应该连接 row1 和 row2 以迭代每个条目。
  • 行是指上图中每一行的逻辑。就像第一行中的东西是 row1 等。我尝试使用全局变量并在它之前设置一个数据库输入。我想获取数据库中的行数,然后将 +1 增加到全局变量,这可能是 entity2 中的 Fk,因为 entity1 Pk 是自动递增的,但所有行的数字都保持 1(不递增)
  • 上面作业中的所有行(在图片中)都是一起执行的,但该过程是自动完成的*通过文件观察器)。我可以使用全局变量、会话或任何东西吗?如果可以,请告诉我,因为我一直在尝试,但没有任何效果,这是我的希望 :)
  • 我也尝试将两个 inputdelimited 连接到同一个 tmap 和 2 个 dboutput,但问题是当我们将两个文件连接到同一个 tmap 时,它们变成了同一个子作业,当我运行它,只有一个文件观察器路径有效,另一个无效

标签: database automation foreign-keys etl talend


【解决方案1】:

在 tMap_1 中,创建另一个输出行并使用 tfileOutputDelimeted 组件将自动生成的 ID 写入 CSV。在您的 tMap_2 中,使用自动生成的 ID 查找此 CSV 文件并写入表。

【讨论】:

  • 但我对两者都使用了文件观察器。因此,当我链接查找文件时,它们都在一个子作业下,并且当我运行 talend 时只有一个文件观察器运行
  • 它们仍将保留为不同的子作业。使用 tfileOutputDelimeted 组件从 tMap_1 写入生成的 ID。然后使用新的 tfileInputDelimeted 组件读取 tMap_2 中生成的 ID。
  • 检查我的编辑。这就是设计的样子。 tfileOutputDelimeted 和 tfileInputDelimeted 的文件路径和架构应该相同
  • 但是 tfileinputdelimited 不应该连接到文件观察器,这样我们每次添加文件时都会查找文件。然后在同一个子作业中的文件观察器将面临上述相同的问题
  • 不,您不必添加文件监视程序。只需将 tWaitForFile_1 与 tWaitForFile_2 与 subJobok 链接(右键单击 tWaitForFile_1 -> On SubJobok -> 将其链接到 tWaitForFile_2 )。从 tWaitForFile_2 到 tWaitForFile_3 执行相同操作
猜你喜欢
  • 1970-01-01
  • 2018-07-02
  • 1970-01-01
  • 1970-01-01
  • 2021-04-24
  • 1970-01-01
  • 2021-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多