【问题标题】:Can I use an excel file twice in one Talend job?我可以在一项 Talend 工作中使用两次 excel 文件吗?
【发布时间】:2014-08-12 10:14:56
【问题描述】:

我正在尝试使用 Talend 将数据从 Excel 电子表格上传到 Salesforce。 Excel 电子表格有多个工作表,我可以通过不同的模式访问这些工作表。机会输入有效,而帐户输入无效,即使我使用((String)globalMap.get("tFileList_1_CURRENT_FILEPATH")) 的相同输入文件路径。

如何调整我的工作结构,以便正确使用 Excel 工作表两次?

【问题讨论】:

  • 您是否考虑过从每张工作表中提取数据并将它们保存在单独的文件/数据库表中的步骤?
  • t_FileList_1Iterate究竟是如何将文件名信息传递给Oppotunities Input的?在上下文变量中?如果是这样,你能用同样的吗?
  • 另一个想法:也许这是一个竞争条件。显然,第二个 Excel 输入没有任何先决条件,因此它可以在工作开始时立即启动。在那个时间点,第一个输入作业可能还没有定义文件名。不知何故,您使两个 Excel 输入组件都依赖于迭代组件。
  • @MarcusRickert,两个 excel 输入都在其文件路径/数据流中使用 ((String)globalMap.get("tFileList_1_CURRENT_FILEPATH"))。我认为迭代命令只是定义了控制流,但不影响输入使用的文件。
  • @ydaetskcoR 我可以这样做,但这样会大大增加复杂性。我认为这项工作必须跟踪多个文件然后使用它们,我不确定该怎么做。

标签: excel salesforce talend


【解决方案1】:

Marcus Rickert 用his comment 击中了头,您已经创建了一个竞争条件,因为在子作业开始时加载了查找数据。

有几个解决方案:

根据my comment,您可以有一个中间步骤,通过将数据从文件中提取出来,然后以一种不依赖于由globalMap 变量,仅在查找开始后才定义。

或者,到目前为止,最简单但可能会影响性能的方法是,您可以将 tMap 中的查找模型更改为使用“在每一行重新加载”。这将使它重新加载从 main 进入的每一行的整个资源,这显然会出现一些性能问题,但它们可能是微不足道的,或者对你来说不是问题。我的测试工作在与默认的“加载一次”查找模型几乎相同的时间内运行了十几行的多次迭代。不过,这可能是 O(N),因此取决于您的数据量。

你可以在tMap的join设置中找到lookup model选项:

【讨论】:

  • 我将查找模型更改为在每一行重新加载,它起作用了!非常感谢@ydaetskcoR 和 Marcus Rickert。
猜你喜欢
  • 1970-01-01
  • 2020-11-28
  • 1970-01-01
  • 2018-10-27
  • 1970-01-01
  • 2014-09-05
  • 1970-01-01
  • 1970-01-01
  • 2021-08-31
相关资源
最近更新 更多