0% found this document useful (1 vote)
670 views20 pages

Dataweave Interview Questions

The document contains several DataWeave code examples that demonstrate various data transformation techniques, including: - Reversing arrays and nested arrays - Getting unique values from nested arrays - Transforming country/capital pairs to an object - Formatting dates from strings - Applying a 10% discount to product prices - Mapping first and last names to keys/values

Uploaded by

kids duniya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (1 vote)
670 views20 pages

Dataweave Interview Questions

The document contains several DataWeave code examples that demonstrate various data transformation techniques, including: - Reversing arrays and nested arrays - Getting unique values from nested arrays - Transforming country/capital pairs to an object - Formatting dates from strings - Applying a 10% discount to product prices - Mapping first and last names to keys/values

Uploaded by

kids duniya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 20

<?xml version="1.0" encoding="UTF-8"?

>

<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core
http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/ee/core
http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
<flow name="dataweave-of-the-dayFlow27" doc:id="2c066864-9d64-4e8c-bf05-
ca011c6a5921" >
<ee:transform doc:name="reverse array" doc:id="2db0f163-0a35-4920-
98f7-d7c4a7c545ef">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json

// How do you reverse the elements in the array below?

var myArray = 1 to 5

// Expected output: [5,4,3,2,1]


---

// myArray[-1 to -5]

// myArray[-1 to -sizeOf(myArray)]

//myArray[-1 to 0]

// myArray reduce (element, accumulator = []) -> [element] ++ accumulator

//myArray orderBy -$$


myArray orderBy(vallue, index) -> -index]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow28" doc:id="bfb6c6bd-ec7f-44af-bb32-
409b65b87072">
<ee:transform doc:name="reverse nested array" doc:id="91db053f-10cb-
4609-a05c-10d38b19b2f4">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
var myInput = [1,2, 'a', 'b', [4,5]]

// expected output [5, 4, "b", "a", 2, 1]


---

//flatten(myInput)[-1 to 0]
flatten(myInput) reduce(element, accumulator = []) -> [element] ++
accumulator]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow30" doc:id="6b833f81-5976-4d5b-bac9-
ad5025efd0b8">
<ee:transform doc:name="get unique names" doc:id="5482a4d4-1684-
4c66-9a1a-805ef7d4866a">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
// get unique names
var myInput = [[
{"name":"john"},
{"name":"leonardo"}
],

[
{"name": "leonardo"},
{"name": "alicia"},
{"name": "jennifer"},
{"name": "john"}]
]
---
(myInput..name) distinctBy $]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow29" doc:id="c2b45a0d-2e46-4c9e-800d-
866b29ab36df" >
<ee:transform doc:name="Country City" doc:id="a764e027-934d-4694-
8a4a-c25d9deba8f2" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

var myInput = [
{

"Country": "USA",

"Capital": "DC"

},

"Country": "France",

"Capital": "France"

}
]

// Expected output

/*
{
"USA": "DC",
"France": "France"
}

*/
---
//myInput reduce (obj, accu = {}) -> accu ++ {(valuesOf(obj)[0]): valuesOf(obj)
[1]}

myInput reduce (obj, accu = {}) -> accu ++ {(obj.Country):


obj.Capital}]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow9" doc:id="722ef5bb-a3b6-4b83-bf7e-
20142ff2a90b" >
<ee:transform doc:name="OrderDate from purchase orders"
doc:id="b325738d-8d86-4780-b04d-7c12a5bf9719" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
// data link: https://learn.microsoft.com/en-us/dotnet/standard/linq/sample-xml-
file-multiple-purchase-orders
---
payload.PurchaseOrders.*PurchaseOrder.@OrderDate]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow" doc:id="1a42d0c4-3774-4603-b932-
5ad472298294" >
<ee:transform doc:name="airports in US East" doc:id="53788feb-1c47-
42b6-9067-f70da4d8370b" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
sizeOf(payload filter $.tzone =='America/New_York')]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow1" doc:id="c784ab68-c0a0-44fd-8f1c-
488d5d93a083" >
<ee:transform doc:name="airports by timezone" doc:id="d5092f1c-cc5b-
49fa-bde6-edd291f4b780" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload groupBy $.tz mapObject (value, key, index) -> {(key):
sizeOf(value)}]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="10-percent-discount" doc:id="2bb8e6fe-2e8e-4090-9b17-
71f99e05ad14" >
<ee:transform doc:name="10% discount of product price"
doc:id="e4d8e87f-fb2e-49da-ba1e-8b6d93b82826" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/csv
---
payload map (value, index) ->
{ ProductId: value.ProductID,
ProductName:value.ProductName,
SupplierID: value.SupplierID,
CategoryID: value.CategoryID,
Unit: value.Unit,
OldPrice:value.Price,
NewPrice: value.Price * 0.9, // 10% decrease
}]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow2" doc:id="65297bbe-0524-46f0-92eb-
5bebdb620841" >
<ee:transform doc:name="Spell out Country Name" doc:id="e30c7e26-
5890-4221-86ba-f5dfc1c28f17" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/csv
---
payload map (value, index) ->{
CustomerID: value.CustomerID,
CustomerName: value.CustomerName,
ContactName: value.ContactName,
Address: value.Address,
City: value.City,
Country: value.Country replace('USA') with("United States of America ")
replace('UK') with("United Kingdom")
}]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="transform" doc:id="5c983115-9ecd-43f0-b609-5f77cd18df1a" >
<ee:transform doc:name="change the first name to key and the last
name to value" doc:id="d2e1d5aa-6b8b-44cc-9fd0-c2cc7b0c05dd" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

var myData = [
{firstName:'Fisseha',lastName:'Hagos'},
{firstName:'Solomon',lastName:'Mulu'},
{firstName:'Helen',lastName:'Tesfay'}
]
---

myData map (value, index) ->


{ (value.firstName): value.lastName
}

//zip(myData.lastName, myData.firstName)
]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow3" doc:id="5dd7d148-33f9-472f-8041-
6015d0f5ca3f" >
<ee:transform doc:name="file name from date and time"
doc:id="8e2a8c80-89aa-4c85-bdec-ce20302acd9a" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
now()[0 to 18] replace '-' with '_' replace 'T' with '_' replace ':' with
'_']]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow4" doc:id="2e7e9eb3-4d23-49d5-b8a9-
d39efcbae802">
<ee:transform doc:name="TDF age" doc:id="8d6e49d2-e4d3-4533-8dc9-
5f26a2e0b325">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
daysBetween(|2020-11-04|, now())

]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow10" doc:id="83316da4-6bf4-4663-b665-
27197d2721d8" >
<ee:transform doc:name="placeholder" doc:id="0c55e415-010a-4a00-
94d8-3ad9a020b7be" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
var carModel1 = 'Toyota'
var carModel2 = 'Honda'
---
'The provided car model is $(carModel1)']]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow11" doc:id="f47546b9-ef3e-4378-bb38-
bc7f38f2dc2a">
<ee:transform doc:name="Change from one time zone to another"
doc:id="4a19af2f-776b-4e69-af4f-998b83915764">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
{
'EST': now(),
'UTC': now() >> "UTC",
'CET': now() >> "CET",
'EST': |2022-11-10T12:10:10-04:00|,
'EST2Pacific': |2022-11-10T12:10:10-04:00| >> "-08",
'EST2Pacific': |2022-11-10T12:10:10-04:00| >> "America/Los_Angeles"
}
]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow5" doc:id="8dd578bf-6011-473f-8d98-
1b6eae3a9cde" >
<ee:transform doc:name="period operations" doc:id="726db7b0-3944-
492c-a7ca-9acac8ea79af" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
'now': now(),
'yesterday': now() -|P1D|,
'tomorrow': now() + |P1D|,
'last month': |P1M| - now(),
'next month': |P1M| + now(),
'last year': now() - |P1Y|,
'next year': now() + |P1Y|,
'last minute': now() - |PT1M|,
'after 10 minutes': now() + |PT10M|,
'after 10 seconds': now() + |PT10S|,
'Before 10 minutes': now() - |PT10M|,
'Before 10 seconds': now() - |PT10S|,
}]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow7" doc:id="d67a1dcc-f3af-413c-8bec-
7526a7e81d72" >
<ee:transform doc:name="period operations with replacement"
doc:id="448ee091-c67d-41a4-8228-d2a2e9f5fd5d" >
<ee:message >
<ee:set-payload ><![CDATA[output application/json
var days_before = 5
var months_before = 4
var years_before = 2
var minutes_after = 10
var seconds_after = 5
---
{
'now': now(),
'days_before': now() -'P$(days_before)D',
'months_before': now()-'P$(months_before)M',
'years_before': now() - 'P$(years_before)Y',
'minutes_after': now() + 'PT$(minutes_after)M',
'seconds_after': now() + 'PT$(seconds_after)S'
}]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow8" doc:id="a73bd71d-3469-4dd8-9f7a-
6ddbb44ba425" >
<ee:transform doc:name="++ and + with arrays and objects"
doc:id="fa3cc554-15db-4a46-85e1-e3b046e76179" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

var array1 = ['a', 'b', 3, 5, true]


var array2 = 5 to 10
var object1 = {name: "Hagos", age:24}
var object2 = {occupation: "MuleSoft Developer", salary: 148000}
---
// array1 + array2

// array1 ++ array2

// array1 + object1

// object1 ++ array1

// array1 ++ object1

// object1 + object1

object1 ++ object2

]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow6" doc:id="2bfdbc96-dafd-469f-bf48-
2192a5a8d598" >
<ee:transform doc:name="-- and - with arrays and objects"
doc:id="aa9372c5-3b4c-4970-8b30-03743ba0da57" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

var array1 = ['a', 'b', 3, 5, true]


var array2 = 5 to 10
var object1 = {name: "Hagos", age:24}
var object2 = {occupation: "MuleSoft Developer", salary: 148000}
---
//array1 --[3,5]

// array1 -3
// array1 - [3]
// array1 -[3,5]

{ "yes" : "no", "good" : "bad", "old" : "new" } -- ["yes", "old"]]]></ee:set-


payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow12" doc:id="cebd87ab-883d-424e-9f56-
0e00c86d566a" >
<ee:transform doc:name="zip, unzip, valuesOf and keysOf"
doc:id="a88838d3-c867-4917-a8d4-cb1e1365a6dc" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
var lat_lon = zip(payload map $.lat, payload map $.lon)
---
// payload

// payload[0]

// keysOf(payload[0])

// valuesOf(payload[0])

//zip(keysOf(payload[0]),valuesOf(payload[0]))

//zip(payload map $.lat, payload map $.lon)

unzip(lat_lon)]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>

<flow name="dataweave-class6Flow6" doc:id="64b3276c-071b-4b60-ba3e-


bbbd92b11c30" >
<ee:transform doc:name="reverse order of keys in an object"
doc:id="bdd77366-08f0-47d4-89f0-8b789ca7d76f" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

/* Reverse the order of the key value pairs in the object below.
birth_year: 1995 should be first and name: 'John' should be last
*/

var myData = {name: 'John',


age: 45,
occupation: 'IT',
birth_year: 1995
}

/*
print the output of the variables below step by step and understand what it is
doing.
*/

---

//(myData pluck (value, key) ->{(key):value}) orderBy -$$ reduce(element, accu


= {})-> accu ++ element

(myData pluck (value, key) ->{(key):value}) reduce(element, accu = {})-> element


++ accu

]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow13" doc:id="15471011-88ea-4ccb-89ca-
d4027e430581" >
<ee:transform doc:name="reduce" doc:id="d49f0338-ccac-4bc2-bbbb-
676604367c7f" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
/*
Use reduce to transform the input array into the object below. Keep in mind
that the concatenation
* function ++ seen before for Strings also works between Objects as seen in the
starting example,
* where you can also see how dynamic keys are defined in an Object.
*/

var myData = [
{"id": "1", "name": "dev"},
{"id": "2", "name": "test"},
{"id": "3", "name": "uat"},
{"id": "4", "name": "prod"}
]
---
myData reduce (element, accu = {}) -> accu ++ {(element.name):
element.id}]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow14" doc:id="53911b26-b98e-4347-94ef-
0f3b4aeb8e14" >
<ee:transform doc:name="map filter and get dayOfWeek"
doc:id="0ff210e5-333e-4bb3-8f26-a8d17a99f43d" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

// Get the output from the input

var myData = [
{
"datetime": "2020-01-01T08:00:00",
"event": "Breakfast @ Cafe",
"organizer": "Phoebe"
},
{
"datetime": "2020-01-02T18:00:00",
"event": "Study for cert exam",
"organizer": "Ross"
},
{
"datetime": "2020-01-04T16:00:00",
"event": "Drinks w/ friends",
"organizer": "Monica"
},
{
"datetime": "2020-01-08T08:00:00",
"event": "Develop mule application",
"organizer": "Ross"
},
{
"datetime": "2020-01-05T08:00:00",
"event": "Football game",
"organizer": "Joey"
}
]

var myOutput = [
{
"datetime": "2020-01-02T18:00:00",
"event": "Study for cert exam",
"organizer": "Ross",
"day_of_week": 4
},
{
"datetime": "2020-01-08T08:00:00",
"event": "Develop mule application",
"organizer": "Ross",
"day_of_week": 3
}
]
---
(myData filter $.organizer=='Ross') map (item , index) -
>{ datetime: item.datetime,
event: item.event,
organizer: item.organizer,
day_of_week: (item.datetime as LocalDateTime).dayOfWeek
}]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow16" doc:id="d9fe07aa-0a98-43e2-aa1d-
cb96353ea972" >
<ee:transform doc:name="filter multiple" doc:id="3bae9ec8-9451-41c2-
9859-9b2e345239b3" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

// remove ["deleted", "processed"]

var myInput = [
"starting",
"waiting",
"deleted",
"processing",
"processed"
]
---
myInput filter not (($ =='deleted') or ($ =='processed'))]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow17" doc:id="648ed77f-2791-4978-8ea0-
c396c36f7522" >
<ee:transform doc:name="exercise 8.2" doc:id="dad90f6e-d0a2-4905-
9c57-b53183a775d3" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

/*
Let's combine what we just learned with what we have also learned about arrays
to
* transform all objects in the following array, so their keys are lower case
and
* their values are upper case.

*/
var myInput = [
{"First Name": "Max", "Last Name": "The Mule"},
{"First Name": "Albert", "Last Name": "Einstein"}
]
---

myInput map (item, index1) -> item mapObject (value, key, index2) ->
{ (lower(key)): upper(value)}

]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow15" doc:id="4675491b-0bbd-44cf-8655-
f9fc72884446" >
<ee:transform doc:name="double map" doc:id="461bedb9-436b-40c2-8244-
f1cc7fc38599" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

var myInput = [
{
"name": "Archer",
"jobs": [
{ "type": "developer" },
{ "type": "investor" },
{ "type": "educator" }
]
},
{
"name": "Cyril",
"jobs": [
{ "type": "developer" },
{ "type": "entrepreneur" },
{ "type": "lion tamer" }
]
}
]

/*
var required_output = [
{
"num": 1
"name": "Archer",
"jobs": [
{ "num": 1, "type": "developer" },
{ "num": 2, "type": "investor" },
{ "num": 3, "type": "educator" }
]
},
{
"num": 2
"name": "Cyril",
"jobs": [
{ "num": 1, "type": "developer" },
{ "num": 2, "type": "entrepreneur" },
{ "num": 3, "type": "lion tamer" }
]
}
]

*/
---
myInput map (value, index) ->
{ num: index + 1,
name: value.name,
jobs: value.jobs.`type` map (value2, index2) -
>{ num: index2 + 1,
`type`: value2
}
}]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow18" doc:id="f111333d-6323-4f42-8124-
b3bfcc66a0ce" >
<ee:transform doc:name="text to object" doc:id="b290057d-3228-4015-
a1e9-1aeff16d0cc3" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

var myInput = "name=Lansdowne Airport;lat=41.1304722; lon=-80.6195833;alt=1044;


tz=-5;tzone=America/New_York"
---

splitBy(myInput, ";") reduce(element, accu = {})-> accu ++ {(splitBy(element,


"=")[0]): splitBy(element, "=")[1]}]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow19" doc:id="48a63e9e-b9ed-4cdd-99f6-
3d9e5daa93a4" >
<ee:transform doc:name="remove the key if the value is null"
doc:id="1ce112b7-36b6-4748-9c36-97b9a924651f" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

var myData = [{
"name" : "Putnam County Airport",
"lat" : 39.6335556,
"lon" : null,
"alt" : 842,
"tz" : -5,
"tzone" : null
},
{
"name" : "Dell Flight Strip",
"lat" : 44.7357483,
"lon" : -112.7200133,
"alt" : null,
"tz" : -7,
"tzone" : "America/Denver"
}]

---

myData map {name: $.name,


(lat: ($.lat)) if (($.lat != null) and ($.lon != null)),
(lon: $.lon) if (($.lat != null) and ($.lon != null)),
(alt: $.alt) if ($.alt != null),
(tz: $.tz) if ($.tz != null),
(tzone: $.tzone) if ($.tzone != null)}]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow20" doc:id="1f129a26-5b41-4bef-b6a1-
c84dcbe70592" >
<ee:transform doc:name="filter by reduce" doc:id="1ec21e0a-705a-
4274-a6b7-ef5d623bbb5e" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

// replace filter by reduce

// 1 to 10 filter (($ mod 2) == 0) map ($*2)

// [1, 2,3] +[] is just [1,2,3]: using this logic below


---

1 to 10 reduce(element, accu = []) ->


accu ++ [(element * 2) if ((element mod 2) == 0)] ]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow21" doc:id="f2c99717-3887-4311-b5ce-
b6cfa21b33b5" >
<ee:transform doc:name="reduce for map" doc:id="b0941145-00fc-43a0-
8e43-05199da37ca4" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

var cities = [
city1: { elevation: '10,361 ft',
average_yearly_temperature: '32 °F',
},

city2: {
elevation: '10,312 ft',
average_yearly_temperature: '212 °F',
},

city3:
{ elevation: '10,151 ft',
average_yearly_temperature: '-40 °F',
},

fun cleanFeet(feet) = trim(feet replace 'ft' with '' replace ',' with '') as
Number
fun cleandeegresF(degreesF) = trim(degreesF replace '°F' with '')

fun myMapObject(object) = object mapObject(value2, key2, index2)->


{(key2): {elevation: round(cleanFeet(value2.elevation) * 0.3048) ++ '
meteres',
average_yearly_temperature:
1/1.8*(cleandeegresF(value2.average_yearly_temperature)-32)
++ '°C',
}}
---
/*
cities map (value1, index1) -> value1 mapObject(value2, key2, index2)->
{(key2): {elevation: round(cleanFeet(value2.elevation) * 0.3048) ++ ' meteres',
average_yearly_temperature:
1/1.8*(cleandeegresF(value2.average_yearly_temperature)-32)
++ '°C',
}}
*/
cities reduce (object, accumulator = []) -> accumulator ++
[myMapObject(object)]]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow22" doc:id="5d354fbc-13c2-41bc-a274-
175d647a2a6a" >
<ee:transform doc:name="reduce for min and max" doc:id="70f79020-
0c50-46e0-9fc1-2d41cc424c2f" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

// find the greatest and smallest values of an array using reduce

var myArray = (1 to 5) ++ (-45 to -30) ++ (25 to 45)


//var myMax = myArray reduce ((item, accumulator=startNumber) ->
if(item>accumulator) item else accumulator)

var Maxx = myArray reduce (element, accu) -> if(element > accu) element else
accu
var Minn = myArray reduce (element, accu) -> if(element > accu) accu else
element
---

//{max: max(myArray), min: min(myArray)}

{max: Maxx, min:Minn}


]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow23" doc:id="9512c08f-a03a-4dc2-8712-
a584e51754d8" >
<ee:transform doc:name="Is prime number?" doc:id="f5fe21d8-10b8-
4c63-b693-f60fe4fb1b8d" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
// A prime number is a natural number greater than 1, and only divisible by 1
and itself

// assume you are given a number, check if it is a prime number

var givenNumber = 347 // change this value to test for various numbers

// first generate an array of the numbers from 2 to the givenNumber minus 1


// if the remainder is zero when we divide the givenNumber by any value in
generatedArray,
// givenNumber is prime else givenNumber is not prime number.

var generatedArray = 2 to givenNumber -1


---
if ((generatedArray map (item, index) -> mod(givenNumber, item)) contains 0)
'Not prime' else 'Prime'

]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow24" doc:id="06a92700-cbee-4c20-952f-
e984a5d8ba3c" >
<ee:transform doc:name="xml to array" doc:id="29c0cb32-c39d-472d-
9c38-610d3b283170" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

// convert the xml the attached file to the output below.

var expectedOutPut = [
{
"id": "501",
"to": "Tove",
"from": "Jani",
"heading": "Reminder",
"body": "Don't forget me this weekend!"
},
{
"id": "502",
"to": "Jani",
"from": "Tove",
"heading": "Re: Reminder",
"body": "I will not"
}
]
---

(payload.messages) pluck (value, key, index) -> {


id: value.@id,
to: value.to,
from: value.from,
heading: value.heading,
body: value.body
}
]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow25" doc:id="4b95db31-f355-422b-b824-
55f98e45e92a" >
<ee:transform doc:name="array to xml" doc:id="3c67f647-56e9-4235-
b56a-259d48db47a9" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/xml

// convert the input to the output shown

var ages = [34, 56, 78]


---

ages:{(
ages map (value, index) ->
{ age:{service_year: value}
}
)}
/*

ages:{(ages reduce(element, accu = {})-> accu ++ {age: {service: element}}


)}
*
*/
]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow26" doc:id="0f9f5c16-6c28-4c22-bc33-
4d030973e397" >
<ee:transform doc:name="array to xml2" doc:id="edac54d9-da7b-4db5-
b112-e8ce9deed76f" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/xml

var myInput = [
{
"name" : "Lansdowne Airport",
"lat" : 41.1304722,
"lon" : -80.6195833,
"alt" : 1044,
"tz" : -5,
"tzone" : "America/New_York"
},
{
"name" : "Moton Field Municipal Airport",
"lat" : 32.4605722,
"lon" : -85.6800278,
"alt" : 264,
"tz" : -6,
"tzone" : "America/Chicago"
}
]
---
employees:
employee @(firtName:myInput[0].employee1.firstName,
lastName:myInput[0].employee1.lastName
):null]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-of-the-dayFlow31" doc:id="a4c9cbd0-43fc-440e-9826-
101fa4eb14d1" >
<ee:transform doc:name="Transform Message" doc:id="46cde207-793d-
4a92-befe-1ec7ecd2a136" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
//sizeOf(payload filter $.tz == -5)

sizeOf(payload filter $.tzone == 'America/New_York')]]></ee:set-payload>


</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-interview-questionsFlow" doc:id="48b52959-9d2f-4dc2-
b6c6-d7faf718d952" >
<ee:transform doc:name="extraction" doc:id="997b3e11-c9e1-4d6f-a564-
07b3ce935011" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

// create the output from the input

var myInput = {name: "John Harvey",


"AddressLine1": "1234 NW Peace St",
"AddressLine2": "Apt. 4578",
"zip": 23456
}

---

{
name: myInput.name,
streetName: (myInput.AddressLine1 splitBy(" "))[1 to -1] reduce(a, b) -> b
++ " " ++ a,
houseNumber: (myInput.AddressLine1 splitBy(" "))[0],
apartmentNumber: splitBy(myInput.AddressLine2, " ")[1],
zipcode: myInput.zip
}]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-interview-questionsFlow1" doc:id="9da435de-ed74-
4554-a1f7-cb23568fa7e8" >
<ee:transform doc:name="shopping list" doc:id="079fc43e-4010-487c-
b8cc-d0e5a0649f84" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

var mulusoftGrus = {
manager: 'Roman',
groupLions: {
name: 'Feven',
name: 'Letay',
groupTigers: {
name: 'Helen',
name: 'Rahel',
groupAcers:{
name: 'Lily',
name: 'Hope'
}
}
}
}
---

{
"first_id_from_each_level": myInput..id,
"all_ids_from_first_level":myInput.*id,
"all_ids_from_second_level": myInput.secondLevel.*id,
"all_ids_from_third_level": myInput.secondLevel.thirdLevel.*id ,
"all_ids": myInput..*id
}
]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-interview-questionsFlow2" doc:id="9f2be92c-6f18-
4715-a01d-f82fa59015ed" >
<ee:transform doc:name="check if a numbe is composite number"
doc:id="e3ae05e8-0a68-48c8-998c-1f62ae870692" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

fun checkIfComposite(givenNumber) = do {
var arrayOfNumbers = 2 to givenNumber - 1
var remainders = arrayOfNumbers map (value, index) ->
mod(givenNumber, value)
---
if (!isInteger(givenNumber) or (givenNumber < 3)) 'Incorrect Input'

else if (remainders contains 0) 'Composite Number'


else 'Not Composite Number'
}
---

checkIfComposite(51)]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-interview-questionsFlow3" doc:id="ca133ac2-04e9-
4575-a95c-2f217d7f5792" >
<ee:transform doc:name="two arrays: common and not common"
doc:id="854b3ecd-47f1-41d0-8b35-0868667c6cbf" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
// Given two arrays below, find (a): common values,
// (b) values only in either of them

var v1 = [2,3,8, 7, 10, 15]


var v2 = [4, 7, 3, 25, -10]
var common = v1 filter (value, index) -> v2 contains value
var common2 = v1 -- (v1 -- v2)
var only_v1 = v1 filter (value, index) -> !(v2 contains value)
var only_v1_2 = v1 -- v2
var only_v2 = v2 filter (value, index) -> !(v1 contains value)
var only_v2_2 = v2 -- v1
var only_in_either = only_v1 ++ only_v2
var only_in_either2 = only_v1_2 ++ only_v2_2
---
{only_v1: only_v1,
only_v2: only_v2,
common: common,
only_in_either: only_in_either,
common2: common2,
only_v1_2: only_v1_2,
only_v2_2: only_v2_2,
only_in_either2: only_in_either2
}]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-interview-questionsFlow4" doc:id="b3c6ed29-a065-
4bc5-840b-8bb5485e3c88" >
<ee:transform doc:name="groupBy and pluck" doc:id="0b75eed0-ee90-
4c60-a403-2bb69f89c818" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

var myInput = [
{id: 1,
name: 'John',
lastName: 'Mark',
state: 'MD',
city: 'Columbia'
},

{id: 2,
name: 'Luke',
lastName: 'Mark',
state: 'MD',
city: 'Baltimore'
},

{id: 3,
name: 'Mathew',
lastName: 'Mark',
state: 'VA',
city: 'Alexandria'
}

]
---

myInput groupBy ((item, index) -> item.id)


pluck ((value, key, index) -> {id: key, name:
value.name[0], lastName: value.lastName[0],
location: {state: value.state[0], city:
value.city[0]}
} )
]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-interview-questionsFlow5" doc:id="3e8d7e3d-d937-
479a-9f26-25301d119d95" >
<ee:transform doc:name="find min, max, mean and median"
doc:id="1f7f13c6-7172-47f0-9f91-fcd7294513b0" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

import isNumeric from dw::core::Strings


var myArray = [1,"a",2,"b",3,"c",4,"d",5,"e",6,"f",7,"g",8,"h", 9,"i", 10, "j"]

var numbersOnly = (myArray filter isNumeric($)) map $ as Number


var numberOnly2 = myArray filter typeOf($) == Number
var sizeArray = sizeOf(numbersOnly)
var medianIndex = if(mod(sizeArray, 2) == 0) numbersOnly[sizeArray/2 -1 to
sizeArray/2]
else [numbersOnly[sizeOf(numbersOnly)/2 - 0.5]]
var median = avg(medianIndex)

var myAnswer = {min: min(numbersOnly),


max: max(numbersOnly),
mean: avg(numbersOnly),
median: median
}

---
myAnswer]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-interview-questionsFlow6" doc:id="46a07c20-d38a-
4ee7-953c-ca3cc6996ec9" >
<ee:transform doc:name="filterObject" doc:id="5c67b9c0-086a-4d3f-
8140-c6d919cc328e" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
// return only the keys:value pairs where the value is a string.

var myObj = {
"key1":"hello world!",
"key2": "fish is healthy food",
"key3": 45,
"key4": true
}
---
myObj filterObject ((value, key, index) ->
typeOf(value) == String
)]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-interview-questionsFlow7" doc:id="7afe49a9-b607-
462d-b171-3c02bf299675" >
<ee:transform doc:name="Transform Message" doc:id="92e08311-28ad-
49fd-a29a-45346afaa0e5" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

//Get the output from the input

var myKids = [
{
name: 'noah',
favorites: [
{food: "pizza"},
{fruit:"apple"}
]
},
{
name:'jacob',
favorites: [
{food: "pizza"},
{fruit:"banana"}
]}]
---
myKids map ((item, index) -> {nameID: index + 100,
name: item.name,
favorites: item.favorites map ((item2, index2) ->
{favoriteID: index2 + 200,
(item2)
}
)
})]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="dataweave-interview-questionsFlow8" doc:id="bc74f7c2-aa43-
4d47-bec4-4eab98e7efd4" >
<ee:transform doc:name="create an array of dates" doc:id="c371ba9f-
6bc2-42f1-a1b7-c63fdb6bd7d7" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json

// create an array of dates between given start_date and end date

fun createArrayOfDates(start_date, end_date) = do {


var myDates = []
var startDate = start_date as Date
var endDate = end_date as Date
---
if (endDate < startDate) myDates
else if (endDate == startDate) myDates ++ [startDate]
else if (endDate > startDate) do(
var
)
}
---
{
}]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
</mule>

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy