如何检查行流是否已经结束
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
.
检索了多少行
有没有办法让我知道行流是否已经结束?也就是说,如果作业在最后一行? 我想做的是每 10 行做一些事情,我的问题是最后一行,例如在 115 行中,最后 5 行不会发生,但我需要它们。
Talend 中没有告诉您是否在最后一行的内置功能。您可以使用以下方法之一解决此问题:
预先获取行数。例如,如果你有一个文件,你 可以用
tFileRowCount
来统计行数,那么当你 处理您的文件,您为当前行使用一个变量 编号,因此您可以判断是否已到达最后一行。如果你的 数据来自数据库,您可以发出一个查询 returns 预先设置总行数,或者修改你的main 查询 return 附加列中的总行数和 使用它(使用排名函数)。subjob结束后做一些处理:可能有的情况 如果你需要对最后一行进行特殊处理,你可以实现 这是通过获取前一个子作业处理的最后一行( 例如,您已经保存了
tSetGlobalVar
在你的目标之后,当你的子作业完成时,你的变量包含最后写入的值)。
编辑
对于您的用例,您可以做的是首先使用 tHashOutput
将 API 调用的结果存储在内存中,然后使用 tHashInput
读取它以进行处理它,然后您将知道使用 tHashOutput
的全局变量 tHashOuput_X_NB_LINE
.