Выбор нескольких значений / агрегаторов из Influxdb, исключая время - PullRequest
0 голосов
/ 09 октября 2018

Я получил таблицу базы данных притока, состоящую из

> SELECT * FROM results
name: results
time                artnum   duration 
----                ------   --------   
1539084104865933709 1234     34  
1539084151822395648 1234     81  
1539084449707598963 2345     56  
1539084449707598123 2345     52

и других тегов.И artnum, и duration являются полями (хотя это можно изменить).Сейчас я пытаюсь создать запрос (использовать в графане), который дает мне следующий результат с вычисленным mean() и количеством измерений для этого artnum:

artnum   mean_duration  no. measurements
------   --------       -----  
1234     58             2
2345     54             2

Прежде всего: Возможно ли исключить столбец time?Во-вторых, каков дБ способ создания такой таблицы?Я начал с

SELECT mean("duration"), "artnum" FROM "results"

, что привело к ERR: mixing aggregate and non-aggregate queries is not supported.Затем я нашел https://docs.influxdata.com/influxdb/v1.6/guides/downsampling_and_retention/,, который выглядел как то, что я хотел сделать.Затем я создал политику бесконечного хранения (длительность 0 с) и непрерывный запрос

> CREATE CONTINUOUS QUERY "cq" ON "test" BEGIN 
SELECT mean("duration"),"artnum"
INTO infinite.mean_duration 
FROM infinite.test 
GROUP BY time(1m) 
END

. Я следовал инструкциям, но после того, как я подал некоторые данные в базу данных и ждал 1 м, `SELECT * FROM" infinite ". "mean_duration" ничего не вернул.

Это правильный подход или я должен продолжить в другом месте?Самая цель - увидеть обновленную таблицу в графане, которая обновляется раз в минуту.

1 Ответ

0 голосов
/ 09 октября 2018

InfluxDB - это база данных серии time , поэтому вам действительно нужно измерение времени - также в ответе.Вам будет тяжело с Grafana, если ваш запрос вернет данные не временного ряда.Поэтому не пытайтесь удалить time из запроса.Лучше скрыть время на панели таблиц Grafana - используйте стили столбцов и установите Type: Hidden.

В InfluxDB нет таблиц, но есть измерения.Я думаю, вам нужен запрос с правильной группировкой * только 1010 *, без предварительных непрерывных запросов и т. Д. Попробуйте и улучшите этот запрос *:

SELECT 
  MEAN("duration"), 
  COUNT("duration") 
FROM results
  GROUP BY "artnum" fill(null)

* у вас могут быть проблемы с группировкой в ​​вашемслучай, потому что artnum - это InfluxDB field - лучший вариант - сохранить artnum как InfluxDB tag.

...