• Flux脚本语言基础使用-函数定义(InFluxDB 查询语言)


    函数语法

    语法:
    函数名 = (参数) => 函数体

    自定义函数:

    一个参数的函数

    square = (n) => n * n
    
    square(n:3)
    // Returns 9
    
    • 1
    • 2
    • 3
    • 4

    两个参数的函数

    multiply = (x, y) => x * y
    
    multiply(x: 2, y: 15)
    // Returns 30
    
    • 1
    • 2
    • 3
    • 4

    带默认参数的函数:

    pow = (n, p=10) => n ^ p
    
    pow(n: 2)
    // Returns 1024
    
    • 1
    • 2
    • 3
    • 4

    转换函数 (<-)

    转换是一个函数,它将流作为输入,对输入进行操作,然后输出新的流。
    管道转发运算符 |> 将数据从先前的标识符或函数转发到转换函数中。

    语法:
    函数 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)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    定义具有作用域的函数

    语法:
    函数体包含在一个块 ({}) 中。
    使用 return 语句返回特定变量。

    functionName = (param) => {
        exampleVar = "foo"
    
        return exampleVar
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    例子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)}])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    例子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)}))
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
  • 相关阅读:
    type.Dict 和 Dict 之间的区别及其在 Python 中的用途
    Oracle Net Configuration Assistant 配置步骤
    孙雪峰教授主题演讲精彩回顾 | 第二届始祖数字化可持续发展峰会
    阿里云配置ssl(Apache)
    Linux多线程网络通信
    Dapp智能合约开发搭建
    74-94 的总结
    Shiro【散列算法、过滤器 、Shiro会话、会话管理器、权限表设计】(三)-全面详解(学习总结---从入门到深化)
    链表反转-LeetCode206
    js中的类型转换
  • 原文地址:https://blog.csdn.net/weixin_39554102/article/details/126082262