Implementing custom sorting
In this recipe, you will learn how to sort the result set of a query by your custom criteria.Use case
While data APIs provide built-in ways to sort the result set by dimensions and measures in ascending or descending order, sometimes you may need more flexibility. For example, if a measure or a dimension containsNULL values, they will always
appear last last when sorting in the ascending order. This recipe shows how to
work around this behavior for all data APIs.
Currently, the SQL API does not support
ORDER BY ... NULLS FIRST/LAST.
Please track this issue.Data modeling
Consider the following data model:value dimension contains NULL values while the
value_for_sorting dimension never has NULL values. It means that sorting by
the latter dimension will always strictly follow the ascending or descending
order.
Moreover, note that this additional dimension that acts as a sorting key may
reference more than one other dimension, allowing to move your complex sorting
logic from the querying layer to your data model.
Query
Let’s query thevalue dimension and sort the result set by that dimension in
the ascending order:
| value |
|---|
| 1234 |
| 5678 |
NULL |
value dimension but sort the result set by the
value_for_sorting dimension in the ascending order:
| value | value_for_sorting |
|---|---|
NULL | 0 |
| 1234 | 1234 |
| 5678 | 5678 |
NULL values of the value dimension appear first in the
result set.