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

Posted

技术标签:

【中文标题】Pentaho - 拥有多个复制行以导致从结果中获取行为空【英文标题】:Pentaho - Having multiple Copy rows to result results in Get rows from result empty 【发布时间】:2015-04-14 16:15:24 【问题描述】:

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

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

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

我做错了什么?

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

在“Insert Pare Padrina”中,我返回自动生成的 id_pare_padrina,与“Insert Mare Padrina”相同(我有更多流,我还必须将它们包含在结果中)。这个转换不是每行都执行的,因为我需要其他行的值。

谢谢!

【问题讨论】:

Lyd,您的问题找到解决方案了吗?你介意发布同样的内容吗?谢谢 【参考方案1】:

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

1. 首先,在第二个变换(在工作级别)的变换设置中,勾选项目为下图:

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

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

2. 在相同的转换设置中,在“参数”选项卡中定义“参数”。查看下图:

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

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

4. 由于“将行复制到结果”步骤使用堆内存,定义此步骤的多个实例可能会很快耗尽内存空间,您的代码可能会遇到问题。理想情况下使用此步骤的单个实例。

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

我认为您可能在工作中错过了其中的一些部分。

您可以阅读有关复制行的更多信息以生成here。

希望对你有帮助:)

【讨论】:

是否需要在参数选项卡中设置所有参数? 如果我在具有不同列的相同转换中有多个Copy rows to result,我会遇到一些问题吗? 只设置您需要传递的参数。理想情况下,由于复制到行使用堆内存,最佳做法是只定义一个“复制行到结果”步骤。 但我找不到将数据发送到来自不同步骤和不同字段名称的下一个转换的方法。 @Lyd 可以分享代码吗?或工作/转换的屏幕截图,以便我可以更清楚地了解您所做的事情..:)

以上是关于Pentaho - 拥有多个复制行以导致从结果中获取行为空的主要内容,如果未能解决你的问题,请参考以下文章

使用 pentaho 水壶下载文件

Pentaho行变量

多个 Pentaho 转换“变量?”

主题:如何在多个环境中部署带有子报表的 Pentaho 报表

如何从 Pentaho-Kettle 中基于动态选择的 sql 查询中获取结果集?

Hive SQL,如何检查多个先前的行以获得相同的引用