티스토리 뷰

반응형

개발하는 중에, java를 이용해서 influxdb 에 저장된 데이터를 조회할 일이 있었다. influxdb의 공식 github을 찾아보니 flux-dsl 라이브러리가 있었고, 해당 라이브러리는 좀 더 편리하게 query 문을 작성할 수 있게 제공하였다.

 

그래서 해당 라이브러리를 이용하여 쿼리문을 작성하던 중,  filter에서 문제가 발생하였다. 여러 조건으로 filter를 적용하여, query 문을 작성했는데, 첫 filter 만 적용되고, 나머지는 적용되지 않았다.

 

 

초기 코드 

[ 초기 작성 코드 ]

위의 코드는 초기 작성한 코드 였으며, 이미지와 같이 filter를 2번 작성하였다.

왜냐하면, influxdb ui에서는 script 에 filter를 여러 번 작성하여도, 조건에 맞춰서 검색이 되었기 때문이다. 

 

그런데, script 를 생각하고 filter를 여러개 작성하였더니, measurement 조건의 filter만 적용되고 나머지 filter는 적용되지 않음을 확인하였다.

 

그래서 문서를 찾아보니, filter는 한 번만 사용하고, 여러 tag/field 에 대한 조건을 추가하려면 Restrictions를 이용해야 했다.

[ influx 공식 문서에서 사용법 발췌 ]

 

 

변경 코드

[ 문서를 확인하고 변경한 코드 ]

 

[ intellij 에서 디버그를 이용해 실제 생성된 query 문 ]

문서에 있는 내용을 확인하고, Restrictions 을 반영하여 filter를 추가한 결과, intellij 의 디버그를 통해 생성된 query문을 보니 내가 원하는 대로 filter가 잘 적용된 것을 확인할 수 있었다.

 

 

Reference

https://influxdata.github.io/influxdb-client-java/flux-dsl/apidocs/com/influxdb/query/dsl/functions/FilterFlux.html

 

FilterFlux (The Flux DSL 6.1.0-SNAPSHOT API)

JavaScript is disabled on your browser. public final class FilterFlux extends AbstractParametrizedFlux Filters the results using an expression. See SPEC. Options fn - Function to when filtering the records. The function must accept a single parameter which

influxdata.github.io

https://github.com/influxdata/influxdb-client-java

 

GitHub - influxdata/influxdb-client-java: InfluxDB 2 JVM Based Clients

InfluxDB 2 JVM Based Clients. Contribute to influxdata/influxdb-client-java development by creating an account on GitHub.

github.com

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함