【问题标题】:Pentaho Kettle - Get the file names dynamicallyPentaho Kettle - 动态获取文件名
【发布时间】:2019-02-22 13:05:09
【问题描述】:

我希望这个消息能找到每个人!

我在 Pentaho PDI Tool 上遇到了一个问题,我正在寻找一个答案(或者至少是洞穴尽头的一盏灯)来解决它!

我必须每个月导入一堆不同客户的 xls 文件。每个文件都有不同的名称(女巫是随意的),这些文件位于以客户名称命名的文件夹中。但是,我对所有客户和情况使用相同的过程。

有没有办法将目录名称作为变量传递并在每个进程上更改此变量?如何在不同路径上读取这些文件?

【问题讨论】:

    标签: pentaho etl kettle pdi data-integration


    【解决方案1】:

    您正在寻找的答案需要您所说的带有变量的流程。在 JOB 中,您将从带有客户名称及其各自文件夹的 KTR 开始。在同一个 JOB 中,您将传递这些结果并将它们用作变量,如果需要,传递给另一个 JOB 或 KTR,并且您将使用选项“将以前的结果复制到参数”和“为每个输入行执行” "(高级选项卡),在参数选项卡中,您将命名变量和流列名称(数据来自以前的 KTR,即:客户端名称和目录)。

    如果您在创建此流程时遇到问题,我可以抽出更多时间并在需要时分享一个示例。

    编辑: Sample Here

    【讨论】:

    • 非常感谢您的回答,非常感谢!我会尝试按照您的提示更新我的情况。
    • 你帮了我很多!太感谢了!我还有一个问题:以客户端名称命名的文件夹将在执行时创建。例如:今天我有一个名为“Cris”的新客户。将创建一个名为“Cris”的文件夹,每个 excel 文件都将在其中。所以,我的工作流程必须找到这个新文件夹并处理它。有没有办法在 Kettle 上进行(比较文件夹或获取文件中新文件夹的名称)?
    • 您有什么办法事先知道 Client 文件夹是什么吗?也许您可以将这些数据保存在数据库中,甚至保存在简单的 Excel 文件中。然后,您将为其替换 Data Grid 步骤。甚至,如果客户端名称始终与文件夹相同,那么您可以在“获取文件名称”步骤中使用客户端名称
    • 事实上,这是一个很棒的提示。是的,我有办法知道客户将在我的系统上输入什么。我正在考虑创建一个包含两个字段的表:参数和路径。在第一个中,我将只写“目录”,在第二个中,我将编写客户端 xls 的整个路径(C:/...Cris/)。如果我这样做了,它只是替换了 Data Grid Step (Client_info.ktr),对吧?
    【解决方案2】:

    您的 PDI 发行版附带的示例目录中有一个这样的示例。

    samples/jobs/run_all 涵盖您的案例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多