У меня есть система, которая требует отслеживать свои показатели. Для этого я использую grafana + Influxdb. В настоящее время я использую infxdb версии 0.9.x.
Я хочу посчитать статистику. Мой вариант использования довольно прост:
- Я хочу сделать выборочный запрос из нескольких источников временных рядов.
- Я хочу сделать группу по оператору внутри запроса выбора, чтобы сгруппировать мои данные.
- Наконец, я хочу найти среднее значение внутри каждой группы.
Мой запрос выглядит следующим образом:
SELECT mean(value) FROM /namespaces_.*.amount/ where time < "2015-10-21T14:16:18Z" group by time(1m);
Это кажется тривиальным, но немного сложным. Получаю что-то вроде этого:
name: namespaces_1.amount
------------------------------------------------------------
time mean
1970-01-01T00:00:00Z 0.8877630461283463
name: namespaces_2.amount
------------------------------------------------------------
time mean
1970-01-01T00:00:00Z 0.6982870635693408
Согласно документации Influxdb, вы можете получать данные из нескольких источников. Другими словами, вы можете написать несколько серий данных после ключевого слова FROM. В то время как я хочу их объединить и обработать объединенные серии. В infxdb 0.8.x была merge
функция, которая давала вам возможность смешивать источники данных. Однако в infxdb 0.9.x нет ни операций слияния, ни объединения.
Ссылка: https://influxdb.com/docs/v0.9/concepts/08_vs_09.html
В InfluxDB 0.9 операции MERGE и JOIN не поддерживаются. Операция MERGE больше не нужна. Все серии в измерении автоматически объединяются при запросе, если явно не исключены тегами в предложении WHERE.
Итак, когда вы пишете
SELECT mean(value) FROM merge(/namespaces_.*.amount/) where time < "2015-10-21T14:16:18Z" group by time(1m);
Вы получаете пустой результат ...
Следовательно, мой вопрос: как можно выбрать данные из нескольких источников временных рядов, объединить их, сгруппировать по некоторым критериям и применить функцию агрегирования к каждой группе с помощью инструментов Infxdb 0.9.x?