2017-05-29 41 views
3

我有以下数据的csv文件检查的DateField删除重复记录:Mulesoft:使用dataweave

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来实现这一点。请给我一个解决方案或建议

回答

4

这里是你正在寻找的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))) 

enter image description here

+0

非常感谢,它的工作。 –

+0

@Prudhvi欢迎您 – Yevgeniy