web-dev-qa-db-ja.com

InfluxDB-クエリの最後の値のみを取得する

クエリの結果の最後の値(またはn番目の値)のみをクエリすることはできますか?

たとえば、クエリでは:

SELECT value FROM response_times WHERE time > now() - 1h limit 1000;

最後の値、つまり時間的にもっと前の値(おそらく1000番目の要素)のみを取得することは可能ですか?

もちろん、それらをすべて取得して最後の1つにスキップすることもできますが、この方法で帯域幅を無駄にしたくありません。

14
dukebody

APIで、first/lastを見て、列の最初または最後のレコードを選択します。また、複数のレコードを選択するためのトップ/ボトムもあります

[編集] top/bottomは時間枠の最高値/最低値を返すようです

6
Pi Home Server

InfluxDB 0.8を使用している場合は、FIRST()またはLAST()を使用しないでください GROUP BYそのは非常に遅いため:(

したがって、使用するこれらの値を取得する場合は、次を使用します。

最初の値:

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

最終値:

SELECT * FROM <SERIES> GROUP BY * ORDER BY DESC LIMIT 1

GROUP BY *を削除しないでください。削除すると、予期しない値が取得される可能性があります。

22
archos
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秒のフラグメントに分割し、フラグメントごとに最新の値を取得します。

13
Molina
SELECT * FROM <SERIES> ORDER BY ASC LIMIT 1
2
IsaacE

LIMITに関するバグや問題はありません。はい、ありますが、SLIMIT(シリーズ制限)についてです。 LIMITは、最初のnレコードを取得するために安全に使用できます。

要するに、LIMITの構文は次のとおりです。

SELECT_clause [INTO_clause] FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] LIMIT <N>

sLIMITの構文:

SELECT_clause [INTO_clause] FROM_clause [WHERE_clause] GROUP BY *[,time(<time_interval>)] [ORDER_BY_clause] SLIMIT <N>

GROUP BY句はLIMITで[オプション]であることがわかります。

LIMITおよびSLIMITの使用法の詳細な説明については、 バージョン1.5ドキュメント を参照してください。そして、これが 進行中の問題 SLIMITについてです。

1
stratovarius

ここに具体的なサンプルがあります。データがあると仮定します。

> 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

最後の2列(tag_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の視覚化では、タグごとに常に最後のレコードが表示されます enter image description here

0
LIU YUE