The Boxer

Druid Query Filter 본문

Storage/Druid

Druid Query Filter

Prower 2022. 7. 15. 00:43
728x90
반응형
  • druid에서 query에 어떤 데이터가 포함되어야 하는지 명시
  • SQL에서 row단위의 제약을 거는 where 절과 동일하게 볼 수 있음
  • 일반적으로 dimension 에 적용되는 조건이나, metric 에도 적용될 수 있음

query filter 종류

selector

  • 가장 기본적인 filter
  • 특정 dimension의 지정한 값에 해당하는 데이터 추출
  • extraction function 적용 가능
{
    "filter": {
        "type": "selector",
        "dimension": "d1" ,
        "value": "test"
    }  
}

column comparison

  • 특정 dimension이 같은 조건에 해당하는 데이터 추출
  • 예시에서 dimension1 = dimension2 와 같은 기능
{
    "filter": {
        "type": "columnComparison",
        "dimensions": [ "dimension1" , "dimension2" ]
    } 
}

regex

  • 정규표현식에 부합하는 조건으로 추출
{
    "filter": {
        "type": "regex",
        "dimension": "dimension" ,
        "pattern": ".*"
    }
}

logical expression

  • 기본 형식
{ "type": "and" | "or" | "not", "fields": [filter] | filter }
  • filter 타입은 query filter의 어떤 종류도 적용 가능
  • and, or, not

search filter

  • 지정한 문자열이 특정 dimension에 부분 매칭되는 조건으로 데이터 추출
{
    "filter": {
        "type": "search",
        "dimension": "dimension",
        "query": {
          "type": "contains",
          "value": "foo"
        }
    }
}

query의 type

  • Contains: 일반적인 search query
    • caseSensitive: 대소문자 구분
  • Insensitive Contains: 대소문자 구분 없음

in

  • 특정 dimension이 지정한 리스트에 속해있는 데이터 추출
{
    "type": "in",
    "dimension": "dimension",
    "values": ["value1", "value2", "value3"]
}

like

  • wildcard 검색 방식
  • 일반적인 SQL의 like 문과 동일하게 볼 수 있음
{
    "type": "like",
    "dimension": "dimension",
    "pattern": "t%"
}

bound

  • dimension을 특정값 범위 내에서 필터링
{
    "type": "bound",
    "dimension": "dimension",
    "lower": "less than",
    "upper": "greater than",
    "ordering": "범위를 지정할 때 값을 정렬하는 방법"
}

interval

  • 시간단위 column에 대해 범위 지정
{
    "type" : "interval",
    "dimension" : "__time",
    "intervals" : [
      "2014-10-01T00:00:00.000Z/2014-10-07T00:00:00.000Z",
    ]
}

extraction function

  • input value를 변환시켜 filter 조건 적용
  • spatial을 제외한 모든 쿼리 방식에 적용 가능

lookup 예시

{
    "filter": {
        "type": "selector",
        "dimension": "channel",
        "value": "bar",
        "extractionFn": {
            "type": "lookup",
            "lookup": {
                "type": "map",
                "map": {
                    "foo": "bar"
                }
            }
        }
    } 
}
  • 위 예시에서 channel dimension에 대해 foo 에 해당하는 값을 bar 로 변환시키고 해당 값에 대해 selector filter가 적용된다.
728x90
반응형

'Storage > Druid' 카테고리의 다른 글

apache druid  (0) 2022.08.07
druid 구성 요소  (0) 2022.07.28
druid segment  (0) 2022.07.26
druid 구조  (0) 2022.07.26
Druid Native Queries  (0) 2022.07.14
Comments