Commons Scripts
Tags: groupBy
Input
[
{
"dateMovement": "2021-06-07T00:00:00-03:00",
"descriptionExtract": "Payment",
"value": 24546.74,
"typeMovement": "A"
},
{
"dateMovement": "2021-06-07T00:00:00-03:00",
"descriptionExtract": "Payment",
"value": 24588.46,
"typeMovement": "D"
},
{
"dateMovement": "2021-06-09T00:00:00-03:00",
"descriptionExtract": "Payment",
"value": 2559.38,
"typeMovement": "A"
},
{
"dateMovement": "2021-06-10T00:00:00-03:00",
"descriptionExtract": "Payment",
"value": 2559.38,
"typeMovement": "D"
}
]Script
%dw 2.0
output application/json
---
{
releases: (payload groupBy ((item, index) -> item.dateMovement) mapObject ((value, key) ->
group: {
dataReference: key,
detailsLaunch: value map ((item, index) -> {
description: item.descriptionExtract,
value: item.value,
typeMovement: item.typeMovement
})
}
)).*group
}Output
{
"releases": [
{
"dataReference": "2021-06-07T00:00:00-03:00",
"detailsLaunch": [
{
"description": "Payment",
"value": 24546.74,
"typeMovement": "A"
},
{
"description": "Payment",
"value": 24588.46,
"typeMovement": "D"
}
]
},
{
"dataReference": "2021-06-09T00:00:00-03:00",
"detailsLaunch": [
{
"description": "Payment",
"value": 2559.38,
"typeMovement": "A"
}
]
},
{
"dataReference": "2021-06-10T00:00:00-03:00",
"detailsLaunch": [
{
"description": "Payment",
"value": 2559.38,
"typeMovement": "D"
}
]
}
]
}Tags: groupBy valueOf
Input
[
{
"item": 621,
"orderid": "ON22",
"qty": 45.0,
"customer": "813",
"date": "1988-08-13"
},
{
"item": 63,
"orderid": "ON22",
"qty": 7,
"customer": "813",
"date": "2001-08-13"
},
{
"item": 54,
"orderid": "AD546",
"qty": 9,
"customer": "813",
"date": "2014-08-13"
},
{
"item": 611,
"orderid": "ON222723-JH",
"qty": 78.0,
"customer": "890",
"date": "1990-05-11"
}
]Script
%dw 2.0
output application/json
// Concat customer and ordered as the key to group the items. Use a character that can't be part of any of the fields.
var groupedOrders = payload groupBy ((item, index) -> item.customer ++ "|" ++ item.orderid)
---
valuesOf(groupedOrders) map ((items, index) ->
{
// I'm getting the first element as all in the items collection should have the same customer and orderid
"customer": items[0].customer,
"orderid": items[0].orderid,
// The map here is just to remove the repeated fields
"data": items map ((item, index) -> item - "customer" - "orderid")
}
)Output
[
{
"customer": "813",
"orderid": "ON22",
"data": [
{
"item": 621,
"qty": 45,
"date": "1988-08-13"
},
{
"item": 63,
"qty": 7,
"date": "2001-08-13"
}
]
},
{
"customer": "813",
"orderid": "AD546",
"data": [
{
"item": 54,
"qty": 9,
"date": "2014-08-13"
}
]
},
{
"customer": "890",
"orderid": "ON222723-JH",
"data": [
{
"item": 611,
"qty": 78,
"date": "1990-05-11"
}
]
}
]Tags: map mapObject flatMap flatten
Input
[
{
"options": [
{
"modality": "0101",
"LinkEM": "N",
"options": [
{
"110": "10.31"
}
]
},
{
"modality": "0216",
"LinkEM": "N",
"salaries": [
{
"110": "4609.40",
"120": "4554.65",
"130": "4492.05",
"140": "13133.82",
"150": "24801.09",
"160": "44238.70",
"165": "37894.92",
"170": "5769.20"
}
]
},
{
"modality": "0299",
"LinkEM": "N",
"salaries": [
{
"110": "4801.36",
"120": "2966.25",
"130": "2966.25",
"140": "7063.64",
"150": "13700.26"
}
]
},
{
"modality": "1904",
"LinkEM": "N",
"salaries": [
{
"40": "2000.00"
}
]
}
],
"idPerson": "3dc19c13-445d-46eb-9255-137b190229ac",
"idPersonCRS": 598
},
{
"options": [
{
"modality": "0216",
"LinkEM": "N",
"salaries": [
{
"110": "11790.77",
"120": "11754.23",
"130": "11718.25",
"140": "34944.40",
"150": "68990.52",
"160": "51719.49",
"165": "23170.77"
}
]
},
{
"modality": "1350",
"LinkEM": "N",
"salaries": [
{
"110": "837.02"
}
]
},
{
"modality": "1902",
"LinkEM": "N",
"salaries": [
{
"20": "53200.00"
}
]
},
{
"modality": "1904",
"LinkEM": "N",
"salaries": [
{
"40": "45000.00"
}
]
}
],
"idPerson": "681d032c-6023-4a3b-96e4-21f0add95d1b",
"idPersonCRS": 254
}
]Script
%dw 2.0
output application/json
---
flatten ((payload map (item, index) -> {
mapPay : item.options map (itemOptions, indexOptions) -> {
mapOp: itemOptions.salaries map (itemSalaries, indexSalaries) -> {
mapVenc: itemSalaries mapObject (value, key, index) -> {
mapValue: {
idPersonCRS: item.idPersonCRS,
modality: itemOptions.modality,
LinkEM: itemOptions.LinkEM,
cdSalaries: key,
vlSalaries: value
}
}
}
}
}) flatMap (valueFlat, index) -> valueFlat.mapPay.mapOp).*mapVenc.*mapValueOutput
[
{
"idPersonCRS": 598,
"modality": "0216",
"LinkEM": "N",
"cdSalaries": "110",
"vlSalaries": "4609.40"
},
{
"idPersonCRS": 598,
"modality": "0216",
"LinkEM": "N",
"cdSalaries": "120",
"vlSalaries": "4554.65"
},
{
"idPersonCRS": 598,
"modality": "0216",
"LinkEM": "N",
"cdSalaries": "130",
"vlSalaries": "4492.05"
},
{
"idPersonCRS": 598,
"modality": "0216",
"LinkEM": "N",
"cdSalaries": "140",
"vlSalaries": "13133.82"
},
{
"idPersonCRS": 598,
"modality": "0216",
"LinkEM": "N",
"cdSalaries": "150",
"vlSalaries": "24801.09"
},
{
"idPersonCRS": 598,
"modality": "0216",
"LinkEM": "N",
"cdSalaries": "160",
"vlSalaries": "44238.70"
},
{
"idPersonCRS": 598,
"modality": "0216",
"LinkEM": "N",
"cdSalaries": "165",
"vlSalaries": "37894.92"
},
{
"idPersonCRS": 598,
"modality": "0216",
"LinkEM": "N",
"cdSalaries": "170",
"vlSalaries": "5769.20"
},
{
"idPersonCRS": 598,
"modality": "0299",
"LinkEM": "N",
"cdSalaries": "110",
"vlSalaries": "4801.36"
},
{
"idPersonCRS": 598,
"modality": "0299",
"LinkEM": "N",
"cdSalaries": "120",
"vlSalaries": "2966.25"
},
{
"idPersonCRS": 598,
"modality": "0299",
"LinkEM": "N",
"cdSalaries": "130",
"vlSalaries": "2966.25"
},
{
"idPersonCRS": 598,
"modality": "0299",
"LinkEM": "N",
"cdSalaries": "140",
"vlSalaries": "7063.64"
},
{
"idPersonCRS": 598,
"modality": "0299",
"LinkEM": "N",
"cdSalaries": "150",
"vlSalaries": "13700.26"
},
{
"idPersonCRS": 598,
"modality": "1904",
"LinkEM": "N",
"cdSalaries": "40",
"vlSalaries": "2000.00"
},
{
"idPersonCRS": 254,
"modality": "0216",
"LinkEM": "N",
"cdSalaries": "110",
"vlSalaries": "11790.77"
},
{
"idPersonCRS": 254,
"modality": "0216",
"LinkEM": "N",
"cdSalaries": "120",
"vlSalaries": "11754.23"
},
{
"idPersonCRS": 254,
"modality": "0216",
"LinkEM": "N",
"cdSalaries": "130",
"vlSalaries": "11718.25"
},
{
"idPersonCRS": 254,
"modality": "0216",
"LinkEM": "N",
"cdSalaries": "140",
"vlSalaries": "34944.40"
},
{
"idPersonCRS": 254,
"modality": "0216",
"LinkEM": "N",
"cdSalaries": "150",
"vlSalaries": "68990.52"
},
{
"idPersonCRS": 254,
"modality": "0216",
"LinkEM": "N",
"cdSalaries": "160",
"vlSalaries": "51719.49"
},
{
"idPersonCRS": 254,
"modality": "0216",
"LinkEM": "N",
"cdSalaries": "165",
"vlSalaries": "23170.77"
},
{
"idPersonCRS": 254,
"modality": "1350",
"LinkEM": "N",
"cdSalaries": "110",
"vlSalaries": "837.02"
},
{
"idPersonCRS": 254,
"modality": "1902",
"LinkEM": "N",
"cdSalaries": "20",
"vlSalaries": "53200.00"
},
{
"idPersonCRS": 254,
"modality": "1904",
"LinkEM": "N",
"cdSalaries": "40",
"vlSalaries": "45000.00"
}
]Tags: java double
adds zero when number is integer and has no decimal part. Doc java Double
Input
{
"amount": 123
}Script
%dw 2.0
import java!java::lang::Double
output application/json
---
Double::parseDouble(payload.amount)Output
123.0Tags: update array
Input
{
"pending": [
{
"amount": 100,
"fee": 500
},
{
"amount": 123,
"fee": 500
}
],
"x": 1
}Script
%dw 2.0
output application/json
---
payload update {
case pending at .pending -> pending map ((item, index) -> item update {
case amout at .amount -> amout/100
case fee at .fee -> fee/100
})
}Output
{
"pending": [
{
"amount": 1,
"fee": 5
},
{
"amount": 1.23,
"fee": 5
}
],
"x": 1
}Tags: date
Input
{
"date": "2023-02-15"
}Script
%dw 2.0
fun firstDateOfMonth(value: Date): Date =
(value as String {format: "yyyy-MM"} ++ "-01") as Date
fun lastDateOfMonth(value: Date): Date =
(((value as String {format: "yyyy-MM"} ++ "-01") as Date {format: "yyyy-MM-dd"}) + |P1M| - |P1D|) as Date
output application/json
---
{
"firstDateOfCurrentMonth": firstDateOfMonth(payload.date),
"LastDateOfCurrentMonth": lastDateOfMonth(payload.date)
}Output
{
"firstDateOfMonth": "2023-02-01",
"LastDateOfMonth": "2023-02-28"
}Tags: size
Input
{
"squadName": "Super hero squad",
"homeTown": "Metro City",
"formed": 2016,
"secretBase": "Super tower",
"active": true,
"members": [
{
"name": "Molecule Man",
"age": 29,
"secretIdentity": "Dan Jukes",
"powers": ["Radiation resistance", "Turning tiny", "Radiation blast"]
},
{
"name": "Madame Uppercut",
"age": 39,
"secretIdentity": "Jane Wilson",
"powers": [
"Million tonne punch",
"Damage resistance",
"Superhuman reflexes"
]
},
{
"name": "Eternal Flame",
"age": 1000000,
"secretIdentity": "Unknown",
"powers": [
"Immortality",
"Heat Immunity",
"Inferno",
"Teleportation",
"Interdimensional travel"
]
}
]
}
Script
%dw 2.0
output application/json
var content = write(payload, 'application/json', {indent: true})
var size = sizeOf(content) / 1024
---
(size as String {format: '#.00'} ++ ' KB')Output
".81 KB"Tags: size format
Input
{
"BtoKB": 1024,
"BtoMB": 2097152,
"BtoGB": 1196855296,
"BtoZB": 13486197334567809440000,
"KBtoB": 12,
"KBtoMB": 32454,
"KBtoGB": 2243424,
"MBtoB": 1394567,
"MBtoKB": 64366790,
"MBtoGB": 12345,
"GBtoB": 1,
"GBtoKB": 1,
"GBtoMB": 1,
"GBtoYB": 1125899906842624,
"TBtoGB": 1,
"PBtoGB": 1,
"EBtoGB": 1,
"ZBtoGB": 1,
"YBtoGB": 0.0000000000000023
}Script
%dw 2.0
type typesUnitMeasure = 'B' | 'KB' | 'MB' | 'GB' | 'TB' | 'PB' | 'EB' | 'ZB' | 'YB'
fun formatUnitsMeasureComputation(value: Number, inputUnitMeasure: typesUnitMeasure, outputUnitMeasure: typesUnitMeasure, displayUnitMeasure = false) =
if (value > 0)
do {
var valueInput = inputUnitMeasure match {
case "B" -> value
case "KB" -> value * 1024
case "MB" -> value * (1024 pow 2)
case "GB" -> value * (1024 pow 3)
case "TB" -> value * (1024 pow 4)
case "PB" -> value * (1024 pow 5)
case "EB" -> value * (1024 pow 6)
case "ZB" -> value * (1024 pow 7)
case "YB" -> value * (1024 pow 8)
}
var valueOutput = outputUnitMeasure match {
case "B" -> valueInput
case "KB" -> valueInput / 1024
case "MB" -> valueInput / (1024 pow 2)
case "GB" -> valueInput / (1024 pow 3)
case "TB" -> valueInput / (1024 pow 4)
case "PB" -> valueInput / (1024 pow 5)
case "EB" -> valueInput / (1024 pow 6)
case "ZB" -> valueInput / (1024 pow 7)
case "YB" -> valueInput / (1024 pow 8)
}
var round = valueOutput as String {format: '0.00'}
---
if (displayUnitMeasure)
round ++ " " ++ outputUnitMeasure as String
else
round as Number
}
else
0
output application/json
---
// formatUnitsMeasureComputation(13486197309440000, "B", "PB")
{
"BtoKB": formatUnitsMeasureComputation(payload.BtoKB, "B", "KB"),
"BtoMB": formatUnitsMeasureComputation(payload.BtoMB, "B", "MB", true),
"BtoGB": formatUnitsMeasureComputation(payload.BtoGB, "B", "GB"),
"BtoZB": formatUnitsMeasureComputation(payload.BtoZB, "B", "ZB"),
"KBtoB": formatUnitsMeasureComputation(payload.KBtoB, "KB", "B"),
"KBtoMB": formatUnitsMeasureComputation(payload.KBtoMB, "KB", "MB"),
"KBtoGB": formatUnitsMeasureComputation(payload.KBtoGB,"KB", "GB", true),
"MBtoB": formatUnitsMeasureComputation(payload.MBtoB,"MB", "B"),
"MBtoKB": formatUnitsMeasureComputation(payload.MBtoKB,"MB", "KB"),
"MBtoGB": formatUnitsMeasureComputation(payload.MBtoGB,"MB", "GB"),
"GBtoB": formatUnitsMeasureComputation(payload.GBtoB,"GB", "B"),
"GBtoKB": formatUnitsMeasureComputation(payload.GBtoKB,"GB", "KB", true),
"GBtoMB": formatUnitsMeasureComputation(payload.GBtoMB,"GB", "MB"),
"GBtoYB": formatUnitsMeasureComputation(payload.GBtoYB,"GB", "YB"),
"TBtoGB": formatUnitsMeasureComputation(payload.TBtoGB,"TB", "GB"),
"PBtoGB": formatUnitsMeasureComputation(payload.PBtoGB,"PB", "GB", true),
"EBtoGB": formatUnitsMeasureComputation(payload.EBtoGB,"EB", "GB"),
"ZBtoGB": formatUnitsMeasureComputation(payload.ZBtoGB,"ZB", "GB"),
"YBtoGB": formatUnitsMeasureComputation(payload.YBtoGB,"YB", "GB")
}
Output
{
"BtoKB": 1,
"BtoMB": "2.00 MB",
"BtoGB": 1.11,
"BtoZB": 11.42,
"KBtoB": 12288,
"KBtoMB": 31.69,
"KBtoGB": "2.14 GB",
"MBtoB": 1462309486592,
"MBtoKB": 65911592960,
"MBtoGB": 12.06,
"GBtoB": 1073741824,
"GBtoKB": "1048576.00 KB",
"GBtoMB": 1024,
"GBtoYB": 1,
"TBtoGB": 1024,
"PBtoGB": "1048576.00 GB",
"EBtoGB": 1073741824,
"ZBtoGB": 1099511627776,
"YBtoGB": 2.59
}Tags: calculate date age
Input
{
"dateToCalculate": "1995-10-11"
}Script
%dw 2.0
output application/json
import between from dw::core::Periods
var age = between(now() as Date, payload.dateToCalculate as Date)
---
{
"years" : age.years,
"months": age.months,
"days": age.days
}Output
{
"years": 27,
"months": 5,
"days": 11
}Tags: number coercions format
Script
%dw 2.0
output application/json
---
{
noRounding: 0.456,
roundUP: 0.456 as String {format: "0.00"},
roundUP: 0.456 as String {format: "0.0"},
double: 1234.56 as String,
double1: 1234.56 as Number as String {format: "#,###"},
double2: (1234.56 + 0.2) as Number as String {format: "#"},
double3: 1234.56 as Number as String {format: "#,###.00"},
double4: 1234.56 as Number as String {format: "#,###.##"},
double5: 1234.56 as Number as String {format: "#,###.###"},
// comment: java.lang.Integer only works with strings or int, not double (decimal),
double6: 1234.56 as Number {class: "java.lang.Integer"} as String {format: "#,###.000"},
int: 12345 as String,
int1: 12345 as Number as String {format: "#,###"},
int2: 12345 as Number as String {format: "#,###.##"},
int3: 12345 as Number as String {format: "#,###.00"},
int4: 12345 as Number as String {format: "#,###.000"},
valueX: 123123456.709 as String,
// round to integer
valueX1: 123123456.709 as String {format: "\$#,###"},
valueX1: 123123456.709 as String {format: "#,###.00#%"},
// round to 2 decimal places
valueX2: 123123456.709 as String {format: "#,##0.0#"},
// round to 3 decimal places
valueX3: 123123456.709 as String {format: "#,###.###"},
// round to 4 decimal places
valueX4: 123123456.709 as String {format: "#,###.0000"},
valueX5: 123123456709 as String {format: "#,##"},
// round to 3 decimal places, pad to 2 decimal places #,##0.00#
valueY1: 789789780 as String {format: "#,##0.00#"},
// round and pad to 3 decimal places #,###.000
valueY2: 789789780 as String {format: "#,###.000"},
// 0.7129 round and pad to 3 decimal places #,###.000
valueY3: 0.7129 as String {format: "#,###.000"},
// 0.7129 round and pad to 3 decimal places, format as 0.xxx #,##0.000
valueY4: 0.7129 as String {format: "#,##0.000"},
}Output
{
"noRounding": 0.456,
"roundUP": "0.46",
"roundUP": "0.5",
"double": "1234.56",
"double1": "1,235",
"double2": "1235",
"double3": "1,234.56",
"double4": "1,234.56",
"double5": "1,234.56",
"double6": "1,234.560",
"int": "12345",
"int1": "12,345",
"int2": "12,345",
"int3": "12,345.00",
"int4": "12,345.000",
"valueX": "123123456.709",
"valueX1": "$123,123,457",
"valueX1": "12,312,345,670.90%",
"valueX2": "123,123,456.71",
"valueX3": "123,123,456.709",
"valueX4": "123,123,456.7090",
"valueX5": "12,31,23,45,67,09",
"valueY1": "789,789,780.00",
"valueY2": "789,789,780.000",
"valueY3": ".713",
"valueY4": "0.713"
}Tags: number coercions roundMode
number coercions functions tostring
.
Name Description number The Number value to format. format The formatting to apply to the Number value. A format accepts #or0(but not both) as placeholders for decimal values, and only one decimal point is permitted. A null or empty String value has no effect on the Number value. Most other values are treated as literals, but you must escape special characters, such as a dollar sign (for example,\$). Inner quotations must be closed and differ from the surrounding quotations.roundMode Optional parameter for rounding decimal values when the formatting presents a rounding choice, such as a format of 0.#for the decimal0.15. The default is HALF_UP, and a null value returns behaves like HALF_UP. Only one of the following values is permitted:
- UP: Always rounds away from zero (for example,
0.01to"0.1"and-0.01to"-0.1"). Increments the preceding digit to a non-zero fraction and never decreases the magnitude of the calculated value.- DOWN: Always rounds towards zero (for example,
0.19to"0.1"and-0.19to"-0.1"). Never increments the digit before a discarded fraction (which truncates to the preceding digit) and never increases the magnitude of the calculated value.- CEILING: Rounds towards positive infinity and behaves like UP if the result is positive (for example,
0.35to"0.4"). If the result is negative, this mode behaves like DOWN (for example,-0.35to"-0.3"). This mode never decreases the calculated value.- FLOOR: Rounds towards negative infinity and behaves like DOWN if the result is positive (for example,
0.35to"0.3"). If the result is negative, this mode behaves like UP (for example,-0.35to"-0.4"). The mode never increases the calculated value.- HALF_UP: Default mode, which rounds towards the nearest "neighbor" unless both neighbors are equidistant, in which case, this mode rounds up. For example,
0.35rounds to"0.4",0.34rounds to"0.3", and0.36rounds to"0.4". Negative decimals numbers round similarly. For example,-0.35rounds to"-0.4".- HALF_DOWN: Rounds towards the nearest numeric "neighbor" unless both neighbors are equidistant, in which case, this mode rounds down. For example,
0.35rounds to"0.3",0.34rounds to"0.3", and0.36rounds to"0.4". Negative decimals numbers round similarly. For example,-0.35rounds to"-0.3".- HALF_EVEN: For decimals that end in a 5 (such as,
1.125and1.135), the behavior depends on the number that precedes the 5. HALF_EVEN rounds up when the next-to-last digit before the 5 is an odd number but rounds down when the next-to-last digit is even. For example,0.225rounds to "0.22", 0.235 and 0.245 round to "0.24", and 0.255 rounds to "0.26". Negative decimals round similarly, for example,-0.225to"-0.22". When the last digit is not 5, the setting behaves like HALF_UP. Rounding of monetary values sometimes follows the HALF_EVEN pattern..
Script
%dw 2.0
output application/json
---
{
// round DOWN
roundDownP: 0.456 as String {format: "0.00", roundMode:"DOWN"},
roundDownN: -0.456 as String {format: "0.00", roundMode:"DOWN"},
// round UP
roundUPP: 0.454 as String {format: "0.00", roundMode:"UP"},
roundUPN: -0.454 as String {format: "0.00", roundMode:"UP"},
// round CEILING
roundCeilingP: 0.456 as String {format: "0.00", roundMode:"CEILING"},
roundCeilingN: -0.456 as String {format: "0.00", roundMode:"CEILING"},
// round FLOOR
roundFloorP: 0.456 as String {format: "0.00", roundMode:"FLOOR"},
roundFloorN: -0.456 as String {format: "0.00", roundMode:"FLOOR"},
// round HALF_DOWN
roundHalfDownP: 0.456 as String {format: "0.00", roundMode:"HALF_DOWN"},
roundHalfDownN: 0.455 as String {format: "0.00", roundMode:"HALF_DOWN"},
// round HALF_EVEN
roundHalfEvenP: 0.455 as String {format: "0.00", roundMode:"HALF_EVEN"},
roundHalfEvenN: 0.454 as String {format: "0.00", roundMode:"HALF_EVEN"},
// round HALF_UP
roundHalfUpPI: 0.455 as String {format: "0.00", roundMode:"HALF_UP"},
roundHalfUpPD: 0.454 as String {format: "0.00", roundMode:"HALF_UP"},
roundHalfUpND: -0.454 as String {format: "0.00", roundMode:"HALF_UP"},
roundHalfUpNI: -0.455 as String {format: "0.00", roundMode:"HALF_UP"},
}Output
{
"roundDownP": "0.45",
"roundDownN": "-0.45",
"roundUPP": "0.46",
"roundUPN": "-0.46",
"roundCeilingP": "0.46",
"roundCeilingN": "-0.45",
"roundFloorP": "0.45",
"roundFloorN": "-0.46",
"roundHalfDownP": "0.46",
"roundHalfDownN": "0.45",
"roundHalfEvenP": "0.46",
"roundHalfEvenN": "0.45",
"roundHalfUpPI": "0.46",
"roundHalfUpPD": "0.45",
"roundHalfUpND": "-0.45",
"roundHalfUpNI": "-0.46"
}Tags: date coercions
Input
{
"pending": [
{
"amount": 100,
"fee": 500
},
{
"amount": 123,
"fee": 500
}
],
"x": 1
}Script
%dw 2.0
output application/json
---
payload update {
case pending at .pending -> pending map ((item, index) -> item update {
case amout at .amount -> amout/100
case fee at .fee -> fee/100
})
}Output
{
"pending": [
{
"amount": 1,
"fee": 5
},
{
"amount": 1.23,
"fee": 5
}
],
"x": 1
}Tags: form-data csv separator
Input
ID;Name;Age;City;Profession
1;John Silva;28;São Paulo;Engineer
2;Mary Oliveira;34;Rio de Janeiro;Doctor
3;Charles Pereira;45;Belo Horizonte;Lawyer
4;Anna Souza;22;Salvador;Student
5;Peter Lima;39;Porto Alegre;Teacher
6;Marian Santos;27;Curitiba;Designer
7;Luke Almeida;31;Brasília;Systems Analyst
8;Fernanda Rocha;25;Recife;Architect
9;Richard Costa;50;Fortaleza;Businessman
10;Patricia Ribeiro;29;Manaus;Psychologist
11;Bruno Martins;42;Belém;Accountant
12;Juliana Mendes;36;Florianópolis;Marketing Manager
13;Gustavo Araújo;24;Natal;Developer
14;Renata Ferreira;33;João Pessoa;Consultant
15;Philip Barros;37;Campo Grande;Administrator
16;Isabela Lima;26;Aracaju;Nutritionist
17;Thiago Gonçalves;41;Maceió;Veterinarian
18;Laura Almeida;30;São Luís;Teacher
19;Andrew Neves;35;Teresina;Civil Engineer
20;Gabrielle Costa;28;Vitória;Journalist
Script
%dw 2.0
import dw::module::Multipart
input payload csv separator=';'
output multipart/form-data
---
Multipart::form([
Multipart::field("file", payload, 'text/csv;separator=";"', "userInfo.csv")
])
Output
------=_Part_1951_66438487.1719598253303
Content-Type: text/csv;separator=";"
Content-Disposition: form-data; name="file"; filename="userInfo.csv"
ID;Name;Age;City;Profession
1;John Silva;28;São Paulo;Engineer
2;Mary Oliveira;34;Rio de Janeiro;Doctor
3;Charles Pereira;45;Belo Horizonte;Lawyer
4;Anna Souza;22;Salvador;Student
5;Peter Lima;39;Porto Alegre;Teacher
6;Marian Santos;27;Curitiba;Designer
7;Luke Almeida;31;Brasília;Systems Analyst
8;Fernanda Rocha;25;Recife;Architect
9;Richard Costa;50;Fortaleza;Businessman
10;Patricia Ribeiro;29;Manaus;Psychologist
11;Bruno Martins;42;Belém;Accountant
12;Juliana Mendes;36;Florianópolis;Marketing Manager
13;Gustavo Araújo;24;Natal;Developer
14;Renata Ferreira;33;João Pessoa;Consultant
15;Philip Barros;37;Campo Grande;Administrator
16;Isabela Lima;26;Aracaju;Nutritionist
17;Thiago Gonçalves;41;Maceió;Veterinarian
18;Laura Almeida;30;São Luís;Teacher
19;Andrew Neves;35;Teresina;Civil Engineer
20;Gabrielle Costa;28;Vitória;Journalist
------=_Part_1951_66438487.1719598253303--Tags: form-data csv separator
Input
------=_Part_1951_66438487.1719598253303
Content-Type: text/csv;separator=";"
Content-Disposition: form-data; name="file"; filename="userInfo.csv"
ID;Name;Age;City;Profession
1;John Silva;28;São Paulo;Engineer
2;Mary Oliveira;34;Rio de Janeiro;Doctor
3;Charles Pereira;45;Belo Horizonte;Lawyer
4;Anna Souza;22;Salvador;Student
5;Peter Lima;39;Porto Alegre;Teacher
6;Marian Santos;27;Curitiba;Designer
7;Luke Almeida;31;Brasília;Systems Analyst
8;Fernanda Rocha;25;Recife;Architect
9;Richard Costa;50;Fortaleza;Businessman
10;Patricia Ribeiro;29;Manaus;Psychologist
11;Bruno Martins;42;Belém;Accountant
12;Juliana Mendes;36;Florianópolis;Marketing Manager
13;Gustavo Araújo;24;Natal;Developer
14;Renata Ferreira;33;João Pessoa;Consultant
15;Philip Barros;37;Campo Grande;Administrator
16;Isabela Lima;26;Aracaju;Nutritionist
17;Thiago Gonçalves;41;Maceió;Veterinarian
18;Laura Almeida;30;São Luís;Teacher
19;Andrew Neves;35;Teresina;Civil Engineer
20;Gabrielle Costa;28;Vitória;Journalist
------=_Part_1951_66438487.1719598253303--
Script
%dw 2.0
input payload multipart
output multipart
---
{
parts : {
file: {
headers : {
"Content-Type": "text/csv",
"Content-Disposition": payload.parts.file.headers."Content-Disposition"
},
content : payload.parts.file.content
}
}
}Output
------=_Part_7394_2117309175.1719599181681
Content-Type: text/csv
Content-Disposition: form-data; name="file"; filename="userInfo.csv"
ID;Name;Age;City;Profession
1;John Silva;28;São Paulo;Engineer
2;Mary Oliveira;34;Rio de Janeiro;Doctor
3;Charles Pereira;45;Belo Horizonte;Lawyer
4;Anna Souza;22;Salvador;Student
5;Peter Lima;39;Porto Alegre;Teacher
6;Marian Santos;27;Curitiba;Designer
7;Luke Almeida;31;Brasília;Systems Analyst
8;Fernanda Rocha;25;Recife;Architect
9;Richard Costa;50;Fortaleza;Businessman
10;Patricia Ribeiro;29;Manaus;Psychologist
11;Bruno Martins;42;Belém;Accountant
12;Juliana Mendes;36;Florianópolis;Marketing Manager
13;Gustavo Araújo;24;Natal;Developer
14;Renata Ferreira;33;João Pessoa;Consultant
15;Philip Barros;37;Campo Grande;Administrator
16;Isabela Lima;26;Aracaju;Nutritionist
17;Thiago Gonçalves;41;Maceió;Veterinarian
18;Laura Almeida;30;São Luís;Teacher
19;Andrew Neves;35;Teresina;Civil Engineer
20;Gabrielle Costa;28;Vitória;Journalist
------=_Part_7394_2117309175.1719599181681--
