如何在 Talend 的输入中创建分组并在每个输入中创建特定行 select?
How to make groups in an input and select a specific row in each of them in Talend?
我正在研究 Talend 转换过程(我们使用的是 Talend 6.4)。
,我不知道如何实现当前的要求。
我有一个输入包含:
- 两列是我的组键(帐户和产品),但不是唯一的(同一帐户 x 产品对可以出现在多行中)
- 一个标准列(合同结束日期),这将帮助我决定我想为每个组保留哪一行
- 一些需要传递给后续处理的“tail”数据(合同号)
要执行的规则是:
- 每组只保留一条记录
- selected 记录必须是一个没有结束日期的记录,或者如果所有记录都有结束日期,则具有最大的结束日期
- 如果出现平局,selected 记录可以是随机的
查看对一些虚拟数据应用这些规则的转换:
我首先想到的是:
- 按帐户、产品排序,End_date(空值优先)
- select各组第一
但是我不够熟练不知道Talend中是否存在二次转换
此致,
皮埃尔
非常有趣的 Talend 问题。
您需要创建类似此作业的内容。
@MBDIA 的回答似乎有效,但我想分享我们为满足要求所做的工作。
在这里查看我们的 Talend 进程:
第一个 tMap (tMap_3) 的作用类似于 tReplicate 和 tMap,并发送:
- 在上部分支中只有帐户和产品引用,然后由 tAggregateRow_1.
删除重复数据
- 在较低的分支中,所有数据和计算字段使我们能够处理日期丢失的情况(而不是默认为 31/12/9999,我们计算一个标志(0 或 1),我们在之后的排序步骤中使用)。
在过程的第二部分,我们首先将排序应用于帐户、产品、空日期标志(之前计算)、结束日期(desc)的整个数据,并使用第二个 tMap 进行连接两个分支(在帐户 x 产品上),仅保留 First Match 以便根据我们的要求保留第一条记录。
我正在研究 Talend 转换过程(我们使用的是 Talend 6.4)。 ,我不知道如何实现当前的要求。
我有一个输入包含:
- 两列是我的组键(帐户和产品),但不是唯一的(同一帐户 x 产品对可以出现在多行中)
- 一个标准列(合同结束日期),这将帮助我决定我想为每个组保留哪一行
- 一些需要传递给后续处理的“tail”数据(合同号)
要执行的规则是:
- 每组只保留一条记录
- selected 记录必须是一个没有结束日期的记录,或者如果所有记录都有结束日期,则具有最大的结束日期
- 如果出现平局,selected 记录可以是随机的
查看对一些虚拟数据应用这些规则的转换:
我首先想到的是:
- 按帐户、产品排序,End_date(空值优先)
- select各组第一
但是我不够熟练不知道Talend中是否存在二次转换
此致,
皮埃尔
非常有趣的 Talend 问题。 您需要创建类似此作业的内容。
@MBDIA 的回答似乎有效,但我想分享我们为满足要求所做的工作。
在这里查看我们的 Talend 进程:
第一个 tMap (tMap_3) 的作用类似于 tReplicate 和 tMap,并发送:
- 在上部分支中只有帐户和产品引用,然后由 tAggregateRow_1. 删除重复数据
- 在较低的分支中,所有数据和计算字段使我们能够处理日期丢失的情况(而不是默认为 31/12/9999,我们计算一个标志(0 或 1),我们在之后的排序步骤中使用)。
在过程的第二部分,我们首先将排序应用于帐户、产品、空日期标志(之前计算)、结束日期(desc)的整个数据,并使用第二个 tMap 进行连接两个分支(在帐户 x 产品上),仅保留 First Match 以便根据我们的要求保留第一条记录。