概要:InfluxDB 技术提示 - 理解语法、连续查询和时间戳错误

导航至

在这篇每周文章中,我们回顾了您可能在过去一周左右错过的来自 GitHub、IRC 和 InfluxDB Google Group 的最有趣的 InfluxDB 和语法、连续查询和错误时间戳问题、解决方法、操作指南和问答。

在 InfluxQL 中混合聚合与非聚合

问: 我正在运行带有函数和单独标签值的查询。当我使用 max() 函数时,这可以正常工作,但是当我使用 sum() 函数时,出现错误: 不支持混合聚合查询和非聚合查询。我不认为我的语法不正确;我错过了什么?

原始数据

> SELECT * FROM "halloween_c?ndy"
name: halloween_c?ndy
------------------------
time                   candied_?pples   headache_index
2016-10-12T17:02:00Z   2                 0.5
2016-10-12T17:03:00Z   3                 1.2
2016-10-12T17:04:00Z   0.5               1.0

查询

> SELECT max("candied_?pples"),"headache_index" FROM "halloween_c?ndy"
name: halloween_c?ndy
------------------------
time                   max   headache_index
2016-10-12T17:03:00Z   3     1.2

> SELECT sum("candied_?pples"),"headache_index" FROM "halloween_c?ndy"
ERR: error parsing query: mixing aggregate and non-aggregate queries is not supported

答: 您的第一个查询 (max()) 中的函数是一个选择器函数。选择器函数返回单个原始值。您的第二个查询 (sum()) 中的函数是一个聚合器函数。聚合器函数返回单个计算值。

InfluxDB 不支持在同一个 SELECT 语句中使用聚合器函数和独立的标签键或字段键。因为聚合器函数返回计算值,所以对于未聚合的标签或字段,没有明显的单个值可以返回。

在您的示例中,第一个查询返回 candied_?pples 的最大值 (3) 以及当 candied_?pples 等于 3headache_index 的值 (1.2)。第二个查询将返回 candied_?pples 的三个值的总和 (5.5),但对于原始的 headache_index 标签,没有明显的单个值可以返回。

更改连续查询

问: 我可以在创建连续查询后更新它吗?

答: 目前,InfluxDB 没有 ALTER CONTINUOUS QUERY 语句。要更改现有的连续查询,您需要 DROP 然后重新 CREATE 该连续查询。

理解何时错误的时间戳意味着错误的语法

问: 我正在尝试将数据写入 InfluxDB,但一直收到 bad timestamp 错误。唯一的问题是,我的行协议没有任何时间戳。我以为如果我没有提供时间戳,InfluxDB 会自动将服务器的本地时间戳分配给该点;这是错的吗?

示例

> INSERT ghouls likes=12 overall_popularity_index=3
ERR: {"error":"unable to parse 'ghouls likes=12 overall_popularity_index=3': bad timestamp"}

答: 您是对的,如果行协议不包含时间戳,InfluxDB 会自动将服务器的本地纳秒时间戳(UTC)分配给一个点。您遇到的错误时间戳错误实际上是语法错误的结果

行协议对空格敏感。由于 likes=12overall_popularity_index=3 之间存在空格,InfluxDB 认为 overall_popularity_index=3 是时间戳,而 overall_popularity_index=3 实际上是一个无效的时间戳。

用逗号而不是空格分隔 likes=12overall_popularity_index=3 将解决您的问题(这假设这两个元素都是字段)

> INSERT ghouls likes=12,overall_popularity_index=3

查看 行协议教程 文档以了解更多关于行协议语法的信息。

如需更多 InfluxDB 技巧,请参阅我们的 常见问题解答 页面,并随时在 InfluxDB 用户组 中发布您的问题!

接下来是什么?

  • 下载 并 开始使用 InfluxDB!
  • 安排与解决方案架构师的 免费 20 分钟咨询,以审查您的 InfluxDB 项目。
  • 参加我们的免费 虚拟培训研讨会之一。
  • 有问题需要 InfluxData 支持团队立即解答吗?包含无限事件的支持订阅每月仅需 399 美元起。在此处查看所有支持选项 here