Contact Us 1-800-596-4880

Precedence in DataWeave

DataWeave 2.1 is compatible with Mule 4.1. Standard Support for Mule 4.1 ended on November 2, 2020, and this version of Mule will reach its End of Life on November 2, 2022, when Extended Support ends.

Deployments of new applications to CloudHub that use this version of Mule are no longer allowed. Only in-place updates to applications are permitted.

MuleSoft recommends that you upgrade to the latest version of Mule 4 that is in Standard Support so that your applications run with the latest fixes and security enhancements.

DataWeave expressions are compiled in a specific order. The result of a compilation of something at one level can serve as input for expressions in higher levels, but not at lower levels.

The following table orders operators and functions from first compiled (1) to last compiled (10):

Level Operator or Function

1

  • using: For initializing local variables in a DataWeave script.

  • Unary DataWeave operators at this level:

    • .^: Schema selector.

    • .#: Namespace selector.

    • ..: Descendants selector.

    • not: Logical operator for negation.

    • .@: All attribute selector, for example, in a case that uses the expression payload.root.a.@ to return the attributes and values of the input payload <root> <a attr1="foo" attr2="bar" /></root> within the array of objects { "attr1": "foo", "attr2": "bar" }.

2

  • as: Used for type coercion.

3

  • *: Multiply.

  • /: Divide.

4

  • +: Add.

  • -: Subtract.

  • >>: Prepend data.

  • <<: Append data.

5

  • >: Greater than or equal to.

  • =: Equal to.

  • <: Less than or equal to.

  • <: Less than.

  • >: Greater than.

  • is: Compare type, for example, used in Remove Specified XML Attributes.

6

  • !=: Not equal to.

  • ~=: Contains.

  • ==: Equality operator that tries to coerce one value to the type of the other when the types are different.

7

  • and: Logical and operator.

8

  • or: Logical or operator.

9

  • default: For setting a default value.

  • case and else: For pattern matching.

  • DataWeave functions at this level:

    • matches

    • match

    • map

    • mapObject

    • groupBy

    • filter

  • Binary DataWeave selectors at this level:

    • .@keyName and .*@: Binary DataWeave attribute selectors.

    • .*: Multi-value selector.

    • .^: Metadata selector.

    • .&: Key-value pair selector.

    • [?()]: Filter selector.

  • .keyName: Value selector.

  • [<index> to <index>]: Range selector

10

  • if else: Conditional expression used for flow control in DataWeave.