TL;DR InfluxDB 技术提示 - InfluxDB 聚合函数
作者:Regan Kuchan / Regan Kuchan / 开发者
2016年6月23日
导航至
在这篇文章中,我们回顾了本周最有趣的 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 VALUES
在 WITH KEY
子句中支持正则表达式。例如,返回所有不包含字母 p
的标签键的标签值
> SHOW TAG VALUES WITH KEY !~ /.*p.*/
name: mymeas
------------
key value
forte 4
salt 1
salt 2
以下查询应该更快:要获取更多 InfluxDB 提示,请查看我们的常见问题解答页面,并随时在 InfluxDB 用户组中发布您的问题。
下一步是什么?
- 正在为您的基础设施寻找 InfluxDB 集群?立即开始使用 InfluxDB Enterprise Beta,现已可用于评估。
- 下载并开始使用 InfluxDB 1.0 Beta 2
- 安排与解决方案架构师的免费 20 分钟咨询,以审查您的 InfluxDB 项目
- 参加我们的免费虚拟培训研讨会之一。