时序数据库Influxdb查询多个字段_field同一时间的值,组成一条数据

Influxdb将表格数据多个字段_field从垂直列布局聚合成水平布局行字段。

问题

1、Influxdb 是一种时间序列数据库,在我的项目中主要用来存储换热站的测点数据的。换热站有非常多的测点,我们用Flux 语法去查询测点数据,返回的数据结构是每个测点字段对应的所有时间数据。

复制代码
from(bucket: "autodata")
 |> range(start:2023-04-11T06:34:16.000Z, stop:2023-04-12T06:35:20.000Z)
 |> filter(fn: (r) => r._measurement == "HeatStationData")
 |> filter(fn: (r) => r["_field"] == "HuiYuanZhan.1500.TT_17_PV" or r["_field"] == "HuiYuanZhan.1500.Level_1_PV" 
 or r["_field"] == "HuiYuanZhan.1500.Modbus_FLMeter_5_LLLL") 
 |> sort(columns:[ "_time"], desc: true) 
 |> limit(n:10, offset: 1) 

2、而我想要的数据格式则是这几个field字段的值作为行字段水平展示,并根据时间聚合在一起,形成一条根据时间的完整数据。也就是我想查询多个字段同一时间的值,组成一条数据。

解决方法

Flux 查询提供了两种方式来解决这个问题:

1、pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")

使用pivot将_field的_value值,作为一个行字段。这样就可以查询同一时间,这三个字段的值了

复制代码
from(bucket: "autodata")
 |> range(start:2023-04-11T06:34:16.000Z, stop:2023-04-12T06:35:20.000Z)
 |> filter(fn: (r) => r._measurement == "HeatStationData")
 |> filter(fn: (r) => r["_field"] == "HuiYuanZhan.1500.TT_17_PV" or r["_field"] == "HuiYuanZhan.1500.Level_1_PV" 
 or r["_field"] == "HuiYuanZhan.1500.Modbus_FLMeter_5_LLLL") 
 |> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")
 |> sort(columns:[ "_time"], desc: true) 
 |> limit(n:10, offset: 1) 

2、v1.fieldsAsCols()

这是一个Flux 查询提供的函数,使用时,需要先引入,他的功能跟上边的pivot效果是一样的。

复制代码
 import "influxdata/influxdb/v1"
 
 from(bucket: "autodata")
 |> range(start:2023-04-11T06:34:16.000Z, stop:2023-04-12T06:35:20.000Z)
 |> filter(fn: (r) => r._measurement == "HeatStationData")
 |> filter(fn: (r) => r["_field"] == "HuiYuanZhan.1500.Modbus_FLMeter_5_LLLL" or r["_field"] == "HuiYuanZhan.1500.Level_1_PV" 
 or r["_field"] == "HuiYuanZhan.1500.TT_17_PV") 
 |> sort(columns:[ "_time"], desc: true) 
 |> v1.fieldsAsCols()
相关推荐
·薯条大王3 小时前
MySQL联合查询
数据库·mysql
morris1315 小时前
【redis】redis实现分布式锁
数据库·redis·缓存·分布式锁
hycccccch6 小时前
Canal+RabbitMQ实现MySQL数据增量同步
java·数据库·后端·rabbitmq
这个懒人6 小时前
深入解析Translog机制:Elasticsearch的数据守护者
数据库·elasticsearch·nosql·translog
Yan-英杰7 小时前
【百日精通JAVA | SQL篇 | 第二篇】数据库操作
服务器·数据库·sql
NineData7 小时前
NineData云原生智能数据管理平台新功能发布|2025年3月版
数据库
百代繁华一朝都-绮罗生8 小时前
检查是否存在占用内存过大的SQL
数据库·sql
吾日三省吾码8 小时前
Python 脚本:自动化你的日常任务
数据库·python·自动化
CZIDC9 小时前
win11 系统环境下 新安装 WSL ubuntu + ssh + gnome 桌面环境
数据库·ubuntu·ssh
直裾9 小时前
Mapreduce的使用
大数据·数据库·mapreduce