Scalar Math

The most basic math expressions are scalar expressions. Scalar expressions perform mathematical operations on numbers.

For example the expression below adds two numbers together:

add(1, 1)

When this expression is sent to the /stream handler it responds with:

{
  "result-set": {
    "docs": [
      {
        "return-value": 2
      },
      {
        "EOF": true,
        "RESPONSE_TIME": 2
      }
    ]
  }
}

Math expressions can be nested. For example in the expression below the output of the add function is the second parameter of the pow function:

pow(10, add(1,1))

This expression returns the following response:

{
  "result-set": {
    "docs": [
      {
        "return-value": 100
      },
      {
        "EOF": true,
        "RESPONSE_TIME": 0
      }
    ]
  }
}

Visualization

In the Zeppelin-Solr interpreter you can simply type in scalar math functions and the result will be shown in a table format.

scalar

The Number visualization can be used to visualize the number with text and icons.

num

Streaming Scalar Math

Scalar math expressions can also be applied to each tuple in a stream through use of the select stream decorator. The select function wraps a stream of tuples and selects fields to include in each tuple. The select function can also use math expressions to compute new values and add them to the outgoing tuples.

In the example below the select expression is wrapping a search expression. The select function is selecting the response_d field and computing a new field called new_response using the mult math expression.

The first parameter of the mult expression is the response_d field. The second parameter is the scalar value 10. This multiplies the value of the response_d field in each tuple by 10.

select(search(testapp, q="*:*", fl="response_d", sort="response_d desc", rows="3"),
       response_d,
       mult(response_d, 10) as new_response)

When this expression is sent to the /stream handler it responds with:

{
  "result-set": {
    "docs": [
      {
        "response_d": 1080.3692514541938,
        "new_response": 10803.692514541937
      },
      {
        "response_d": 1067.441598608506,
        "new_response": 10674.41598608506
      },
      {
        "response_d": 1059.8400090891566,
        "new_response": 10598.400090891566
      },
      {
        "EOF": true,
        "RESPONSE_TIME": 12
      }
    ]
  }
}

Visualization

The expression above can be visualized as a table using Zeppelin-Solr.

stream

By switching to one of the line chart visualizations the two variables can be plotted on the x and y-axis.

line

More Scalar Math Functions

The following scalar math functions are available in the math expressions library:

abs, add, div, mult, sub, log, log10, pow, mod, ceil, floor, sin, asin, sinh, cos, acos, cosh, tan, atan, tanh, round, precision, recip, sqrt, cbrt