时序数据库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()
相关推荐
欢呼的太阳5 小时前
数据库设计Step by Step (10)——范式化
服务器·数据库·oracle
喜欢的名字被抢了7 小时前
MySQL基础入门:从零理解数据库与SQL
数据库·mysql·教程
Elastic 中国社区官方博客7 小时前
如何比较两个 Elasticsearch 索引并找出缺失的文档
大数据·运维·数据库·elasticsearch·搜索引擎
DLYSB_8 小时前
生命通道:如何用 HIS 医疗系统直连网络声光终端,打造“零延误”的危急值响应网关?
java·网络·数据库·报警灯
儒雅的大叔8 小时前
MySQL数据库InnoDB数据恢复工具使用总结
数据库·mysql·adb
观远数据8 小时前
ChatBI选型对比:从意图识别到SQL修复,六个维度打分决定是否值得投产
数据库·人工智能·sql
嘉&年华8 小时前
【第008篇】通过dexp和dimp命令导出和导入dmp文件(适用于达梦数据库)
数据库·sql
哥是强混10 小时前
Means:基于 .NET 10 打造的开源自部署 S3 兼容对象存储服务
网络·数据库·.net
ffqws_10 小时前
redis面试:如何保证双写一致
数据库·redis·缓存
水无痕simon10 小时前
6 数据库同义词
数据库