如何检查行流是否已经结束

How to check if the stream of rows has ended

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

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

  • 预先获取行数。例如,如果你有一个文件,你 可以用tFileRowCount来统计行数,那么当你 处理您的文件,您为当前行使用一个变量 编号,因此您可以判断是否已到达最后一行。如果你的 数据来自数据库,您可以发出一个查询 returns 预先设置总行数,或者修改你的main 查询 return 附加列中的总行数和 使用它(使用排名函数)。

  • subjob结束后做一些处理:可能有的情况 如果你需要对最后一行进行特殊处理,你可以实现 这是通过获取前一个子作业处理的最后一行( 例如,您已经保存了 tSetGlobalVar 在你的目标之后,当你的子作业完成时,你的变量包含最后写入的值)。

编辑

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

检索了多少行