TL;DR InfluxDB 技术提示 - InfluxDB 聚合函数

导航至

在这篇文章中,我们回顾了本周最有趣的 InfluxDB 聚合函数和 TICK-stack 相关问题、解决方法、操作指南以及来自 GitHub、IRC 和 InfluxDB Google Group 的问答,这些内容您可能错过了。

理解聚合函数返回的时间戳

 

问:为什么以下查询返回 1970-01-01T00:00:00Z 时间戳?我的数据中没有这个时间戳。

> SELECT mean(lions) FROM animals
name: animals
-------------
time                   mean
1970-01-01T00:00:00Z   9.333333333333334

答:InfluxDB 使用 epoch 0 (1970-01-01T00:00:00Z) 作为空时间戳。如果查询没有特定的时间戳返回,则会返回 epoch 0。

聚合函数,例如 mean(),没有特定的时间戳返回。如果您在 WHERE 子句中不包含时间范围,聚合函数将返回 epoch 0。如果您在 WHERE 子句中包含时间范围,聚合函数将返回时间范围内的第一个时间戳。例如

> SELECT mean(lions) FROM animals WHERE time >= '2016-06-22T21:57:23Z' AND time <= '2016-06-22T21:57:32Z'
name: animals
-------------
time                   mean
2016-06-22T21:57:23Z   9.333333333333334

提高查询性能

问:以下查询运行时间较长(大约五秒)。我期望它在毫秒内运行。您有什么建议吗?

SELECT mean("temp") FROM "coffee" WHERE time = '2016-06-22T00:45:15Z' AND office='a' GROUP BY time(1s),office ORDER BY time DESC

答:您可以通过删除 GROUP BY 子句和 ORDER BY time DESC 来简化查询并缩短运行时间。

您不需要 GROUP BY time(1s),因为您在 WHERE 子句中查询了特定的时间戳。同样,您不需要 GROUP BY office,因为您在 WHERE 子句中查询了特定的 office。最后,您不需要 ORDER BY time DESC,因为您的查询返回单个数据点。

SELECT mean("temp") FROM "coffee" WHERE time = '2016-06-22T00:45:15Z' AND office='a'

在 SHOW TAG VALUES 中使用正则表达式

问:是否可以在 SHOW TAG VALUES 查询中使用正则表达式?

答:是的!SHOW TAG VALUESWITH KEY 子句中支持正则表达式。例如,返回所有不包含字母 p 的标签键的标签值

> SHOW TAG VALUES WITH KEY !~ /.*p.*/
name: mymeas
------------
key    value
forte  4
salt   1
salt   2

以下查询应该更快:要获取更多 InfluxDB 提示,请查看我们的常见问题解答页面,并随时在 InfluxDB 用户组中发布您的问题。

下一步是什么?