语法:
函数名 = (参数) => 函数体
一个参数的函数
square = (n) => n * n
square(n:3)
// Returns 9
两个参数的函数
multiply = (x, y) => x * y
multiply(x: 2, y: 15)
// Returns 30
带默认参数的函数:
pow = (n, p=10) => n ^ p
pow(n: 2)
// Returns 1024
转换是一个函数,它将流作为输入,对输入进行操作,然后输出新的流。
管道转发运算符 |> 将数据从先前的标识符或函数转发到转换函数中。
语法:
函数 x() 接收管道转发的数据并将其分配给 t 参数。
x = (t=<-) => t |> //...
列子:带有一个参数的转换函数
以下示例定义了一个 myFn 函数,该函数将每个输入行的 _value 列乘以 x 参数。 该示例使用 map() 函数遍历每一行,修改 _value,然后返回更新后的行。
import "influxdata/influxdb/sample"
myFn = (tables=<-, x) =>
tables
|> map(fn: (r) => ({r with _value: r._value * x}))
// 空气传感器样本数据
a = sample.data(set: "airSensor")
|> range(start: -1h)
|> filter(fn: (r) => r["_measurement"] == "airSensors")
|> keep(columns: ["_value", "sensor_id"])
a
|> myFn(x: 10.0)
语法:
函数体包含在一个块 ({}) 中。
使用 return 语句返回特定变量。
functionName = (param) => {
exampleVar = "foo"
return exampleVar
}
例子1
import array
alertLevel = (v) => {
level =
if float(v: v) >= 90.0 then
"crit"
else if float(v: v) >= 80.0 then
"warn"
else if float(v: v) >= 65.0 then
"info"
else
"ok"
return level
}
array.from(rows: [{level: alertLevel(v: 87.3)}])
例子2:
import "dict"
hexName = (hex) => {
hexNames =
dict.fromList(
pairs: [
{key: "#00ffff", value: "Aqua"},
{key: "#000000", value: "Black"},
{key: "#0000ff", value: "Blue"},
{key: "#ff00ff", value: "Fuchsia"},
{key: "#808080", value: "Gray"},
{key: "#008000", value: "Green"},
{key: "#00ff00", value: "Lime"},
{key: "#800000", value: "Maroon"},
{key: "#000080", value: "Navy"},
{key: "#808000", value: "Olive"},
{key: "#800080", value: "Purple"},
{key: "#ff0000", value: "Red"},
{key: "#c0c0c0", value: "Silver"},
{key: "#008080", value: "Teal"},
{key: "#ffffff", value: "White"},
{key: "#ffff00", value: "Yellow"},
],
)
name = dict.get(dict: hexNames, key: hex, default: "No known name")
return name
}
hexName(hex: "#000000")
// Returns "Black"
hexName(hex: "#8b8b8b")
// Returns "No known name"
array.from(rows: [{ color : "#000000"}, {color : "#8b8b8b"}])
|> map(fn: (r)=> ({r with name: hexName(hex: r.color)}))