InfluxDB-получение только последнего значения в запросе

можно ли запросить только последнее значение (или n-е значение) результатов запроса?

например, в запросе:

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

можно получить только последнее значение, т. е. один далеко назад во времени (возможно, 1000-й элемент)?

конечно, я могу получить их все, а затем перейти к последнему, но я не хочу тратить bandwith таким образом.

5 ответов


в API посмотрите сначала/последний, чтобы выбрать первую или последнюю запись столбца. У вас также есть верх/низ, чтобы выбрать более одной записи

[edit] 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 не используйте во-первых() или LAST () если у вас не ГРУППЫ ПО за его очень медленно : (

поэтому, если вы хотите получить эти значения, которые вы должны использовать:

Первое Значение:

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

Последнее Значение:

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

не удаляйте группу по*, потому что тогда возможно, что вы получите неожиданные значения.


SELECT * FROM <SERIES> ORDER BY ASC LIMIT 1

нет ошибки или какой-либо проблемы с LIMIT. Да, есть один, но речь идет о SLIMIT (предел серии). Лимит можно смело использовать для получения первый 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. А вот the проблемой о SLIMIT.