influxdb_client

influxDB에 파이썬의 influxdb_client를 이용해서 자료를 입력하고, 읽어 오고 있다.

특정 값이 일정 범위를 벗어나면 알람을 보내도록 하고 싶었다. 그래서 테스트를 위해 과도한 값을 넣었다. 알람이 발송되면 이 자료를 삭제하고 싶었다.

우선 자료를 삭제하는 방법은 다음과 같이 하면 된다. 예를 들어 3시간 이내의 자료 중에서 class=”cool”가 지정된 자료를 다음과 같이 실행하면 된다.

import influxdb_client
import datetime

client = influxdb_client.InfluxDBClient(url=url, token=token, org=org)
delete_api = client.delete_api()

stop = datetime.datetime.utcnow()
start = stop - datetime.timedelta(hours=3)

start_iso = start.strftime("%Y-%m-%dT%H:%M:%SZ")
stop_iso = stop.strftime("%Y-%m-%dT%H:%M:%SZ")

delete_api.delete(
start_iso,
stop_iso,
predicate='class = "cool"',
bucket=bucket,
org=org
)

비정상 값을 삭제하기 위하여 _value에 부등호나 등호를 사용하여 보았다. 그런데 자꾸 오류가 났다. 코파일럿과 함께 오류를 찾아 보았다. 검색을 한 결과 원래부터 안된다는 것을 알게 되었다.

즉, _time과 _value를 기준으로 하는 값은 할 수 없다는 것이다.

감시 프로그램의 설정을 확인하기 위해서 비정상 값을 입력할 때에 별도의 tag나 field 값을 더 입력해야, 나중에 이 값만 삭제를 할 수 있을 것이다.

그래서 별도의 tag를 지정해서 비정상 값을 입력했다. 그런데 이번에는 Grafana에서 별도의 자료로 분리되어 보이는 것이었다.

이럴 때는 group 를 이용해서 동일한 센서에서 입력된 값을 묶어준다.

|> group(columns: ["_measurement", "device"], mode: "by")