基础架构部文档
基础架构部文件格式标准参考
技术文档
mr_doc 接入ucenter 认证登录
loki日志收集
https证书与ssl/tls 加密
FTP 主动模式和被动模式的区别
Hadoop-windows10安装部署Hadoop2.7.3
JKS和PFX证书文件格式相互转换方法
KVM 基础操作
k8s nginx ingress日志收集到ELK并分析
Django基础
clash http代理 socks代理服务器搭建 配置
Ubuntu 22.04 安装 FFmpeg v7.0
Office正版化项目的个人体验和心得
重置jenkins构建历史
K8S实施方案
k8s的yaml文件语法
Docker的优势与虚拟机的区别
问题处理文档
HR推送数据问题处理报
Nginx从入门到放弃01-nginx基础安装
Nginx从入门到放弃02-Nginx基本命令和新建WEB站点
Nginx从入门到放弃03-Nginx调优
Nginx从入门到放弃04-Nginx的N种特别实用示例
JMeter教程
01-mariadb编译安装
02-mariadb二进制安装
Docker修改默认的存储路径
01-influxdb2时序数据库简介及安装
02-influxdb2时序数据库核心概念
03-influxdb2时序数据库flux查询语言
04-influxdb2--Python客户端influxdb-client
05-Spring boot 集成influxdb2
06-influxdb2其他知识
OA添加waf后相关问题的解决过程
排除java应用cpu使用率过高
exsi迁移文档
视频测试
阿里云产品试题
超融合服务器和传统服务器的区别
Serv-U问题集锦
文件夹共享操作手册
磁盘脱机处理方案
Office内存或磁盘空间不足处理方法
Cmd中ping不是内部或外部命令的解决方法
ELK 搭建文档
限制用户的远程桌面会话数量
Docker快速安装rocketmq、redis、zookeeper
超融合建设方案
git 入门
HR系统写入ES数据报错403
ELK搭建文档
KVM 安装和基础使用文档
helm 安装 rancher
访问共享提示禁用当前用户解决方法
K8S StorageClass搭建
KVM 扩展磁盘
借助sasl构建基于AD用户验证的SVN服务器
fastdfs编译安装并迁移数据
关闭系统保护的必要性
SCF 前置机部署
阿里云OSS学习文档
阿里云学习文档-VPC
(k8s踩坑)namespace无法删除
rancher-helm安装
zookeeper集群安装
批量替换K8s secrets 中某个特定域名的tls证书
kibana 批量创建索引模式
centos7 恢复Yum使用
ACP云计算部分知识点总结
Loki 日志系统搭建文档
自动更新k8s集群中所有名称空间中特定证书
AI分享
(AI)函数调用与MCP调用的区别
安装戴尔DELL Optilex 7040 USB驱动时提示无法定位程序输入点 kernel32\.dll
新华三服务器EXSI 显卡直通
本文档使用「觅思文档专业版」发布
-
+
首页
03-influxdb2时序数据库flux查询语言
## 一、Flux查询语言 Flux 可归类为一门新的编程语言,这里仅介绍针对查询需要的一些常用函数和操作,了解更多Flux见[Flux官方文档](https://links.jianshu.com/go?to=https%3A%2F%2Fdocs.influxdata.com%2Fflux%2Fv0.x%2F) 大多数Flux查询遵循如下几个步骤 - 指定数据源 - 过滤数据 - 对数据整形(重新组织数据结构) - 数据内容计算 ```jsx //例 from(bucket: "example-bucket") // ── Source |> range(start: -1d) // ── Filter on time |> filter(fn: (r) => r._field == "foo") // ── Filter on column values |> group(columns: ["sensorID"]) // ── Shape |> mean() // ── Process ``` flux查询语言看起来会像下面这样 ```jsx from(bucket: "wxm-influx") |> range(start: 0) |> filter(fn:(r)=>(r.owner=="wxm")) |> window(every: 1s) |> mean() ``` 其中 `from`,`range`,`filter`等以下称作查询函数。flux查询语言允许使用`|>`分割符将上一个函数的输出传递给下一个函数,类似于linux的管道 ### 基础规定 **每个查询语句必须包含数据源,时间区间和过滤器**。对应关键字分别为 `from`,`range`,`filter`。实际上不包含`filter`也是可以的,可以理解为`filter`过滤条件就是all ### Flux 标准库(部分) 该部分列举常用flux标准库函数,根据用法可举一反三使用所有标准库函数 #### buckets buckets()返回当前组中所有的桶 #### from 指定从那个bucket查询数据 ```csharp from(bucket:"bucket名称") ``` #### range 指定时间区间,range接收两个参数,`start`和`stop` 其中`stop`可以省略,缺省值是当前时间。`start`不能省略,否则会报语法错误。 ``` start和stop既可以使用相对的时间区间,也可以使用绝对的时间戳。相对时间区间格式为 时间间隔h/m/s例如 -1h,-5m。时间戳格式2021-01-01T00:00:00Z ``` ```csharp #示例1 from(bucket:"bucket名称") |> range(start: -1h) #示例2 from(bucket:"bucket名称") |> range(start: 2021-01-01T00:00:00Z, stop: 2021-01-01T12:00:00Z) ``` #### filter 对数据进行过滤,接收一个判断函数。类似于java中的lamda,它看起来像是下面这样 ```dart (r) => (r.recordProperty comparisonOperator comparisonExpression) ``` 判断函数返回一个boolean类型值。只有符合条件的记录才会被返回。 ```csharp #示例 from(bucket: "wxm-influx") |> range(start: -24h) |> filter(fn:(r)=>(r.owner=="wxm")) #取最近24小时,含有owner标签且值为wxm的记录 ``` 当filter内含有多个条件时可用 `and` 或 `or` 连接各个条件 ```csharp #示例 from(bucket: "wxm-influx") |> range(start: -24h) |> filter(fn:(r)=>(r.owner=="wxm" or r.key=="indoor")) #取最近24小时,含有owner标签且值为wx或含有标签key且值为indoor的记录 ``` #### contains **参数** `value` 需要比较的值 `set`被比较的集合 判断`value`是否包含在`set`中。 ```csharp #示例 fiels = ["wxm","ali"] from(bucket: "wxm-influx") |> range(start: 2022-03-12T08:14:04Z,stop:2022-03-13T08:19:05Z) |> filter(fn:(r)=>contains(value:r.owner,set:fiels)) ``` #### window window函数根据时间将数据分组. > 参数 `every`: every 指定每个时间窗口的时间,例如 every = 5 那么 时间窗口可以是 0m-5m,5m-10m,10m-15m。默认为 period 的值 ``` period ``` period 明确在每个时间窗口中需要从时间窗口起始到多久的数据,例如时间窗口为10m-15m period = 3 则只取10m-13m的数据,13m-15m的数据会被抛弃。默认为 every 的值 ``` offset ``` offset 指定每个时间窗口的时间偏移量,例如时间窗口为10m-15m offset = 3 那么会取 13m-15m的数据,10m-13m的数据会被抛弃,但注意当offset = every 时 offset不生效。且offset大于every 时 生效offset = offset % every #### min > 参数 ``` column` 求最小值的列,默认为`_value ``` 取每个分组中最小值 #### max > 参数 ``` column` 求最大值的列,默认为`_value ``` 取每个分组最大值 #### mean > 参数 ``` column` 求平均值的列,默认为`_value ``` 对每个分组的数据求平局值 #### bottom > 参数 `columns` 按那些列进行排序 `n` 返回最上层 n 条数据 根据columns进行排序并返回最上层 n 条记录 #### count > 参数 `columns` 按那列统计个数 统计数据个数 #### cumulativeSum > 参数 `columns` 按那列进行累加 根据给定列对该列数据进行累加,模拟输出忽略 _start, _stop 等列: 原始数据: | _measurement | _field | 62 | | :----------- | :----: | :--: | | temperature | wxm | 62 | | temperature | wxm | 65 | | temperature | wxm | 81.5 | | temperature | wxm | 81.5 | cumulativeSum函数执行后: | _measurement | _field | 62 | | :----------- | :----: | :---: | | temperature | wxm | 62 | | temperature | wxm | 127 | | temperature | wxm | 208.5 | | temperature | wxm | 290 | #### group > 参数 `columns` 按那些列进行分组操作 默认值为[] `mode`: mode 可以是以下值 "by",按 columns 内指定的列进行分组 "expect",按除了columns 列中指定的列进行分组 #### columns > 参数 `column`存放列标签名的列。 返回所有列标签名并存储在指定的列中默认为`_value` 通过`column`参数指定 #### derivative > 参数 `unit` 求多长时间内的变化速率。变化速率=`(下一个值-上一个值)/(下一个时间-上一个时间)* unit` 默认值1s `nonNegative`变化速率是否可以是负值,如果是负数influxdb会假定前一个值为0 默认值true `columns`指定计算变化速率的列 默认值 ["_value"] `timeColumn`手动指定时间列 默认值 "_time" #### difference > 参数 `nonNegative`是否允许差值为负数,如果是负数influxdb会假定前一个值为0 默认值false 计算相邻两行的差值(next-pre) `keepFirst`是否保留第一行,默认值为false #### distinct > 参数 `column` 指定按那列去重 按指定列去重
张文
2022年8月25日 10:47
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期