每次启动命令时,我都会增加一个计数器,并添加一个条目,每隔几毫秒便会增加一个计数器的当前值,从而产生如下所示的条目。
time value
---- -----
1549754123986 0
1549754183993 1
1549754243999 2
1549754304005 3
我想拥有一个Grafana时间序列仪表板,该仪表板显示在一个时间间隔(例如每小时,每3小时,每6小时,...)中已启动命令的次数。
例如,如果命令是从9:00、9:30、10:45、11:00和12:15开始的,则每小时开始的命令图将类似于:
3|
2| ------- -----------
1|------- -------- ----- ----- ----------------
0|_________________________________________________________________________
9:00 9:30 10:00 10:30 11:00 11:30 12:00 12:30 1:00
从https://docs.influxdata.com/influxdb/v1.5/query_language/functions上列出的流入函数中,我想在相隔1小时的最大值(和相隔3、6、12、24小时的其他间隔)之间进行最大值的区别。
我的选择语句是什么样的?
感谢brunorey在我编辑问题以使其更清晰之前在下面回答。
答案 0 :(得分:0)
您可以将SUM()
与GROUP BY
一起使用,以选择三个小时内值变为1的总次数:
> SELECT SUM(value) FROM my_data GROUP BY time(3h);
name: my_data
time sum
---- ---
2019-02-06T12:00:00Z 216
2019-02-06T15:00:00Z 766
2019-02-06T18:00:00Z 704
2019-02-06T21:00:00Z 547
2019-02-07T00:00:00Z 436
2019-02-07T03:00:00Z 497
>
根据您的数据,我知道value
始终是1
或0
。
如果还有更多不同的数字,并且每次都想获得1,则可以使用带有条件的COUNT:
> SELECT COUNT(value) FROM my_data WHERE value=1 GROUP BY time(3h);
上面的查询对于流入是有好处的,如果您想在grafana中实现它们,我建议您定义一个区间变量(请参阅documentation)或使用$__interval
变量(请参阅{{3} }),它会根据您的缩放级别自动调整:
SELECT SUM(value) FROM my_data GROUP BY time($__interval);
答案 1 :(得分:0)
每小时计数:从“计数器”中选择non_negative_derivative(last(“ value”),1h)$ timeFilter GROUP BY time(1h)fill(null)