gpt4 book ai didi

java - Talend - 从 1 行生成 n 多行

转载 作者:搜寻专家 更新时间:2023-11-01 01:12:43 24 4
gpt4 key购买 nike

背景:我正在使用 Talend 做一些(我猜)很常见的事情:从一行生成多行。例如:

编号 |名称 |日期自 |日期到

01 |马可| 2014 年 1 月 1 日 | 2014 年 4 月 1 日

...可以拆分为:

new_ID |编号 |名称 |日期自 |日期到

01 | 01 |马可 | 2014 年 1 月 1 日 | 2014 年 2 月 1 日

02 | 01 |马可 | 2014 年 2 月 1 日 | 2014 年 3 月 1 日

03 | 01 |马可 | 2014 年 3 月 1 日 | 2014 年 4 月 1 日

结果行的数量是动态的,具体取决于原始行中的日期期间。

问题:我该怎么做?也许使用 tSplitRow?我将使用 tJavaRow 检查这些时间段。有什么建议吗?

最佳答案

扩展 Balazs Gunics 给出的答案

您的第一部分是计算一行将变成的行数,使用开始日期和结束日期的日期差异函数就足够简单了

overall view

calculate number of rows per row


第 2 部分是将该值传递给 tFlowToIterate,并使用 tJavaFlex 获取它,tJavaFlex 将在其起始代码中使用它来控制 for 循环:

tJavaFlex 启动:

int currentId = (Integer)globalMap.get("out1.id");
String currentName = (String)globalMap.get("out1.name");
Long iterations = (Long)globalMap.get("out1.iterations");
Date dateFrom = (java.util.Date)globalMap.get("out1.dateFrom");

for(int i=0; i<((Long)globalMap.get("out1.iterations")); i++) {

主要

  row2.id = currentId;
row2.name = currentName;
row2.dateFrom = TalendDate.addDate(dateFrom, i, "dd");
row2.dateTo = TalendDate.addDate(dateFrom, i+1, "dd");

结束

}

和示例输出:

1|Marco|01-01-2014|02-01-2014
1|Marco|02-01-2014|03-01-2014
1|Marco|03-01-2014|04-01-2014
2|Polo|01-01-2014|02-01-2014
2|Polo|02-01-2014|03-01-2014
2|Polo|03-01-2014|04-01-2014
2|Polo|04-01-2014|05-01-2014
2|Polo|05-01-2014|06-01-2014
2|Polo|06-01-2014|07-01-2014
2|Polo|07-01-2014|08-01-2014
2|Polo|08-01-2014|09-01-2014
2|Polo|09-01-2014|10-01-2014
2|Polo|10-01-2014|11-01-2014
2|Polo|11-01-2014|12-01-2014
2|Polo|12-01-2014|13-01-2014
2|Polo|13-01-2014|14-01-2014
2|Polo|14-01-2014|15-01-2014
2|Polo|15-01-2014|16-01-2014
2|Polo|16-01-2014|17-01-2014
2|Polo|17-01-2014|18-01-2014
2|Polo|18-01-2014|19-01-2014
2|Polo|19-01-2014|20-01-2014
2|Polo|20-01-2014|21-01-2014
2|Polo|21-01-2014|22-01-2014
2|Polo|22-01-2014|23-01-2014
2|Polo|23-01-2014|24-01-2014
2|Polo|24-01-2014|25-01-2014
2|Polo|25-01-2014|26-01-2014
2|Polo|26-01-2014|27-01-2014
2|Polo|27-01-2014|28-01-2014
2|Polo|28-01-2014|29-01-2014
2|Polo|29-01-2014|30-01-2014
2|Polo|30-01-2014|31-01-2014
2|Polo|31-01-2014|01-02-2014

关于java - Talend - 从 1 行生成 n 多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26365036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com