在 Talend Open Studio 中计算行数并将结果保存在数组(地图)中

Counting rows and saving the result in array (map) in Talend Open Studio

我在 Talend Open Studio 工作。它应该计算过滤后的输入行并将其存储在足够的变量中。输入文件是 csv。稍后我使用 tMap 只获取选定日期的行:

然后我就卡住了。我只需要一个 24 小时(值 0-23)的数组(或数组映射?)并在每次时间匹配时递增它们。

如何在 Talend 中实现一个可以在 tMap 中使用的数组(我可以使用第三方库)?还是有其他方法可以做到这一点?我想将这些变量值输出到 csv.

你知道组件 tflowmeter 和 tflowmetercatcher 吗?

我建议您编写一个用户定义的函数并在 tmap 中调用它。如下所示

public static String loop_cntr(Int cntr){

String ARR = "" ;
for(int i=0;i<cntr;i++){
<your logic to build the array>
ARR = ARR + cntr (something like this)
}
return ARR
)

现在您可以像 loop_cntr(20)

一样在 tMap 中使用此功能

我假设您知道如何编写自定义函数代码-->例程。 请告诉我进展如何。

如果我对您的描述的理解正确,您想要对具有特定小时值的所有列求和。您可以结合使用 tMaptAggregateRow.

首先,您将定义一个右侧有 24 列的 tMap。逐行,只有在满足条件时才会填充,例如

TalendDate.getPartOfDate("HOUR",row1.Time_Stamp) == 0

进入columnHour0,

TalendDate.getPartOfDate("HOUR",row1.Time_Stamp) == 1

进入 columnHour1 等直到 columnHour23.

现在连接 tAggregateRow 并对 "Operations" 框中的每小时列求和。这应该导致只有一行包含所有计算的小时条目。