如何根据修改时间从 tftpfilelist 中提取最近 2 天的最新文件而不存储在 tbufferoutput component-talend 作业中

how to just extract the last 2 days recent files from tftpfilelist based on modified time without storing in a tbufferoutput component-talend job

截至目前,我正在遍历文件夹中所有可用的 5k 文件并将它们存储在 tbufferoutput 中,并使用 tbufferinput 读取它们并根据 mtime desc 对它们进行排序(ftp 中的修改时间site) 按降序排列,只提取前 10 个文件。

由于它一次遍历所有 5k 文件非常耗时,并且会导致远程 ftp 站点出现不必要的延迟问题。

我想知道是否有其他简单的方法无需迭代直接从ftp站点获取最新的前10个文件并根据mtime desc对它们进行排序并对其进行操作?

我的 talend 工作流程目前看起来像这样,会建议任何其他可以更好地优化工作性能的方法!

基本上我不想遍历 运行 遍历 ftp 站点中的所有文件,而是直接从远程 ftp 获取前 10 名:tftp文件列表并在数据库中执行检查并稍后下载

有没有迭代,我可以仅通过按 desc 顺序使用修改后的时间戳来获取最新的 10 个文件吗?-这是一个简短的问题 要么 我想从远程 ftp 站点提取最近 3 天的文件。

文件名在此 format:A_B_C_D_E_20200926053617.csv

方法B:WITHJAVA, 我尝试使用如下的 tjava 代码:对于流 B:

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

Date current_date = TalendDate.getCurrentDate();

System.out.println(lastModifiedDate);

System.out.println(current_date);
System.out.println(((String)globalMap.get("tFTPFileList_1_CURRENT_FILE")));

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

System.out.println

output_row.abs_path = input_row.abs_path;

System.out.println(output_row.abs_path);
}

现在tlogrow3到处打印NULL值,请指教

定义 3 个上下文变量:

在 tJava 中,计算 3 天(从当前日期开始)的掩码(带通配符):

Date currentDate = TalendDate.getCurrentDate();
Date currentDateMinus1 = TalendDate.addDate(currentDate, -1, "dd");
Date currentDateMinus2 = TalendDate.addDate(currentDate, -2, "dd");

context.mask1 ="*" + TalendDate.formatDate("yyyyMMdd", currentDate) + "*.csv";
context.mask2 ="*" + TalendDate.formatDate("yyyyMMdd", currentDateMinus1) + "*.csv";
context.mask3 ="*" + TalendDate.formatDate("yyyyMMdd", currentDateMinus2) + "*.csv";

然后在 tFTPFileList 中,使用文件掩码的 3 个上下文变量:

仅检索今天和前 2 天的文件。