首页 > 解决方案 > 将单独的信号流合并到一个表中,并为每个时间间隔的每个信号提供一个聚合值

问题描述

我有一个 InfluxDB 为每次测量分别从设备接收数据点,即对于 GPS 位置,纬度/经度/高度是三个不同的流,必须单独查询。我无法更改应用程序的这一部分。

现在我想在 Grafana 中创建一个简单的表,显示每个时间戳的组合 GPS 数据集。我设法将所有这些信号合并到一个表中,但现在每个信号都是它自己的行: 截屏

我的查询如下所示:

SELECT 
  median(Latitude) as "Lat", 
  median(Longitude) as "Long", 
  median(Altitude) as "Alt", 
  median(TheSpeed) as "Speed" 
FROM
  (SELECT value as "Latitude" FROM "signal-1" WHERE $timeFilter  AND deviceId =~/$DeviceID/),
  (SELECT value as "Longitude" FROM "signal-2" WHERE $timeFilter  AND deviceId =~/$DeviceID/),
  (SELECT value as "Altitude" FROM "signal-5" WHERE $timeFilter  AND deviceId =~/$DeviceID/),
  (SELECT value as "TheSpeed" FROM "signal-4" WHERE $timeFilter  AND deviceId =~/$DeviceID/)
WHERE $timeFilter 
GROUP BY time(1s)

如何将四个单独的信号合并到一个表格行中?

谢谢你的帮助,我被困在这上面了。

标签: grafanainfluxdb

解决方案


我找到了解决方案:

像这样更改查询:

SELECT 
median(value)
FROM
(SELECT value FROM "signal-1" WHERE $timeFilter  AND deviceId =~/$DeviceID/),
(SELECT value FROM "signal-2" WHERE $timeFilter  AND deviceId =~/$DeviceID/),
(SELECT value FROM "signal-5" WHERE $timeFilter  AND deviceId =~/$DeviceID/),
(SELECT value FROM "signal-4" WHERE $timeFilter  AND deviceId =~/$DeviceID/),
WHERE $timeFilter 
GROUP BY time($timegap), "description" 
FILL(previous)

并将表格格式化为时间序列(而不是“表格”)并使用“描述字段”作为别名。

现在它看起来正是我所需要的: 在此处输入图像描述

我有点惊讶没有人回答这个问题,回想起来这似乎是一个菜鸟问题。:(


推荐阅读