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

时间:2017-11-17 14:01:29

标签: pentaho pentaho-spoon pentaho-data-integration

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

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

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

  

$ {COUNTRY_NAME}

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

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

例如:在我的第一次运行中,我使用了一个美国文件。现在$ {COUNTRY_NAME}是美国。输出文件生成的名称以USA.xls结尾。到现在为止还挺好。但是当我第二次使用AUS进行转换时,$ {COUNTRY_NAME}仍然是美国。输出文件生成的名称以USA.xls而不是AUS.xls结束。

我只有一次改造。请帮我根据输入文件生成不同名称的xls文件。

提前致谢

1 个答案:

答案 0 :(得分:0)

你不能在一次转型中做到这一点。原因是在转换过程中所有步骤并行运行,因此在写入输出文件时,US和AUS的数据仍然在处理管道中混合。

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

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

然后你做一个读取第二个转换(定义{{​​1}})并链接到第二个转换的作业(生成${country})。

您的PDI附带了一个filename${country}.xls文件夹,该文件夹与spoon.bat / spoon.sh位于同一目录中。 sample几乎与您想要达到的目标相同。

我知道,第一个反应是,它因为如此简单的任务而变得令人生畏。但是当你习惯了推理时,你会发现能够以这么简单的方式控制并行处理的所有好处。