TL;DR InfluxDB 技术提示 - 自定义 GROUP BY time() 窗口和序列基数

导航至

在这篇文章中,我们回顾了本周最有趣的 InfluxDB 和 TICK 堆栈相关问题,关于自定义 GROUP BY time() 窗口和序列基数的解决方法,以及来自 GitHub、IRC 和 InfluxDB Google Group 的您可能错过的操作指南和问答。

WHERE 子句中的正则表达式

问: 我正在尝试在 WHERE 子句中使用通配符编写查询,但似乎无法使其工作。

我可以在 FROM 子句中使用正则表达式

> SELECT mean("species") FROM /rainforest*/ WHERE "location" = 'q01'

但此查询返回错误

> SELECT mean("species") FROM /rainforest*/ WHERE "location" = /q*/
ERR: error parsing query: found /, expected identifier, string, number, bool at line 1, char 62

答: InfluxQL 要求在 WHERE 子句中使用正则表达式。您需要为正则表达式使用正确的运算符,对于正向匹配使用 ~=, 对于负向匹配使用 !~

例如

> SELECT mean("species") FROM /rainforest*/ WHERE "location" =~ /q*/

序列基数和保留策略

问: 保留策略会影响序列基数吗?

我正在尝试出于性能目的限制我的序列基数。我计划设置多个保留策略,我想知道这是否会对序列基数产生影响。

答: 保留策略不会成倍增加序列基数,因为序列索引仅适用于唯一的度量和标签集组合。无论度量-标签集组合是在每个保留策略中还是仅在一个保留策略中,对于索引而言,它仍然只是一个单独的序列,因此也只关系到基数。

自定义 GROUP BY time() 窗口

问: 有没有办法更改 GROUP BY time() 查询返回的默认时间窗口?

答: 从 InfluxDB 0.13 版本开始,您可以通过包含偏移间隔来更改 GROUP BY time() 的默认舍入日历时间边界。

语法是

SELECT [...] GROUP BY time(time_interval,offset_interval)

有关更详细的描述和示例,请参阅 数据探索

如需更多 InfluxDB 技巧,请查看我们的 常见问题 页面,并随时在 InfluxDB 用户组 中发布您的问题。

接下来是什么?