如何使用Talend仅处理过去一小时的文件?

如何使用Talend仅处理过去一小时的文件?,talend,Talend,我有连续传感器数据以文件的形式每5分钟传入。我只想挑选过去一个小时的文件并进行必要的处理。 例如:talend作业在下午12:01运行,它仅从上午11:00到下午12:00拾取所有文件 谁能建议我应该采取什么方法在talend内实现这一点。是否有任何内置组件可以拾取前一小时的文件 这里是流程图。 没有内置组件可以根据时间为您提供文件 但是,您可以通过使用tFileList-->tFileProperties来实现这一点。将tFileList配置为按上次修改的日期排序,然后tFileProp

我有连续传感器数据以文件的形式每5分钟传入。我只想挑选过去一个小时的文件并进行必要的处理。 例如:talend作业在下午12:01运行,它仅从上午11:00到下午12:00拾取所有文件

谁能建议我应该采取什么方法在talend内实现这一点。是否有任何内置组件可以拾取前一小时的文件

这里是流程图。


没有内置组件可以根据时间为您提供文件


但是,您可以通过使用tFileList-->tFileProperties来实现这一点。将tFileList配置为按上次修改的日期排序,然后tFileProperties将为您提供修改的日期。从那里,您可以根据日期值进行筛选-如果超过一小时,请停止,否则请停止处理。

没有内置组件可以根据时间为您提供文件


但是,您可以通过使用tFileList-->tFileProperties来实现这一点。将tFileList配置为按上次修改的日期排序,然后tFileProperties将为您提供修改的日期。从那里,您可以根据日期值进行筛选-如果超过一小时,则停止,否则停止处理。

使用tFileProperties,您将获得名为mstring\u name的内置模式。通过使用此列,您将获得文件的最后修改时间,在tJava或tJavaRow中,您可以使用talendDate函数检查此时间是否介于过去一小时之间

迭代所有文件并在tJavaRow中编写以下代码:

Date lastModifiedDate = TalendDate.parseDate("EEE MMM dd HH:mm:ss zzz yyyy", input_row.mtime_string);

Date current_date = TalendDate.getCurrentDate();


if(TalendDate.diffDate(current_date, lastModifiedDate,"HH") <= 1) {

output_row.abs_path = input_row.abs_path;
}
Date lastModifiedDate=TalendDate.parseDate(“EEE-MMM-dd-HH:mm:ss-zzz-yyyy”,输入行.mtime\u字符串);
当前日期=TalendDate.getCurrentDate();
if(TalendDate.diffDate(当前日期,lastModifiedDate,“HH”)(迭代)--->tFileProperties-->(row1 main)--->tJavaRow---->if---->tFileInputDelimited---->main---->tMap---->main---->tFileOutput

要设置tJavaRow的上下文,请在if条件下检查其可空性:

context.getProperty(“文件”)!=null&&!context.getProperty(“文件”).isEmpty()


在此之后,请使用您正在执行的上下文

使用tFileProperties,在其中您将获得名为mstring_name的内置模式。通过使用此列,您将获得文件的上次修改时间,在tJava或tJavaRow中,您可以使用talendDate函数检查这段时间是否介于过去一小时之间

迭代所有文件并在tJavaRow中编写以下代码:

Date lastModifiedDate = TalendDate.parseDate("EEE MMM dd HH:mm:ss zzz yyyy", input_row.mtime_string);

Date current_date = TalendDate.getCurrentDate();


if(TalendDate.diffDate(current_date, lastModifiedDate,"HH") <= 1) {

output_row.abs_path = input_row.abs_path;
}
Date lastModifiedDate=TalendDate.parseDate(“EEE-MMM-dd-HH:mm:ss-zzz-yyyy”,输入行.mtime\u字符串);
当前日期=TalendDate.getCurrentDate();
if(TalendDate.diffDate(当前日期,lastModifiedDate,“HH”)(迭代)--->tFileProperties-->(row1 main)--->tJavaRow---->if---->tFileInputDelimited---->main---->tMap---->main---->tFileOutput

要设置tJavaRow的上下文,请在if条件下检查其可空性:

context.getProperty(“文件”)!=null&&!context.getProperty(“文件”).isEmpty()


在此之后,请在执行时使用上下文

注释不用于扩展讨论;此对话一直是。注释不用于扩展讨论;此对话一直是。您尝试执行的设计不好。相反,您应该在作业开始时存储,然后在下一次执行时从中选择下限。仅t想想如果你的作业在4个小时内没有成功运行会发生什么…你会丢失数据,这是不可接受的。感谢@BalazsGunics的建议。我正在尝试实现sameIt。你正在尝试的是一个糟糕的设计。相反,你应该在作业开始时存储,然后在下一次执行时从那里选择下限。Ju想想如果你的作业在4个小时内没有成功运行会发生什么…你会丢失数据,这是不可接受的。感谢@BalazsGunics的建议。我正在尝试实现同样的方法