gpt4 book ai didi

influxdb - GROUP BY 上的 SUM(LAST())

转载 作者:行者123 更新时间:2023-12-03 17:05:36 26 4
gpt4 key购买 nike

我有一个系列,disk,包含 path ( /mnt/disk1/mnt/disk2 等)和 total一个磁盘的空间。它还包括 freeused值。这些值以指定的时间间隔更新。我想做的是查询以获取 total 的总和的last()每条路径。我也想对 free 做同样的事情和 used , 获取服务器上所有磁盘的总大小、可用空间和已用空间的总和。

我在这里有一个查询可以让我获得 last(total)所有磁盘中,按其路径分组(为了区分):
select last(total) as total from disk where path =~ /(mnt\/disk).*/ group by path
目前,这将返回 5 个系列,每个系列包含 1 行(最新的)及其值 total .然后我想取这些系列的总和,但我不能只包装 last(total)sum()函数调用。有没有办法做到这一点,我失踪?

最佳答案

继续我上面关于嵌套函数的评论。

构建玩具示例:

CREATE DATABASE FOO
USE FOO

假设您的数据以大于 [1] 每分钟的间隔更新:
CREATE CONTINUOUS QUERY disk_sum_total ON FOO 
BEGIN
SELECT sum("total") AS "total_1m" INTO disk_1m_total FROM "disk"
GROUP BY time(1m)
END

然后插入一些值:
INSERT disk,path="/mnt/disk1" total=30
INSERT disk,path="/mnt/disk2" total=32
INSERT disk,path="/mnt/disk3" total=33

等待超过一分钟。然后:
INSERT disk,path="/mnt/disk1" total=41
INSERT disk,path="/mnt/disk2" total=42
INSERT disk,path="/mnt/disk3" total=43

再等一分钟+。然后:
SELECT * FROM disk_1m_total

name: disk_1m_total
-------------------
time total_1m
1476015300000000000 95
1476015420000000000 126

这两个值是 30+32+33=9541+42+43=126 .

从那里,查询很简单:
SELECT last(total_1m) FROM disk_1m_total

name: disk_1m_total
-------------------
time last
1476015420000000000 126

希望有帮助。

[1] 选择小于更新频率的间隔可防止轻微的定时抖动使给定组的所有数据意外相加两次。可能有一些“零更新”间隔,但没有“重复计数”间隔。我通常运行查询的速度是更新速度的两倍。如果 CQ 没有看到某个窗口的数据,则不会对该窗口执行 CQ,因此 last()仍然会给出正确答案。例如,我让 CQ 运行了一夜,并且没有推送任何新数据: last(total_1m)给出相同的答案,对于“没有新数据”不为零。

关于influxdb - GROUP BY 上的 SUM(LAST()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39921101/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com