TL;DR InfluxDB 技术技巧 - InfluxQL 查询示例

导航至

在这篇文章中,我们回顾了本周最有意思的 influxQL 查询示例、InfluxDB 和 TICK 堆栈相关的问题、解决方案、教程和问答,这些内容可能您已经错过了。GitHub、IRC 和 InfluxDB 的 Google 群组

理解意外的 fill() 行为

问题:我在查询中使用 fill(0),但它没有返回任何结果。这是预期的行为吗?

答案:如果您的数据中没有任何数据点落在查询的时间范围内,您的查询将不会返回任何结果 - 即使查询中包含了 fill()。这是 fill() 当前的工作方式,但有一个问题 正在提出改变这种行为的请求。

例如

写入一个数据点

> INSERT invisible person=7 1467842220000000000
> SELECT * FROM "invisible"
name: invisible
---------------
time                   person
2016-07-06T21:57:00Z   7

使用 fill(0) 并查询包含该点的时序范围

> SELECT mean("person") FROM "invisible" WHERE time >= '2016-07-06T21:57:00Z' AND time <= '2016-07-06T21:59:00Z' GROUP BY time(1m) fill(0)
name: invisible
---------------
time                   mean
2016-07-06T21:57:00Z   7
2016-07-06T21:58:00Z   0
2016-07-06T21:59:00Z   0

使用 fill(0) 并查询不包含该点的时序范围

> SELECT mean("person") FROM "invisible" WHERE time >= '2016-07-06T21:58:00Z' AND time <= '2016-07-06T21:59:00Z' GROUP BY time(1m) fill(0)

查询测量中的最新点

问题:我正在尝试找到我的测量中的最后一个点。我已经包括了用来做这个的查询,但我想知道 - 有没有更好的方法来做这件事?

> SELECT "dance_id" FROM "ballroom" ORDER BY time DESC LIMIT 1
name: ballroom
--------------
time                   dance_id
2016-07-06T20:26:10Z   103

答案:是的!有一个 InfluxQL 函数 (LAST()) 可以返回测量中的最后一个点

> SELECT last("dance_id") FROM "ballroom"
name: ballroom
--------------
time                   last
2016-07-06T20:26:10Z   103

InfluxDB 技术技巧视频

查看以下 2016 年 6 月 InfluxDB Meetup 中的视频,了解系列基数、INTO 查询等技巧。

有关更多 InfluxDB 技巧,请参阅我们的 常见问题解答 页面,并在 InfluxDB 用户组 中自由提问。

接下来是什么?