Ребята, я храню в течение 7 дней температурные сообщения, которые я получаю через MQTT через Telegraf в сообщениях на моем RapsberyyPI InfluxDB. то, что я вижу, когда визуализирую свою температуру, я получаю значения температуры от -200 до +200, что кажется случайным. Так что в большинстве случаев я получаю правильное значение. Просто задайтесь вопросом, есть ли способ сказать, что телеграф принимает значения только между -30 и +40, чтобы я мог фильтровать эти значения, прежде чем вставлять их в свою базу данных Influx. Любые идеи? Источником данных является сниффер aRTL_433, запущенный на моем Rapsi и отправляющий все, что он получил, как JSON. Похоже, эти данные не всегда так точны, как мне нужно.
Фильтруйте данные InfluxDB до их прибытия
Ответы (2)
Вы можете попробовать создать непрерывный запрос, который принимает только значения из вашего диапазона. Для этого вам нужно иметь два измерения в вашей базе данных, я назову их raw_temp и temp. Может быть что-то вроде:
CREATE CONTINUOUS QUERY "temp_filter" ON "my_db"
RESAMPLE EVERY 30s FOR 30s
BEGIN
SELECT "temperature" INTO "temp" from "raw_temp" where "temperature" > -40 and
"temperature" < 40 GROUP BY *
END
А затем создайте непрерывный запрос, который удаляет все в raw_temp старше часа. Или вы можете установить Kapacitor, который упрощает манипулирование данными.
person
Patrick More
schedule
29.08.2018
используйте конденсатор, чтобы решить эту проблему.
сначала создайте базу данных с короткой политикой хранения для хранения необработанных данных. На втором этапе создайте сценарий tick DSL, чтобы получить то, что вы хотите, а затем запишите его обратно в новую базу данных, например
batch
|query('''
...
''')
.period(5m)
.every(5m)
.groupBy(time(1m))
|influxDBOut()
.database('some_database')
.retentionPolicy('autogen')
.measurement('some_measurement')
person
R wang
schedule
30.08.2018