标量数学

最基本的数学表达式是标量表达式。标量表达式对数字执行数学运算。

例如,下面的表达式将两个数字相加

add(1, 1)

当此表达式发送到 /stream 处理程序时,它会响应

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

数学表达式可以嵌套。例如,在下面的表达式中,add 函数的输出是 pow 函数的第二个参数

pow(10, add(1,1))

此表达式返回以下响应

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

可视化

在 Zeppelin-Solr 解释器中,你可以简单地输入标量数学函数,结果将以表格格式显示。

scalar

数字可视化可用于使用文本和图标可视化数字。

num

流标量数学

标量数学表达式也可以通过使用 select 流装饰器应用于流中的每个元组。select 函数包装元组流并选择要包含在每个元组中的字段。select 函数还可以使用数学表达式计算新值并将它们添加到传出元组中。

在下面的示例中,select 表达式包装了一个搜索表达式。select 函数选择 response_d 字段并使用 mult 数学表达式计算一个名为 new_response 的新字段。

mult 表达式的第一个参数是 response_d 字段。第二个参数是标量值 10。这将每个元组中 response_d 字段的值乘以 10。

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

当此表达式发送到 /stream 处理程序时,它会响应

{
  "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
      }
    ]
  }
}

可视化

上面的表达式可以使用 Zeppelin-Solr 可视化为表格。

stream

通过切换到其中一个折线图可视化,可以在 x 轴和 y 轴上绘制这两个变量。

line

更多标量数学函数

以下标量数学函数在数学表达式库中可用

absadddivmultsubloglog10powmodceilfloorsinasinsinhcosacoscoshtanatantanhroundprecisionrecipsqrtcbrt