首页 > 解决方案 > 如何检查行流是否已结束

问题描述

有没有办法让我知道行流是否已经结束?也就是说,如果工作在最后一行?我想做的是每 10 行做一些事情,我的问题是最后一行,例如在 115 行中,最后 5 行不会发生,但我需要它们。

标签: talend

解决方案


Talend 中没有内置功能可以告诉您是否在最后一行。您可以使用以下方法之一解决此问题:

  • 事先获取行数。例如,如果你有一个文件,你可以用它tFileRowCount来计算行数,然后当你处理你的文件时,你使用一个变量来表示你当前的行号,这样你就可以知道你是否已经到达最后一行。如果您的数据来自数据库,您可以发出一个预先返回总行数的查询,或者修改您的主查询以返回附加列中的总行数并使用它(使用排名函数)。

  • 在子作业结束后进行一些处理:可能存在您需要对最后一行进行特殊处理的情况,您可以通过让上一个子作业处理的最后一行来实现这一点(您已经保存了,例如,通过将atSetGlobalVar 在您的目标之后,当您的子作业完成时,您的变量包含最后写入的值)。

编辑

对于您的用例,您可以做的是首先使用 将 API 调用的结果存储在内存中tHashOutput,然后使用 a 读取它tHashInput以便处理它,然后您将知道使用tHashOutput的全局变量检索了多少行tHashOuput_X_NB_LINE.


推荐阅读