Sorting and limiting (groupBy)

Apache Druid supports two query languages: Druid SQL and native queries. This document describes the native language. For information about sorting in SQL, refer to the SQL documentation.

The limitSpec field provides the functionality to sort and limit the set of results from a groupBy query. If you group by a single dimension and are ordering by a single metric, we highly recommend using TopN Queries instead. The performance will be substantially better. Available options are:

DefaultLimitSpec

The default limit spec takes a limit and the list of columns to do an orderBy operation over. The grammar is:

  1. {
  2. "type" : "default",
  3. "limit" : <integer_value>,
  4. "columns" : [list of OrderByColumnSpec],
  5. }

OrderByColumnSpec

OrderByColumnSpecs indicate how to do order by operations. Each order-by condition can be a jsonString or a map of the following form:

  1. {
  2. "dimension" : "<Any dimension or metric name>",
  3. "direction" : <"ascending"|"descending">,
  4. "dimensionOrder" : <"lexicographic"(default)|"alphanumeric"|"strlen"|"numeric">
  5. }

If only the dimension is provided (as a JSON string), the default order-by is ascending with lexicographic sorting.

See Sorting Orders for more information on the sorting orders specified by “dimensionOrder”.