概要:InfluxDB 技术提示 - 理解语法、连续查询和时间戳错误
作者:Regan Kuchan / 开发者
2016年10月13日
导航至
在这篇每周文章中,我们回顾了您可能在过去一周左右错过的来自 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
等于 3
时 headache_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=12
和 overall_popularity_index=3
之间存在空格,InfluxDB 认为 overall_popularity_index=3
是时间戳,而 overall_popularity_index=3
实际上是一个无效的时间戳。
用逗号而不是空格分隔 likes=12
和 overall_popularity_index=3
将解决您的问题(这假设这两个元素都是字段)
> INSERT ghouls likes=12,overall_popularity_index=3
查看 行协议教程 文档以了解更多关于行协议语法的信息。
如需更多 InfluxDB 技巧,请参阅我们的 常见问题解答 页面,并随时在 InfluxDB 用户组 中发布您的问题!
接下来是什么?
- 下载 并 开始使用 InfluxDB!
- 安排与解决方案架构师的 免费 20 分钟咨询,以审查您的 InfluxDB 项目。
- 参加我们的免费 虚拟培训研讨会之一。
- 有问题需要 InfluxData 支持团队立即解答吗?包含无限事件的支持订阅每月仅需 399 美元起。在此处查看所有支持选项 here。