• 创建InfluxDB数据库自定义函数


    Flux是InfluxDB2.x函数式数据脚本语言。flux可以查询、处理、分析数据,是专门为时间序列优化的强大语言。flux可以实现很多功能,包括窗口函数、移动平均,自定义函数,连接数据流,创建任务和报警。本文介绍如何创建flux自定义函数。

    Flux概述

    flux查询实现四个方面。获取数据并基于时间或其他列值进行过滤、处理并塑造数据,然后返回结果。你也能使用flux创建任务,设定计划进行执行,非常适合实现自动降采和分析。flux设计之初就考虑了这几个特征,让开发者很容易学习、很容易阅读,查询编码能够测试、发现并修复bug,当然最重要的是开源特性。
    flux也基于可扩展的,开发者能够构建自己的函数和库。flux内置了很多函数,从简单的到复杂的地理空间计算。当开发者有特殊需求时,flux灵活性通过自定义函数可以提供极大的能力。

    自定义函数示例

    自定义函数是非常有用,通常可以封装重复的编码实现内置函数没有提供的功能。如非常复杂的计算,或简单的如数据单位转换。创建自定义函数可以节约时间,因为不再需要重复写计算过程,而且让代码更易读、调试更简单。下面通过简单计算平方函数作为示例进行说明。

    函数语法如下:

    [function name] = ([variable]) => [implementation]
    
    • 1

    举例:

    squared = (x) => x*x
    
    • 1

    上面定义了一个函数,下面可以flux脚本中使用:

    from(bucket: “foo”)
    	|> range(start: -1hr)
    	|> filter(fn: (r) => r._measurement == “samples”)
    	|> map(fn: (r) => ({ _value: squared(x: r._value)}))
    	|> filter(fn: (r) => r._value > 23.2)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    上面示例中,map函数中使用了我们自定义函数计算所有值的平方。

    自定义管道函数

    本节介绍自定义前向管道函数,这些函数可以与其他操作直接连接在一起,而不是像squared()函数嵌套在其他函数内部。在自定义函数内部可以使用标准flux语法。

    管道函数的语法如下:

    [function name] = ([table]=<-,[variable]) => [table] |> [implementation]
    
    • 1

    下面自定义函数平方表中每个值,而不需要一个变量执行一次。代码如下:

    allSquared = (tables=<-) => tables |> map(fn: (r) =>  squared(r._value))
    
    • 1

    调用allSquared函数代码如下:

    from(bucket: “foo”)
    	|> range(start: -1hr)
    	|> filter(fn: (r) => r._measurement == “samples”)
    	|> allSquared()
    	|> filter(fn: (r) => r._value > 23.2)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这个示例中,没有指定函数体内使用的变量,所以在所有变量上执行。前向管道函数使得代码非常清晰,未来维护代码也会更好读、好理解。

    总结

    本文介绍了如何自定义flux函数,主要内容参考官方博客。

  • 相关阅读:
    【reduce与reduceRight】手写数组reduce与reduceRight方法
    【Prism系列】Prism中的命令
    git常用的几个命令
    Linux底层基础知识
    vlang捣鼓之路
    【0138】【libpq】发送任何在outBuffer中等待的数据(8)
    FLink源码 1.13 3 种 命令客户端 Generic CLI 、 yarn-cluster、DefaultCLI使用
    2011-2021年“第四期”数字普惠金融指数与上市公司匹配(根据省份匹配)/上市公司数字金融指数匹配
    图神经网络之预训练大模型结合:ERNIESage在链接预测任务应用
    bluecmsv1.6代码审计
  • 原文地址:https://blog.csdn.net/neweastsun/article/details/127591090