Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Mule 4 DataWeave Functions: Part 1

DZone's Guide to

Mule 4 DataWeave Functions: Part 1

Let's take a look at this tutorial, which gives an explanation on how to import modules by adding the import directive to the head of the DataWeave script.

· Integration Zone ·
Free Resource

SnapLogic is the leading self-service enterprise-grade integration platform. Download the 2018 GartnerMagic Quadrant for Enterprise iPaaS or play around on the platform, risk free, for 30 days.

In DataWeave 2.0, functions are categorized into different modules:

  1. Core (dw::Core)
  2. Arrays (dw::core::Arrays)
  3. Binaries (dw::core::Binaries)
  4. Encryption (dw::Crypto)
  5. Diff (dw::util::Diff)
  6. Objects (dw::core::Objects)
  7. Runtime (dw::Runtime)
  8. Strings (dw::core::Strings)
  9. System (dw::System)
  10. URL (dw::core::URL)

Functions defined in Core (dw::Core) module are imported automatically into your DataWeave scripts. To use other modules, we need to import them by adding the import directive to the head of DataWeave script, for example:

import dw::core::Strings
import dasherize, underscore from dw::core::Strings
import * from dw::core::Strings

Sample Payload:

{
"firstName" : "Murali",
"lastName" : "Krishna",
"age" : "26",
“age” : ”26”
}

1. Core (dw::Core)

Below are the DataWeave 2 core functions:

++ , --, abs, avg, ceil, contains, daysBetween, distinctBy, endsWith, filter, IsBlank, joinBy, min, max, etc.

  • result : [0, 1, 2] ++ ["a", "b", "c"] will gives us “result” : “[0, 1, 2, "a", "b", "c"]”

  • result : [0, 1, 1, 2] -- [1,2] will gives us “result” : “[0]”

  • result : abs(-20) will gives us “result” : 20

  • average : avg([1, 1000]) will gives us “average” : 500.5

  • value : ceil(1.5) will gives us “value” : 2

  • result : payload contains “Krish” will gives us “result” : true

  • days: daysBetween("2016-10-01T23:57:59-03:00", "2017-10-01T23:57:59-03:00") will gives us "days": 365

  • age : payload distinctBy $ will gives us:

{
    "firstName" : "Murali",
    "lastName" : "Krishna",
    “age” : ”26”
}
  • a: "Murali" endsWith "li" will gives us “a” : true

  • a: [1, 2, 3, 4, 5] filter($ > 2) will gives us “a” : [3,4,5]

  • empty: isBlank("") will gives us “empty” : true

  • aa: ["a","b","c"] joinBy "-" will gives us “a” : “a-b-c”

  • a: min([1, 1000]) will gives us “a” : 1

  • a: max([1, 1000]) will gives us “a” : 1000

2. Arrays (dw::core::Arrays)

Arrays related functions in DataWeave are:

  • countBy, divideBy, every, some, sumBy

  • [1, 2, 3] countBy (($ mod 2) == 0) will gives us 1

  • [1,2,3,4,5] dw::core::Arrays::divideBy 2 will gives us:

[
  [
    1,
    2
  ],
  [
    3,
    4
  ],
  [
    5
  ]
]
  • [1,2,3,4] dw::core::Arrays::every ($ == 1) will gives us “false”

  • [1,2,3,4] dw::core::Arrays::some ($ == 1) will gives us “true”

  • [ { a: 1 }, { a: 2 }, { a: 3 } ] sumBy $.a will gives us “6”

3. Binaries (dw::core::Binaries)

Binary functions in DataWeave-2 are:

  • fromBase64, fromHex, toBase64, toHex

  • toBase64(fromBase64(12463730)) will gives us “12463730”

  • { "binary": fromHex('4D756C65')} will gives us “binary” : “Mule”

  • { "hex" : toHex('Mule') } will gives us “hex” : “4D756C65”

4. Encryption (dw::Crypto)

Encryption functions in Dataweave – 2 are:

  • HMACBinary, HMACWith, MD5, SHA1, hashWith

  • { "HMAC": Crypto::HMACBinary(("aa" as Binary), ("aa" as Binary)) } will gives us :

  • "HMAC": "\u0007£š±]\u00adÛ\u0006‰\u0006Ôsv:ý\u000b\u0016çÜð"

  • Crypto::MD5("asd" as Binary) will gives us “7815696ecbf1c96e6894b779456d330e”

  • Crypto::SHA1("dsasd" as Binary) will gives us “2fa183839c954e6366c206367c9be5864e4f4a65”

5. Diff (dw::util::Diff)

It calculates the difference between two values and returns list of differences.

DataWeave Script:

%dw 2.0
import * from dw::util::Diff
output application/json
var a = { age: "Test" }
var b = { age: "Test2" }
---
 a diff b

Output:

{
  "matches": false,
  "diffs": [
    {
      "expected": "\"Test\"",
      "actual": "\"Test2\"",
      "path": "(root).age"
    }
 ]
}

Note:

We will proceed with the rest of the functions in the Mule 4 DataWeave Functions: Part 2 article.

With SnapLogic’s integration platform you can save millions of dollars, increase integrator productivity by 5X, and reduce integration time to value by 90%. Sign up for our risk-free 30-day trial!

Topics:
mule 4 ,mulesoft ,transformation ,dataweave ,tutorial ,integration ,modules ,core functions ,scripts

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}