InfluxDB2.0 如何计算更大时间范围内的每日价值?

问题描述 投票:0回答:5

我正在将我的 InfluxDB1.8 版本迁移到 InfluxDB2.0 我正在使用 influxDB2.0 数据库并使用 grafana 来显示结果。 我作为数据插入的是我的P1表的结果,虽然结果是总值,但我想计算并显示每天的结果。 插入的是当前(气体使用)值。通过计算一天开始和结束的差异,我得到了我每天的使用结果。

我确实找到了一种方法来执行此操作 1 天。具有传播功能。但我没有让它工作超过 1 天的时间。

但是现在要在更长的时间范围内显示每日使用情况。我没有找到正确的选择来让它工作 周结果

有人有想法吗?

查询1天:

  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "Gas-usage")
  |> filter(fn: (r) => r["_field"] == "value")
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
  |> spread(column: "_value")```
influxdb influxdb-2
5个回答
2
投票

我对 1.8 做了一些检查,那里的工作原理是:

SELECT spread("value") 
FROM "Gas-usage" 
WHERE $timeFilter 
GROUP BY time(1d) fill(null) tz('Europe/Berlin')

这个查询在 influxdb 2.0 中的等价物是什么?


0
投票

尝试更改聚合窗口,如下所示:

|> aggregateWindow(every: 1d, fn: mean)

0
投票

在 aggreagateWindow 函数中使用传播函数。

应该是这样的:

|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "Gas-usage")
|> filter(fn: (r) => r["_field"] == "value")
|> aggregateWindow(every: 1d, fn: spread, createEmpty: false)

0
投票
from(bucket: "${bucket}")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "system")
  |> filter(fn: (r) => r.host == "${host}")
  |> filter(fn: (r) => r["_field"] == "uptime")
  |> aggregateWindow(every: 1d, fn: spread, createEmpty: false)

result of my grafana


0
投票

你是个天才。我是 SO 的新手,所以它不允许我直接附加图像,但传播功能是我唯一缺少的部分。图中最上面的图表用于手动检查每日总数是否正确。

编辑:increase() 不是我想要的。我应该一直在使用 cumulativeSum()。下面的查询被编辑为正确的。

from (bucket: "${buckets}")
  |> range(start: -7d)
  |> filter(fn: (r) => r._measurement == "Tstat")
  |> filter(fn: (r) => r["Location"] == "${site}")
  |> filter(fn: (r) => r["_field"] == "compHeat1" or r["_field"] == "auxHeat1" or r["_field"] == "compCool1")
  |> cumulativeSum(columns: ["_value"])
  |> aggregateWindow(every: 1d, fn: spread, createEmpty: false)
  |> yield(name: "spread")

barchart i made

© www.soinside.com 2019 - 2024. All rights reserved.