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

How to process files only for the past hour using Talend?

我每 5 分钟以文件形式收到连续的传感器数据。我只想选择过去一小时的文件并进行所需的处理。 例如:talend 作业在 12:01pm 运行,它只选择从 11:00 am 到 12:00 pm 的所有文件。

任何人都可以建议我应该采取什么方法来在 talend 中实现这一点。是否有任何内置组件可以选择前一小时的文件?

这是流程。

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

但是,您可以使用 tFileList-->tFileProperties 来完成此操作。将 tFileList 配置为按上次修改日期排序,然后 tFileProperties 将为您提供修改日期。从那里,您可以根据日期值进行过滤 - 如果超过一个小时,停止,否则处理。

使用 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;
}

这样你会得到过去一小时内的所有文件。

希望这对您有所帮助..

这是完整的作业设计:

tFileList--->(iterate)---->tFileProperties---->(row1 main)---->tJavaRow---->if---->tFileInputDelimited---- >main----->tMap---->main----->tFileOutput

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

context.getProperty("file") != null && !context.getProperty("file").isEmpty()

在此之后使用你正在做的上下文