InfluxDB-仅获取查询中的最后一个值

InfluxDB-仅获取查询中的最后一个值,influxdb,Influxdb,是否可以只查询查询结果的最后一个值(或第n个值) 例如,在查询中: SELECT value FROM response_times WHERE time > now() - 1h limit 1000; 是否可以仅获取最后一个值,即时间上更远的值(可能是第1000个元素) 当然,我可以全部检索它们,然后跳到最后一条,但我不想这样浪费时间。在API中,查看first/last以选择列的第一条或最后一条记录。 您还可以使用top/bottom选择多条记录 [编辑]顶部/底部似乎返回时间范围

是否可以只查询查询结果的最后一个值(或第n个值)

例如,在查询中:

SELECT value FROM response_times WHERE time > now() - 1h limit 1000;
是否可以仅获取最后一个值,即时间上更远的值(可能是第1000个元素)


当然,我可以全部检索它们,然后跳到最后一条,但我不想这样浪费时间。

在API中,查看first/last以选择列的第一条或最后一条记录。 您还可以使用top/bottom选择多条记录

[编辑]顶部/底部似乎返回时间范围的最高/最低值

SELECT last(value) FROM response_times WHERE time > now() - 1h;
应该返回列的最后一个值

但是,如果需要,可以将序列拆分为较小的部分,然后选择最后一个值。例如:

 SELECT last(value) FROM response_times WHERE time > now() - 1h GROUP BY time(60s);

它将把序列分成60秒的片段,并为每个片段提取最新的值。

如果您使用InfluxDB 0.8,不要使用FIRST()LAST(),如果您没有分组依据,因为它的非常慢:(

因此,如果要获得这些值,应使用:

第一个值:

SELECT * FROM <SERIES> GROUP BY * ORDER BY ASC LIMIT 1
从分组依据*订单依据ASC限额1中选择*
最后一个值:

SELECT * FROM <SERIES> GROUP BY * ORDER BY DESC LIMIT 1
从分组依据*订单依据描述限制1中选择*
不要按*删除分组,因为这样可能会得到意外值。

SELECT*FROM ORDER BY ASC LIMIT 1
SELECT * FROM <SERIES> ORDER BY ASC LIMIT 1

没有关于限制的错误或任何问题。是的,有一个,但它是关于SLIMIT(系列限制)。限制可以安全地用于获取前n条记录

简而言之,LIMIT的语法是:

SELECT_clause [INTO_clause] FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] LIMIT <N>
从_子句[WHERE_子句][GROUP_BY_子句][ORDER_BY_子句]限制中选择_子句[INTO_子句]
SLIMIT的语法:

SELECT_clause [INTO_clause] FROM_clause [WHERE_clause] GROUP BY *[,time(<time_interval>)] [ORDER_BY_clause] SLIMIT <N>
从_子句[WHERE_子句]groupby*[,time()][ORDER_BY_子句]SLIMIT中选择_子句[INTO_子句]
您可以看到GROUPBY子句在LIMIT中是[optional]

有关LIMIT和SLIMIT用法的详细说明,请参见。
这是关于SLIMIT的信息。

这是一个具体的示例,假设我们有数据:

> select *,tag from measurement
name: measurement
time                 field_1    tag_1
----                 -------    ------
2019-05-15T03:07:52Z 100      A
2019-05-15T03:07:52Z 101      B
2019-05-15T03:09:52Z 100      A
2019-05-15T03:09:52Z 101      B
您要获取最后两列(每个标记_1的最新记录), 然后你可以这样做:

> select last(field_1),* from measurement group by *
name: measurement
tags: tag_1=A
time                 last     field_1 
----                 ----    ------- 
2019-05-15T03:09:52Z 100        100     

name: measurement
tags: tag_1=B
time                 last  field_1 
----                 ----  ------- 
2019-05-15T03:09:52Z 101    101 
还有grafana上的可视化,它将始终显示每个标记的最后记录

这是在哪里记录的?我在0.8或0.8中找不到它。它在聚合函数中:很抱歉以前没有提供链接!我最感兴趣的是获取第一个/最后一个值的时间…有什么方法可以做到这一点吗?您对这些意外值是什么样子以及为什么会出现有什么解释吗?-1。如果您想评估如果有些东西坏了,请提供一个坏的演示—而不是一个模糊且不稳定的断言,即“您可能会得到意外的值”。运行XDB 1.7.9时,此查询会返回一个表/度量的多个结果。显然,这只适用于一系列。只需使用“EXPLAIN”和“LAST()”进行检查即可使用“WHERE time>now()-1h”似乎比使用“ORDER BY…LIMIT”更好/更快,即使使用“GROUP BY”-后者使用了所有碎片在XDB版本中>0.8是快的?描述最后一个值。限制为1的ASC将返回第一个值。对于长系列,这也比选择
WHERE time>now-…
慢得多。如果最后一个值比x之前长,则不会给出最后一个值。