공간 필터(Spatial filters)
공간 필터(Spatial filters)
Apache Druid는 Druid SQL과 네이티브 쿼리 두 가지 쿼리 언어를 지원해요. 이 문서는 네이티브 언어에서만 사용할 수 있는 기능을 설명합니다. Apache Druid는 원점(origin)과 범위(bound)를 기준으로 공간 인덱싱된(spatially indexed) 컬럼을 필터링하는 것을 지원해요.
출처: 문서
본문
Apache Druid는 Druid SQL과 네이티브 쿼리 두 가지 쿼리 언어를 지원합니다. 이 문서는 네이티브 언어에서만 사용할 수 있는 기능을 설명해요. Apache Druid는 원점과 범위를 기준으로 공간 인덱싱된 컬럼을 필터링하는 것을 지원합니다. 이 주제에서는 공간 필터를 수집하고 쿼리하는 방법을 설명해요. Druid가 지원하는 다른 필터에 대한 정보는 Query filters 문서를 참고하세요.
공간 인덱싱
공간 인덱싱은 geometry나 geography 같은 공간 데이터 타입의 데이터를 Druid로 수집하는 것을 의미합니다. 공간 차원(spatial dimensions)은 쉼표로 구분된 좌표를 포함하는 문자열 컬럼이에요. 수집 스펙에서 공간 차원은 dataSchema 컴포넌트의 dimensionsSpec 객체에 구성합니다. Druid가 지원하는 어떤 데이터 형식에서든 공간 차원을 제공할 수 있어요.
다음 예시는 입력 필드 x와 y에서 구성된 coordinates라는 공간 차원을 가진 차원 스펙을 보여줍니다:
{
"dimensions": [
{
"type": "double",
"name": "x"
},
{
"type": "double",
"name": "y"
}
],
"spatialDimensions": [
{
"dimName": "coordinates",
"dims": [
"x",
"y"
]
}
]
}
spatialDimensions 배열의 각 공간 차원 객체는 다음 필드로 정의됩니다:
| Property | Description | Required |
|---|---|---|
dimName |
공간 차원의 이름. 다른 차원으로부터 공간 차원을 구성하거나, 이벤트의 일부로 이미 존재할 수 있어요. 공간 차원이 이미 존재한다면 좌표 값의 배열이어야 합니다. | yes |
dims |
공간 차원을 구성하는 차원 이름 목록. | no |
수집 스펙을 사용해 수집을 구성하는 방법은 Ingestion spec reference 문서를 참고하세요. Druid에서 데이터 로딩에 대한 일반적인 정보는 Ingestion 문서를 참고하세요.
공간 필터
필터는 쿼리의 계산에 포함되어야 할 데이터 행을 나타내는 JSON 객체입니다. 공간 필터를 사용해 사각형(rectangles)과 다각형(polygons) 같은 공간 구조로 필터링할 수 있어요. 공간 필터의 구조는 다음과 같습니다:
"filter": {
"type": "spatial",
"dimension": <name_of_spatial_dimension>,
"bound": <bound_type>
}
다음 예시는 사각형 범위 타입의 공간 필터를 보여줍니다:
"filter" : {
"type": "spatial",
"dimension": "spatialDim",
"bound": {
"type": "rectangular",
"minCoords": [10.0, 20.0],
"maxCoords": [30.0, 40.0]
}
공간 필터의 차원 좌표 순서는 spatialDimensions 배열의 차원 좌표 순서와 같아야 합니다.
범위 타입
공간 필터 객체의 bound 속성을 사용해 차원 값의 범위로 필터링할 수 있어요. 사각형(rectangular), 반지름(radius), 다각형(polygon) 필터 범위를 정의할 수 있습니다.
사각형(Rectangular)
rectangular 범위는 다음 요소를 가집니다:
| Property | Description | Required |
|---|---|---|
minCoords |
[x, y] 형태의 최소 차원 좌표 목록 | yes |
maxCoords |
[x, y] 형태의 최대 차원 좌표 목록 | yes |
반지름(Radius)
radius 범위는 다음 요소를 가집니다:
| Property | Description | Required |
|---|---|---|
coords |
[x, y] 형태의 중심 좌표 | yes |
radius |
지정된 단위에 따른 float 반지름 값 | yes |
radiusUnit |
소문자의 반지름 단위 문자열 값, 기본값은 'euclidean'. 허용 단위는 euclidean, meters, miles, kilometers. | no |
다각형(Polygon)
polygon 범위는 다음 요소를 가집니다:
| Property | Description | Required |
|---|---|---|
abscissa |
다각형 모서리의 가로 좌표 | yes |
ordinate |
다각형 모서리의 세로 좌표 | yes |
더 알아보기 (Learn more)
- Query filters: Druid가 지원하는 다른 필터 종류.
- Ingestion: Druid 데이터 로딩 일반 개요.