如何在talend中获得时差?

时间:2017-03-14 07:03:27

标签: talend

如何通过与之前的值进行比较并获得结果来获得时间差异。例如,请说明 有 2017-01-01 13:00:00 2017-01-01 13:15:00

在找到差异后15分钟我需要差异,怎么做?

2 个答案:

答案 0 :(得分:0)

首先,您必须使用TalendDate.diffDate(column1,column2,"pattern")来获取时差。 然后,如果要将当前值与之前的值(在同一列中)进行比较,可以在流上设置序列,它将帮助您确定哪一个是先前的值。然后,您只需要读取两次流量,并在当前序列和当前序列-1之间建立内部连接,以获取currentDate和上一个Date。

第一个subjob:     YourFlow - > tMap - > tHashOutput

在tMap中,向您的字段添加新的“序列”列并使用Numeric.sequence("s1",1,1)。 这样所有行都将具有ID。

然后,读取你的Hash两次,并在“sequence - 1”上加入流程

tHashInput_1----|
                |--tMap--->Output
tHashInput_2----|

使用两个Dates字段将TalendDate.diffDate()方法放在输出中。

答案 1 :(得分:0)

这是另一种选择:

以这种方式开始定义起始talend作业执行时间(此处为tJava,但您也可以使用tSetGlobalVar组件):

globalMap.put("startDate", TalendDate.getDate("CCYY/MM/DD hh:mm:ss"));

稍后在tJava中的作业中使用以下代码:

String endDate = TalendDate.getDate("CCYY/MM/DD hh:mm:ss");

long executionTime = format.parse(endDate).getTime() - format.parse(((String)globalMap.get("startDate"))).getTime();

System.out.println("Execution Time : "+(executionTime/(60*60*1000))+" Hour(s) "+(executionTime/(60*1000)%60)+" Minute(s) "+(executionTime/1000%60)+" second(s).");