在InfluxQL/InfluxDB中获得30天前的差异

在InfluxQL/InfluxDB中获得30天前的差异,influxdb,grafana,Influxdb,Grafana,我的grafana仪表板中有一个统计数据,显示磁盘的当前使用情况。要获取该信息,我使用以下查询: SELECT last("used") FROM "disk" WHERE "host" = 'server.mycompany.com' AND "path" = '/dev/sda1' AND $timeFilter 我想添加另一个统计数据,显示过去30天使用量的增加/减少。我假设我想得到最后一次测量和30天前的测量,然后减去它们 如何在InfluxQL中做到这一点?它不是完美的,而是具有

我的grafana仪表板中有一个统计数据,显示磁盘的当前使用情况。要获取该信息,我使用以下查询:

SELECT last("used") FROM "disk" WHERE "host" = 'server.mycompany.com' 
AND "path" = '/dev/sda1' AND $timeFilter
我想添加另一个统计数据,显示过去30天使用量的增加/减少。我假设我想得到最后一次测量和30天前的测量,然后减去它们


如何在InfluxQL中做到这一点?

它不是完美的,而是具有

SELECT last("used") - first("used") FROM "disk" WHERE ... AND time > now() - 30d

应该足够了。

对于未来可能会偶然发现这个答案的人来说

当与按时间分组一起使用时,
last(“used”)-first(“used”)
方法不会产生正确的结果,因为将计算单个时间间隔(例如10秒)内的值之间的差值,而不是整个指定期间的差值

上述问题的最后一条评论中描述了适当的解决方案,具体适用于OP的情况:

SELECT cumulative_sum(difference) 
  FROM (SELECT difference(last("used")) 
    FROM "disk") WHERE "host" = 'server.mycompany.com'
                 AND "path" = '/dev/sda1' AND time >= now() - 30d GROUP BY time(5m))
这样做的目的是在5分钟的间隔(桶)内选择
“已使用”的最后一个值,然后计算这些
“最后一个”
值之间的差异

这将产生一系列数字,表示硬盘空间使用的增加/减少


然后,通过
累积_sum
将这些值汇总成一个运行总数,该总数返回一系列值,如每个时间间隔的(1GB、1+5GB、1+5-3GB等)。

有一个悬而未决的问题。这符合我的要求。谢谢“FROM“disk”)后面的结束括号太多了。