Кто-нибудь использовал подзапрос вместе с разницей или производной, такой как
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) и безрезультатно. Точки данных возвращаются за каждую минуту, и все они растут в значении.
Кто-нибудь использовал разницу с подзапросами и группировкой?