Как мне отредактировать измерение (= набор значений с отметкой времени) в InfluxDB? - PullRequest
0 голосов
/ 16 апреля 2020

Я использую экземпляр базы данных Influx, который собирает данные из разных источников. Иногда эти данные просто неверны и должны быть исправлены, иначе последующие анализы не пройдут и / или приведут к неверным результатам. Тем не менее, SQL подобный диалекту InfluxDB не имеет возможности UPDATE, и «обновление» отдельных точек данных возможно только путем замены точек данных на те же временные метки, используя другую INSERT.

И для этой цели я ищу для способа массового редактирования выбранных точек данных внутри измерения, не прерывая процесс сбора данных, который может вставить новые точки данных во время редактирования. Вот что я попробовал:

  • Я могу запросить подмножество измерения для редактирования, используя, например, SELECT * FROM measurement WHERE time > ..., используя HTTP API, и я получаю файл JSON, но нет (очевидного) способа чтобы вставить эту JSON (после ее редактирования) и заменить исправленные измерения.
  • Я могу экспортировать всю базу данных, используя influx_inspect, и повторно импортировать ее, но это слишком медленно. Таким образом, 200 МБ необработанных данных расходуется до> 1 ГБ данных линейного протокола, что слишком много для коррекции 2-3 точек данных.

Есть другие идеи? Я в порядке со скриптами и редактированием в текстовом редакторе, но я не в порядке с ручным созданием INSERT для каждой точки данных, которую нужно исправить.

1 Ответ

0 голосов
/ 19 апреля 2020

Поскольку, похоже, нет реального решения этой проблемы, я взломал скрипт для этого. Осторожно, он действительно быстрый и грязный, не тестировался ни на чем, кроме моего собственного оборудования, и содержит множество предположений (например, база данных на localhost, доступно Perl, et c).

https://gist.github.com/jensb/9efa234b80024a0e335de760d9a4f3aa

...