У меня есть база данных InfluxDB, хранящая данные с частотой 1 минута в одном measurement
. У меня есть несколько fields
и один tag
. Я довольно новичок в InfluxDB.
Визуализируя свои данные, я заметил, что в некоторых тегах отсутствуют данные в случайные моменты времени. Иногда отдельные минуты, иногда, может быть, 20 последовательных минут.
Я хотел бы перечислить все временные метки для каждого из значений тега, где отсутствуют данные, чтобы я мог попытаться получить эти данные (из исходного источника) и вставить его. Я не хочу fill
пропусков, используя интерполяцию / прямое заполнение и т. Д. c.
Я обнаружил ELAPSED
метод , который я могу использовать следующим образом:
> select elapsed(*,1m) from measurement where time > (now() - 160m) group by tag
name: measurement
tags: tag=my_tag
time elapsed_field elapsed_field1
---- ------------- --------------
1586512020000000000 1 1
1586512080000000000 1 1
1586512140000000000 1 1
1586512200000000000 1 1
Если я понимаю единицу в elapsed(*,unit)
, он указывает только отображаемую единицу разницы между последовательными временными метками. Поэтому мне нужно было бы pipe или отфильтровать результаты выше для случаев, когда значения в этих таблицах не равны 1 минуте, моя желаемая разница.
Как я могу это сделать? Как я могу сохранить временные метки, где разрыв составляет> 1 минуты. Еще лучше, как я мог бы перечислить все отсутствующие метки времени?
Я мог бы сделать это в Python, запросив все данные для каждого тега и сравнив их с полным временным индексом моего собственного создания, но я бы предпочел получать эту информацию прямо из InfluxDB, без необходимости сначала читать все в память.
Я использую InfluxDB v1.7.7