druid-docs-cn/querying/topnsorting.md

2.6 KiB
Raw Blame History

排序(TopN)

[!WARNING] Apache Druid支持两种查询语言 Druid SQL原生查询。该文档描述了原生查询中的一种查询方式。 对于Druid SQL中使用的该种类型的信息可以参考 SQL文档

在Apache Druid中TopN metric spec来标明topN的值如何被排序

数值型TopNMetricSpec

最简单的metric spec是使用一个字符串值来标识topN的结果如何排序它们被包含在一个topN查询中

"metric": "<metric_name>"

metric字段也可以通过JSON对象来指定。 数值型维度值排序的语法如下:

"metric": {
    "type": "numeric",
    "metric": "<metric_name>"
}
属性 描述 是否必须
type 表示数值型排序, 总是 numeric
metric 实际中用来排序的字段

维度型TopNMetricSpec

该类型的metric spec使用维度值来排序TopN的结果使用排序顺序中列出来的排序。

属性 类型 描述 是否必须
type String 标识一个维度值排序 是,必须为dimension
ordering String 指定一个排序顺序, 可能的值为:lexicographic, alphanumeric, numeric, strlen 否,默认为lexicographic
previousStop String 排序的起始点例如如果该值设置为b则b之前的所有值都被丢弃掉。 该值可以被用来对所有维度值进行分页

使用lexicographic排序的语法如下:

"metric": {
    "type": "dimension",
    "ordering": "lexicographic",
    "previousStop": "<previousStop_value>"
}

注意在早期版本的Druid中DimensionTopNMetricSpec提供的功能由两种不同的spec类型处理即Lexicographic和Alphanumeric当只支持两种排序顺序时。这些规范类型已被弃用但仍然可用。

倒排型TopNMetricSpec

以倒排的方式排序维度值, 可以被用来以升序来排列值

"metric": {
    "type": "inverted",
    "metric": <delegate_top_n_metric_spec>
}
属性 描述 是否必须
type 表示数值型排序, 总是 inverted
metric 实际中用来排序的字段