在 pentaho PDI 水壶中合并行

Posted

技术标签:

【中文标题】在 pentaho PDI 水壶中合并行【英文标题】:merge rows in pentaho PDI kettle 【发布时间】:2017-04-21 04:11:15 【问题描述】:

我想知道是否可以在 pentaho 中合并 2 行或更多行?

示例: 我有 2 行

case:'001',
owner:'Barack'
date:'2017-04-10'

case:'001',
owner:'Trump'
date:'2017-02-10'

然后我想要一个 mongoDB 输出:

case:'001'
ownerHistory:[

owner:'Barack'
date:'2017-04-10'
,

owner:'Trump'
date:'2017-02-10'

]

【问题讨论】:

您的示例输入在第二行有案例 002,这是一个错误还是您选择要合并的行的另一种方法? 谢谢赛勒斯,这是我的错误。应该是 001 号案例……你有解决方案吗? 【参考方案1】:

MongoDB 输出 步骤支持影响文档中各个字段的修饰符更新以及将项目添加到列表/数组的 $push 操作。使用这些,您不需要合并任何行,只需将它们全部发送到 MongoDB 输出步骤即可。

在修改器更新激活的情况下,如果案例尚不存在,则将插入下一行,如果存在,则将所有者添加到数组中。

很遗憾,如果您使用相同的传入数据再次运行此转换,则会添加更多所有者副本。我还没有找到解决这个问题的方法,所以我希望你的用例中没有这个问题。

也许如果您拆分数据并使用每个案例的第一条记录插入/替换,然后为第二条和以后的记录执行 $push 更新,您可以管理它。

【讨论】:

您好,感谢您的回复。不幸的是,我无法使其正常工作。我想知道我应该为数据类型添加什么。选项只有字符串、数字、日期、布尔值、整数、大数字、二进制、时间戳、互联网地址。也许,如果您可以共享一个 .ktr 文件,它会很有帮助。 (当你显然有时间的时候)是的,当然我会有不止 1 个案例 我重写了答案以使用 MongoDB 输出的内置功能,而不是从头开始构建文档布局。

以上是关于在 pentaho PDI 水壶中合并行的主要内容,如果未能解决你的问题,请参考以下文章

pentaho水壶:从流中获取行数

无法在 Pentaho 水壶中获取电子邮件附件

如何存储一行中的变量以在 Pentaho 水壶中的后续行中使用?

Pentaho行变量

使用 pentaho 水壶下载文件

合并行(差异)是逐行比较,而不是一行与其他表的整行