- 3 minutes to read

Formula - Max

The max function, one of the Math functions in the Formula plugin for Search Field Expressions, returns the highest numeric value in the content.

Syntax

max(content [, unique])

Parameters

Parameter Required Description
content ✅ Yes The numeric values to compare: body, context, or another Formula function such as xPath, jsonPath, csv, or length.
unique ❌ No Unquoted true or false; default true for this function. false: a value that appears several times counts every time. true: identical values count once. Values are compared as text, so 100 and 100.00 are different values. A quoted 'true' is an error.

Returns

  • One number: the highest numeric value in content.
  • Values are compared as numbers, so 1337 is higher than 42 even when the values are JSON strings (see Example 2).

Quoting, nesting, and how content is resolved are described in the Formula language rules.

Examples

Example 1: Highest order amount in an XML message

Input

Message Body:

<ns0:Orders xmlns:ns0="SupplyChain.Schemas/1.0">
  <Order>
    <Id>1337</Id>
    <Amount>666</Amount>
    <City>Grums</City>
    <Partner>QWNtZQ==</Partner>
  </Order>
  <Order>
    <Id>1338</Id>
    <Amount>42</Amount>
    <City>Karlstad</City>
    <Partner>QWNtZQ==</Partner>
  </Order>
</ns0:Orders>

Formula

max(xPath('Orders/Order/Amount', body))

Result

666

Test Expression with max(xpath('Orders/Order/Amount', body)) on an XML orders message, returning 666
xPath extracts the amounts 666 and 42; the highest is 666.

Example 2: Highest value extracted from JSON

Input

Message Body:

{"a":[{"b":"1337"},{"b":"8"},{"b":"42"}]}

Formula

max(jsonPath('a[*].b', body))

Result

1337

Test Expression with max of jsonpath over every b in the array a, on a JSON array, returning 1337
jsonPath extracts 1337, 8, and 42; the highest is 1337.

Example 3: Highest value in a CSV column stored in message context

Input

Message Context:

Key Value
Ids the CSV text below
"face","suit","value"
"king","spades","13"
"queen","spades2","12"
#"jack","spades3","666"
"ten","spades4","10"

Formula

max(csv(1, ',', 2, '#', context('Ids')))

Result

13

Test Expression with max(csv(1,',',2,'#',context('Ids'))) on CSV text in the context key Ids, returning 13
csv skips the header row, reads column 2 (the value column, counted from 0), and ignores the row that starts with #; the highest of 13, 12, and 10 is 13.

Example 4: Longest value extracted from JSON

Input

Message Body:

{a:[{b:'This'},{b:'is'},{b:'Formula Plugin'}]}

Formula

max(length(jsonPath('a[*].b', body)))

Result

14

Test Expression with max of the length of every b value in the JSON array a, returning 14
length returns 4, 2, and 14; the highest is 14, the length of Formula Plugin.

Next Steps