如何在 Pentaho Kettle 中融合行

How to fuse rows in Pentaho Kettle

因此,我正在将 Oracle 数据库移动到 Mongo 数据库。我有一个名为 Work 的 collection,所有的电影、绘画和其他东西都存放在这里。我还有一个名为 Authority 的 collection,所有曾与一件作品互动的人都是(演员、画家等)。 =24=]这样:

"workCS": {
   "casting": [
        {
            "authority": ObjectID("anID"),
            "role": [
                "actor",
                "realisator"
            ]
        }
    ],
    [
        {
            "authority": ObjectID("otherID"),
            "role": [
                "actor"
            ]
        }
    ]
}

所以,我知道如何在 Pentaho Kettle 中创建 manyToMany 联合,所以我在创建 collection 的基本结构时没有问题。但是,我无法找到一种方法来使角色 table 进入铸造 table,并最终得到这样的结果:

"workCS": {
   "casting": [
        {
            "authority": ObjectID("anID"),
            "role": [
                "actor"
            ]
        }
    ],
    [
        {
            "authority": ObjectID("anID"),
            "role": [
                "realisator"
            ]
        }
    ],
    [
        {
            "authority": ObjectID("otherID"),
            "role": [
                "actor"
            ]
        }
    ]
}

这与我们对数据所做的 post 处理不一致。

当我SQL从 Oracle DB 获取数据时,我有这样的东西:

"id"; "LastName"; "FirstName"; "Role";
1; "Radcliffe"; "Daniel"; "Actor";
1; "Radcliffe"; "Daniel"; "Writer"; 
2; "Grint"; "Rupert"; "Actor";

在Pentaho中有没有融合行的方法,所以这个例子是这样显示的?

"id"; "LastName"; "FirstName"; "Roles";
1; "Radcliffe"; "Daniel"; "Actor, Writer";
2; "Grint"; "Rupert"; "Actor";

您要查找的步骤是 Group by,角色 Concatenate strings separated by , 类型 Aggregation

您需要将其他三列指定为 Group field 中的键,因为即使唯一真正的键是 Authority_id,如果您不将它们指定为组字段,它们将消失。

也使用 Memory Group by,除非你有非常非常多的行,在这种情况下使用 Group by 并确保数据按 Authority_id 排序(它们也会自动按名称排序)。