Pentaho 数据集成 (DI) 获取 SFTP 服务器目录中的最后一个文件

Posted

技术标签:

【中文标题】Pentaho 数据集成 (DI) 获取 SFTP 服务器目录中的最后一个文件【英文标题】:Pentaho Data Integration (DI) Get Last File in a Directory of a SFTP Server 【发布时间】:2013-07-17 16:39:04 【问题描述】:

我正在对 Pentaho 数据集成进行转换,并且我的 SFTP 服务器目录中有一个文件列表。此文件以 FILE_YYYYMMDDHHIISS.txt 格式命名,我的目录如下所示:

我的目录 FILE_20130701090000.txt FILE_20130701170000.txt FILE_20130702090000.txt FILE_20130702170000.txt FILE_20130703090000.txt FILE_20130703170000.txt

我的问题是我需要根据其创建日期获取此列表的最后一个文件,以将其传递给其他转换步骤...

如何在 Pentaho 数据集成中做到这一点?

【问题讨论】:

嗨,欢迎来到 ***。我对您的问题投了赞成票,因为它不适合 SO 格式。特别是,您没有向我们展示您的尝试。如果您甚至不知道该尝试什么,您可能需要 SO 旨在通过其问答格式提供的更多基本帮助。见***.com/help/asking 我开始厌倦了关于水壶答案的最后建议。我是水壶用户,我认为这个答案非常适合回答。我很清楚这个问题。 【参考方案1】:

实际上这很简单,因为您的文件名可以按文本排序,排序列表中的最大值将是您最近的文件。

由于文件列表可能很短,您可以使用Memory Group by 步骤。分组步骤需要一个单独的列来聚合。如果您只有一列并且您想在整个集合中找到最大值,您可以使用Add Constants 步骤添加一个分组列,并将其配置为添加一列,例如每行中的整数 1。

将您的Memory Group by 配置为按1 列分组,并使用文件名列作为主题。然后只需选择最大分组类型。这将生成一行,其中包含您的分组列、删除的文件名字段和包含您的最大文件名的聚合列。它看起来像这样:

【讨论】:

以上是关于Pentaho 数据集成 (DI) 获取 SFTP 服务器目录中的最后一个文件的主要内容,如果未能解决你的问题,请参考以下文章

Pentaho 中的 Hive 数据集成错误

如何从 Pentaho Kettle 读取所有文件夹和子文件夹 使用 SFTP 步骤获取文件

从结果集中获取行并在 Pentaho 数据集成中使用获取变量

在 Pentaho 数据集成中获取 JOB_ID 变量

如何在 Pentaho 数据集成 (Kettle) 中的“用户定义的 Java 类”步骤中获取所有参数

缺少 Pentaho MSSQL 本机数据库 JDBC 驱动程序