Pentaho - 将多个复制行导致结果导致从结果中获取行为空

时间:2015-04-14 16:15:25

标签: pentaho etl kettle spoon

我试图处理一些数据并将其存储在数据仓库中。为此,我想在另一个转换中将维度存储在一个转换和事实(只有一个)中。所以我可以使用一个作业来执行第一个作业copy rows to result并让它们进入第二个转换。

在第一次转换中,我读了一些Excel文件并将这些数据分成了一些流。这是来自洗礼的数据,所以我有一个流为人,另一个为父母,另一个为赞助商,等等......在每个流的末尾,我将数据插入数据库并返回PK自动生成(它是一个id autoincrement)。

在第二个中,我只有Get rows from result并且想要将它们设置为txt文件(只是为了看它已经正确完成)。问题是文件已创建但它是空的。我想如果我让Get rows from result中的字段为空,它会获取所有字段。

我做错了什么?

最后我想要的是在第一个转换中每个流的末尾有一个Copy rows to result,并在第二个转换中获得所有这些数据。

enter image description here

In" Insert Pare Padrina"我返回自动生成的id_pare_padrina,和#34; Insert Mare Padrina" (我有更多的流,我也必须将它们包含在结果中)。每行不执行此转换,因为我需要其他行的值。

谢谢!

1 个答案:

答案 0 :(得分:2)

为了将数据从第一个转换传递到第二个转换,您需要设置某些参数,如:

1。首先,在第二次转化 (在作业级别) 的转换设置中,检查项目为图片如下:

enter image description here

将以前的结果复制到参数将确保" 复制行结果"中的所有结果/数据步骤正确地传递到下一个级别。

对每个输入行执行:将对第一个转换文件中的每一行执行第二次转换。根据您的要求,这是可选的。

2。在相同的转换设置中,定义"参数"在参数选项卡中。检查下图:

enter image description here

这里,NAME是我定义的参数。因此,当您使用"从结果"中获取行时,您可以定义这些参数名称。

3。您可以使用"获取变量"而不是使用"从结果"中获取行。步骤以获取来自上一步骤的所有变量。您需要做的就是在ktr文件(CTRL + T)中定义参数名称。 (实际上我已经以这种方式实现了它并且对我有用。)

4. 由于"将行复制到结果" step使用堆内存,定义此步骤的多个实例可能会快速耗尽内存空间,并且您的代码可能会遇到麻烦。理想情况下,使用此步骤的单个实例。

但是如果你的数据交互只有一行,最好的选择是使用"设置变量"步骤

我想你可能已经错过了这些工作中的一些部分。

您可以阅读有关复制行的更多信息,以获得here

希望有所帮助:)