Sort and limit data with Flux

This page documents an earlier version of InfluxDB. InfluxDB v2.7 is the latest stable version. View this page in the v2.7 documentation.

Use sort() to order records within each table by specific columns and limit() to limit the number of records in output tables to a fixed number, n.

If you’re just getting started with Flux queries, check out the following:

Example sorting system uptime

The following example orders system uptime first by region, then host, then value.

  1. from(bucket: "example-bucket")
  2. |> range(start: -12h)
  3. |> filter(fn: (r) => r._measurement == "system" and r._field == "uptime")
  4. |> sort(columns: ["region", "host", "_value"])

The limit() function limits the number of records in output tables to a fixed number, n. The following example shows up to 10 records from the past hour.

  1. from(bucket:"example-bucket")
  2. |> range(start:-1h)
  3. |> limit(n:10)

You can use sort() and limit() together to show the top N records. The example below returns the 10 top system uptime values sorted first by region, then host, then value.

  1. from(bucket: "example-bucket")
  2. |> range(start: -12h)
  3. |> filter(fn: (r) => r._measurement == "system" and r._field == "uptime")
  4. |> sort(columns: ["region", "host", "_value"])
  5. |> limit(n: 10)

You now have created a Flux query that sorts and limits data. Flux also provides the top() and bottom() functions to perform both of these functions at the same time.

Tail

Use tail() to limit the number of records in each output table to the last n rows.

Return the last 100 rows from each input table
  1. from(bucket: "example-bucket")
  2. |> range(start: -12h)
  3. |> tail(n: 100)

For additional examples, please see tail() examples.

sort limit