如何在单勺转换中基于变量生成输出?

How to generate output based on variable in a single spoon transformation?

我是 pentaho 的新手。我遇到了一个问题。

我有勺子改造。我有一个包含数据的输入文件。基于输入文件,需要生成输出文件。我的问题是如何根据输入文件生成具有不同文件名的输出文件。

例如:我有一个输入文件,其中有一个字段国家(比如美国)。我需要在最后生成一个包含该国家/地区的输出 xls 文件,即 USA.xls 为此,我所做的是将国家/地区字段映射到变量

${COUNTRY_NAME}

,这样我就可以在生成输出文件名时使用这个变量。但它没有按预期工作。

我需要根据输入文件多次运行这个转换。每个输入文件都有不同国家名称的国家字段。所以我需要为每个国家/地区生成相应的 excel。

例如:在我的第一个 运行 中,我使用了带有美国的文件。现在 ${COUNTRY_NAME} 是美国。输出文件生成的名称以 USA.xls 结尾。到目前为止,一切都很好。但是当我运行第二次用AUS转型的时候,${COUNTRY_NAME}还是USA。输出文件生成的名称以 USA.xls 而不是 AUS.xls.

结尾

我只有一个转换。请帮助我根据输入文件生成具有不同名称的 xls 文件。

提前致谢

你不能在一次转换中做到这一点。原因是在转换中所有步骤 运行 并行进行,因此在写入输出文件时,美国和澳大利亚的数据仍然混合在处理管道中。

当您需要做与时间相关的事情时,请使用 job。基本上你按原样进行转换,根据 ${country} 过滤数据并将其放入名为 filename${country}.xls 的文件中(是​​的,你可以,字符串被连接起来)。

变量 ${country} 在另一个读取数据的转换中定义,按国家/地区保留 Unique rowSet Variables

然后你做一个读取第二个transfo的工作(定义${country})并链接到第二个(产生filename${country}.xls)。

您有一个 sample 文件夹,与您的 PDI 一起提供,与您的勺子位于同一目录中。bat/spoon.sh。 sample/job/run_all/Run all sample transformations.kjb 与您想要实现的几乎相同。

我知道,这么简单的任务,第一反应就是难上加难。但是当您习惯推理时,您会发现能够以如此简单的方式控制并行处理的所有好处。