sort operator in APL arranges the rows of a result set based on one or more fields in ascending or descending order. You can use it to organize your data logically or optimize subsequent operations that depend on ordered data. This operator is useful when analyzing logs, traces, or any dataset where the order of results matters, such as when you’re interested in top or bottom performers, chronological sequences, or sorting by status codes.
For users of other query languages
If you come from other query languages, this section explains how to adjust your existing queries to achieve the same results in APL.Splunk SPL users
Splunk SPL users
In Splunk SPL, the equivalent of 
sort is the sort command, which orders search results based on one or more fields. However, in APL, you must explicitly specify the sorting direction for each field, and sorting by multiple fields requires chaining them with commas.ANSI SQL users
ANSI SQL users
In SQL, sorting is done using the 
ORDER BY clause. The APL sort operator behaves similarly but uses the by keyword instead of ORDER BY. Additionally, APL requires specifying the order direction (asc or desc) explicitly for each field.Usage
Syntax
Parameters
Field1,Field2, …: The fields to sort by.- [asc | desc]: Specify the sorting direction for each field as either 
ascfor ascending order ordescfor descending order. 
Returns
A table with rows ordered based on the specified fields.Use sort and project together
When you useproject and sort in the same query, ensure you project the fields that you want to sort on. Similarly, when you use project-away and sort in the same query, ensure you don’t remove the fields that you want to sort on.
The above is also true for time fields. For example, to project the field status and sort on the field _time, project both fields similarly to the query below:
Use case examples
- Log analysis
 - OpenTelemetry traces
 - Security logs
 
Sorting HTTP logs by request duration and then by status code is useful to identify slow requests and their corresponding statuses.QueryRun in PlaygroundOutput
The query sorts the HTTP logs by the duration of each request in descending order, showing the longest-running requests at the top. If two requests have the same duration, they are sorted by status code in ascending order.
| _time | req_duration_ms | id | status | uri | method | geo.city | geo.country | 
|---|---|---|---|---|---|---|---|
| 2024-10-18 12:34:56 | 5000 | abc1 | 500 | /api/data | GET | New York | US | 
| 2024-10-18 12:35:56 | 4500 | abc2 | 200 | /api/users | POST | London | UK | 
List of related operators
- top: Use 
topto return a specified number of rows with the highest or lowest values, but unlikesort,toplimits the result set. - project: Use 
projectto select and reorder fields without changing the order of rows. - extend: Use 
extendto create calculated fields that can then be used in conjunction withsortto refine your results. - summarize: Use 
summarizeto group and aggregate data before applyingsortfor detailed analysis.