2017-05-29 3 views
3

ich eine CSV-Datei mit folgenden Daten:MuleSoft: Entfernen Sie doppelte Datensätze von datefield Überprüfung mit 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 

Wenn es zwei Reihen mit derselben ID-Nummer. Eine der Zeilen sollte entfernt werden, indem das letzte Datum überprüft wird. Die Zeile mit älterem Datum sollte entfernt werden. Zum Beispiel enthält die obige Eingabe zwei Datenzeilen mit der ID Nr. 6. Die Zeile mit dem Datum 24.04.2017 sollte entfernt werden. Die Ausgabe sollte so sein

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 

Ich muss dies mit Dataweave erreichen. Bitte senden Sie mir eine Lösung oder Anregungen

Antwort

4

hier ist die dataweave die Sie suchen:

%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

Vielen Dank, es hat funktioniert. –

+0

@ Prudhvi Sie sind willkommen – Yevgeniy

Verwandte Themen