정렬
정렬 (topN)
Druid topN 쿼리에서 결과를 정렬하는 기준을 지정하는 TopNMetricSpec을 소개해요. 숫자 기준, 차원 값 기준, 역순 정렬 등 세 가지 유형이 있어요.
출처: 문서
본문
Apache Druid는 Druid SQL과 native 쿼리 두 가지 쿼리 언어를 지원해요. 이 문서는 native 언어를 설명해요. SQL에서의 정렬에 대한 내용은 SQL 문서를 참고해요.
Apache Druid에서 topN metric spec은 topN 값들을 어떻게 정렬할지를 지정해요.
숫자 TopNMetricSpec
가장 단순한 metric specification은 topN 결과를 정렬할 metric을 가리키는 String 값이에요. topN 쿼리에 다음과 같이 포함돼요:
"metric": "<metric_name>"
metric 필드는 JSON 객체로도 지정할 수 있어요. 숫자 값으로 정렬되는 차원 값의 문법은 아래와 같아요:
"metric": { "type": "numeric", "metric": "<metric_name>"}
| property | description | required? | | type | 숫자 정렬을 의미해요 | yes | | metric | 결과가 정렬될 실제 metric 필드예요 | yes |
차원 TopNMetricSpec
이 metric specification은 여기서 설명하는 정렬 순서 중 하나를 사용해서 TopN 결과를 차원 값으로 정렬해요: Sorting Orders
| property | type | description | required? | | type | String | 차원의 값을 정렬한다는 것을 의미해요 | yes, 'dimension'이어야 해요 | | ordering | String | 정렬 순서를 지정해요. "lexicographic", "alphanumeric", "numeric", "strlen" 중 하나가 될 수 있어요. 자세한 내용은 Sorting Orders 문서를 참고해요 | no, 기본값: "lexicographic" | | previousStop | String | 정렬의 시작점이에요. 예를 들어 previousStop 값이 'b'면 'b'보다 앞선 모든 값은 버려져요. 이 필드는 모든 차원 값을 페이지네이션하는 데 사용할 수 있어요 | no |
다음 metricSpec은 사전순(lexicographic) 정렬을 사용해요.
"metric": { "type": "dimension", "ordering": "lexicographic", "previousStop": "<previousStop_value>"}
참고로, 더 이른 버전의 Druid에서는 DimensionTopNMetricSpec이 제공하는 기능이 Lexicographic과 Alphanumeric이라는 두 개의 별도 spec 타입(두 개의 정렬 순서만 지원할 때)으로 처리됐어요. 이 spec 타입들은 deprecated 됐지만 여전히 사용할 수 있어요.
역순(Inverted) TopNMetricSpec
차원 값을 역순으로 정렬해요. 즉 delegate metric spec의 순서를 뒤집어요. 값을 오름차순으로 정렬할 때 사용할 수 있어요.
"metric": { "type": "inverted", "metric": <delegate_top_n_metric_spec>}
| property | description | required? | | type | 역순 정렬을 의미해요 | yes | | metric | delegate metric spec이에요 | yes |
더 알아보기 (Learn more)
- TopN 쿼리 — topN 쿼리 전체 구조 살펴보기
- Sorting Orders — 정렬 순서 유형 자세히 보기
- Druid SQL 정렬 — SQL에서 ORDER BY 사용하기