InfluxDB, Разница, Подзапрос и группы - PullRequest
0 голосов
/ 04 мая 2020

Кто-нибудь использовал подзапрос вместе с разницей или производной, такой как

SELECT difference(sum(“value”)) FROM (SELECT MAX(“value”) as value FROM “duration” WHERE time > now() - 15m GROUP BY time(1m),bucket,api) GROUP by time(1m), bucket

Данные в основном представляют собой набор сегментов для времени ответа.

time    bucket  api       value
=====   ======  =======   =====

xxxx     1      /api/xxx     10
xxxx     1      /api/yyy     23
xxxx     2      /api/xxx     47
xxxx     2      /api/yyy     56
xxxx+1   1      /api/xxx     14
xxxx+1   1      /api/yyy     26
xxxx+1   2      /api/xxx     53
xxxx+1   2      /api/yyy     67
(...)

Каждое измерение является счетчиком количества вызовов API, которые соответствуют критериям сегмента (время отклика). Конечно, счетчик может сброситься до 0, и я, скорее всего, буду использовать non_negative_difference, но не раньше, чем смогу получить разницу, производную или что-либо еще для работы

Запрос без разницы работает нормально.

SELECT sum(“value”) FROM (SELECT MAX(“value”) as value FROM “duration” WHERE time > now() - 15m GROUP BY time(1m),bucket,api) GROUP by time(1m), bucket

возвращает данные точные и правильные, однако:

SELECT difference(sum(“value”)) FROM (SELECT MAX(“value”) as value FROM “duration” WHERE time > now() - 15m GROUP BY time(1m),bucket,api) GROUP by time(1m), bucket

возвращает пустой набор результатов каждый раз. Подобные запросы без подзапроса работают нормально, однако мне нужно получить последнее значение для каждого API корзины и затем сложить их вместе, чтобы получить правильные значения для использования.

примечание: я использовал это с fill (0) и безрезультатно. Точки данных возвращаются за каждую минуту, и все они растут в значении.

Кто-нибудь использовал разницу с подзапросами и группировкой?

...