본문 바로가기
카테고리 없음

[InfluxDBv2] Flux 문법

by jaeaemin 2023. 12. 17.

이전 버전과 influxDBv2의 가장 큰 차이점은 쿼리언어가 Flux문으로 교체되었다는 점입니다.

아래에서는 Flux문에 대해서 알아봅시다.

 

[1] Query fields and tags

filter()를 사용해서 필드나 태그 또는 다른 컬럼의 값을 조건 기반으로 검색할 수 있습니다.

influxQL의 SELECT()문과 WHERE문을 조합해서 사용하던 방식과 유사합니다.

 

Flux 조건식은 predicate expression를 기반으로 하는데 predicate expression은 true, false를 반환합니다.

 

Example predicate function

(r) => r.foo == "bar" and r.baz != "quz"

 

 

filter함수에서는 이러한 predicate expression으로 구성되는 predicate function (fn) 이라는 매개변수를 받습니다.

predicate function은 각 행에 대해서 조건식을 통해 true/false를 반환하고, true 값들의 행만 검색합니다.

 

predicate function(fn)에는 r 이라는 인수가 필요한데, 이는 입력 데이터 위에서 filter() 함수에서 반복되는 각 행을 나타냅니다.

행 레코드의 Key-Value 쌍은 열과 그 값을 나타냅니다. predicate function에서 특정 열 값을 참조하려면 점 표기법 또는 괄호 표기법을 사용하여 참조할 수 있습니다. 또한 논리 연산자를 사용하여 여러 술어 표현식을 함께 연결할 수 있습니다.

 

// Row record
r = {foo: "bar", baz: "quz"}

// Example predicate function
(r) => r.foo == "bar" and r["baz"] == "quz"

// Evaluation results
(r) => true and true

 

[1]  Filter()를 통한 쿼리

 

from(), range() 및 filter()의 조합은 가장 기본적인 Flux 쿼리를 나타냅니다:

from() : 쿼리하려는 버킷를 명시합니다.
range() : 쿼리하려는 시간을 명시합니다.
filter() : 조건식을 통해 검색하려는 데이터 행을 명시합니다.
현재 시점에서 1h이전의 데이터 중 ( measurements && tag ) || filed 로 검색합니다.
from(bucket: "example-bucket")
    |> range(start: -1h)
    |> filter(fn: (r) => r._measurement == "example-measurement" and r.tag == "example-tag")
    |> filter(fn: (r) => r._field == "example-field")
 

 

[1]  Group()을 통한 쿼리

 

반응형