Author: Suraj Rohankar
What is Filter?
- Iterates over an array and applies an expression that returns matching values.
What is Map?
- Iterates over items in an array and outputs the results into a new array.
Use Case:
A company called ABCD info systems has recorded sales. The company wants to prepare a payload to store the information in a database.
Requirement:Â
Payload should only contain the Transaction Date, Product Name, Price – where the price is equal to 1200, Country where sales made from United States, Canada, and Spain and payment method should only be Mastercard.
Input Payload:
[   {     “Transaction_date”: “1/2/09 6:17”,     “Product”: “Product1”,     “Price”: “1200”,     “Payment_Type”: “Mastercard”,     “Name”: “John”,     “City”: “London”,     “State”: “England”,     “Country”: “United Kingdom”,     “Account_Created”: “1/2/09 6:00”,     “Last_Login”: “1/2/09 6:08”   },   {     “Transaction_date”: “1/2/09 4:53”,     “Product”: “Product1”,     “Price”: “1200”,     “Payment_Type”: “Mastercard”,     “Name”: “Betina”,     “City”: “Parkville          “,     “State”: “MO”,     “Country”: “United Kingdom”,     “Account_Created”: “1/2/09 4:42”,     “Last_Login”: “1/2/09 7:49”   },   {     “Transaction_date”: “1/2/09 13:08”,     “Product”: “Product1”,     “Price”: “1200”,     “Payment_Type”: “Mastercard”,     “Name”: “Federica e Andrea”,     “City”: “Astoria           “,     “State”: “OR”,     “Country”: “United States”,     “Account_Created”: “1/1/09 16:21”,     “Last_Login”: “1/3/09 12:32”   },   {     “Transaction_date”: “1/3/09 14:44”,     “Product”: “Product1”,     “Price”: “1200”,     “Payment_Type”: “Visa”,     “Name”: “Gouya”,     “City”: “Echuca”,     “State”: “Victoria”,     “Country”: “Australia”,     “Account_Created”: “9/25/05 21:13”,     “Last_Login”: “1/3/09 14:22”   } ] |
Dataweave Script:
%dw 2.0 output application/json — payload filter($.Price == “1200” and        ($.Country == “United Kingdom” or        $.Country ==”Canada” or        $.Country == “Spain”)     and $.Payment_Type == “Mastercard”) map ((payload, index) -> { “Transaction_date”: payload.Transaction_date, “Product”: payload.Product, “Price”: payload.Price, “Country”: payload.Country, “Payment_Type”: payload.Payment_Type }) |
Output Payload:
[ { Â “Transaction_date”: “1/2/09 6:17”, Â “Product”: “Product1”, Â “Price”: “1200”, Â “Country”: “United Kingdom”, Â “Payment_Type”: “Mastercard” }, { Â “Transaction_date”: “1/2/09 4:53”, Â “Product”: “Product1”, Â “Price”: “1200”, Â “Country”: “United Kingdom”, Â “Payment_Type”: “Mastercard” } ] |
Conclusion:Â
This article explains how we can filter out and map the data by iterating over an array.
- For more examples of MuleSoft, checkout my git repository and anypoint exchange.
Username: guestuser1
Password:Â Muleuser@1