使用 talend 对相似值进行排序

问题描述 投票:0回答:1

我有一个 CSV 文件

我想将相似的 DeptID 分组在一起,并按升序对 MID 进行排序,并将最低 MID 的值分配给具有相似 DeptID 的 SID,使用 talend open studio 进行数据集成。如果有一个DeptID,则将MID的相同值分配给SID。

输入 CSV :

部门ID SID 学生姓名
111 南希 C1
111 南希 B1
111 南希 A1
222 詹姆斯 Z1

我使用 tFileInputDelimited 读取输入文件,我使用 tSortRow 对 MID 进行排序。我已经使用 tAggregateRow 对值进行分组。

我得到的输出为:

部门ID SID 学生姓名
111 南希 [A1,B1,C1]
222 詹姆斯 [Z1]

输出 CSV 应如下所示:

部门ID SID 学生姓名
111 A1 南希 A1
111 A1 南希 B1
111 A1 南希 C1
222 Z1 詹姆斯 Z1
etl talend business-intelligence talend-mdm
1个回答
0
投票

一个简单的解决方案是读取两次输入文件:一次作为主流程,获取 MID 列的详细信息,一次作为查找以获取 MID 列的 MIN 值作为 SID 列。然后使用 tMap 连接 2 个流,在 deptID 上连接(使用“所有匹配”连接类型)。

另一个解决方案可能是使用 tMap 的内部变量来用更少的组件完成工作:

使用 tSortRow 对数据进行排序后,请在 tSort 组件后面的 tMap 中创建 2 个变量:

  • “sequence”根据 DeptId 创建增量,从 1 开始
  • “currentVal”检查序列是否等于 1:如果是,您将获得当前的 MID 作为 SID。否则SID不会改变。

这 2 个解决方案可以获取 SID 值。

© www.soinside.com 2019 - 2024. All rights reserved.