Mulesoft:通过使用 dataweave 检查 dateField 来删除重复记录

Mulesoft: Remove duplicate records by checking dateField using dataweave

我有一个包含以下数据的 csv 文件:

Id,Name,Type,date
1,name1,employee,25/04/2017
2,name2,contrator,26/04/2017
3,name3,employee,25/04/2017
4,name4,contrator,26/04/2017
5,name5,employee,24/04/2017
6,name6,contrator,24/04/2017
7,name7,employee,25/04/2017
8,name8,contrator,24/04/2017
9,name9,employee,24/04/2017
10,name10,contrator,26/04/2017
6,name6,employee,27/04/2017
11,name11,employee,27/04/2017
12,name12,contrator,27/04/2017

如果它有两行具有相同的 ID 号。应通过检查最新日期来删除其中一行。应删除日期较早的行。 例如,上面的输入有两行 ID 为 6 的数据。应删除日期为 24/04/2017 的行。输出应该是这样的

Id,Name,Type,date
1,name1,employee,25/04/2017
2,name2,contrator,26/04/2017
3,name3,employee,25/04/2017
4,name4,contrator,26/04/2017
5,name5,employee,24/04/2017
6,name6,employee,27/04/2017
7,name7,employee,25/04/2017
8,name8,contrator,24/04/2017
9,name9,employee,24/04/2017
10,name10,contrator,26/04/2017
11,name11,employee,27/04/2017
12,name12,contrator,27/04/2017

我需要使用 Dataweave 来实现。请给我一个解决方案或建议

这是您正在寻找的数据编织:

%dw 1.0
%output application/csv
%var toDate = (str) -> str as :date { format: "dd/MM/yyyy" }
%var maxDate = (a, b) -> a when toDate(a.date) > toDate(b.date) otherwise b
---
payload groupBy $.Id 
    pluck $ map ($ reduce ((val, acc) -> maxDate(val, acc)))