我是pentaho的新手。我遇到了一个问题。
我有一个勺子改造。我有一个包含数据的输入文件。根据输入文件,需要生成输出文件。我的问题是如何根据输入文件生成具有不同文件名的输出文件。
例如:我有一个输入文件,其中包含一个字段国家(比如美国)。我需要在最后生成一个输出xls文件,即USA.xls 为此,我所做的是将国家/地区字段映射到变量
$ {COUNTRY_NAME}
,这样我可以在生成输出文件名时使用此变量。但它没有按预期工作。
我需要根据输入文件多次运行此转换。每个输入文件都包含具有不同国家/地区名称的国所以我需要为每个国家生成相应的excel。
例如:在我的第一次运行中,我使用了一个美国文件。现在$ {COUNTRY_NAME}是美国。输出文件生成的名称以USA.xls结尾。到现在为止还挺好。但是当我第二次使用AUS进行转换时,$ {COUNTRY_NAME}仍然是美国。输出文件生成的名称以USA.xls而不是AUS.xls结束。
我只有一次改造。请帮我根据输入文件生成不同名称的xls文件。
提前致谢
答案 0 :(得分:0)
你不能在一次转型中做到这一点。原因是在转换过程中所有步骤并行运行,因此在写入输出文件时,US和AUS的数据仍然在处理管道中混合。
当您需要做与时间相关的事情时,请使用job
。基本上你按原样进行转换,根据${country}
过滤数据并将其放在名为filename${country}.xls
的文件中(是的,你可以,串联连接)。
变量${country}
在另一个转化中定义,该转化会读取您的数据,按国家/地区保留Unique row
和Set Variables
。
然后你做一个读取第二个转换(定义{{1}})并链接到第二个转换的作业(生成${country}
)。
您的PDI附带了一个filename${country}.xls
文件夹,该文件夹与spoon.bat / spoon.sh位于同一目录中。 sample
几乎与您想要达到的目标相同。
我知道,第一个反应是,它因为如此简单的任务而变得令人生畏。但是当你习惯了推理时,你会发现能够以这么简单的方式控制并行处理的所有好处。