druid-docs-cn/querying/spatialfilter.md

2.6 KiB
Raw Blame History

空间过滤器(Spatial Filters)

[!WARNING] Apache Druid支持两种查询语言 Druid SQL原生查询。该文档描述的功能仅仅在原生查询中可用。

Apache Druid支持基于原点和边界过滤特殊的空间索引列。

空间索引

在任意的数据spec中有一种可以提供空间维度的选项。例如在JSON数据中空间维度可以如下描述

{
    "type": "hadoop",
    "dataSchema": {
        "dataSource": "DatasourceName",
        "parser": {
            "type": "string",
            "parseSpec": {
                "format": "json",
                "timestampSpec": {
                    "column": "timestamp",
                    "format": "auto"
                },
                "dimensionsSpec": {
                    "dimensions": [],
                    "spatialDimensions": [{
                        "dimName": "coordinates",
                        "dims": ["lat", "long"]
                    }]
                }
            }
        }
    }
}

空间过滤器

属性 描述 是否必须
dimName 空间维度的名称。一个空间维度可以从多个其他维度构建,或者它可能已经作为一个事件的一部分存在。如果空间维度已经存在,则它必须是一个坐标值数组。
dims 构成空间维度的维度名称列表。

空间过滤器的语法如下:

"filter" : {
    "type": "spatial",
    "dimension": "spatialDim",
    "bound": {
        "type": "rectangular",
        "minCoords": [10.0, 20.0],
        "maxCoords": [30.0, 40.0]
    }
}

边界类型(Bound Types)

rectangular

属性 描述 是否必须
minCoords 对于坐标[x, y, z, …]的最小维度坐标
maxCoords 对于坐标[x, y, z, …]的最大维度坐标

radius

属性 描述 是否必须
coords 对于坐标 [x, y, z, …]的起始坐标值
radius 浮点型弧度值

polygon

属性 描述 是否必须
abscissa 多边形角点的水平坐标
ordinate 多边形角点的垂直坐标