docs-v2/content/influxdb/v1.7/flux/guides/first-last.md

3.7 KiB

title seotitle list_title description weight menu list_query_example
Query first and last values Query first and last values in Flux First and last Use the `first()` or `last()` functions to return the first or last point in an input table. 10
influxdb_1_7
parent name
Query with Flux First & last
first_last

Use the [first()](/{{< latest "influxdb" "v2" >}}/reference/flux/stdlib/built-in/transformations/selectors/first/) or [last()](/{{< latest "influxdb" "v2" >}}/reference/flux/stdlib/built-in/transformations/selectors/last/) functions to return the first or last record in an input table.

data
  |> first()

// OR

data
  |> last()

{{% note %}} By default, InfluxDB returns results sorted by time, however you can use the [sort() function](/{{< latest "influxdb" "v2" >}}/reference/flux/stdlib/built-in/transformations/sort/) to change how results are sorted. first() and last() respect the sort order of input data and return records based on the order they are received in. {{% /note %}}

first

first() returns the first non-null record in an input table.

{{< flex >}} {{% flex-content %}} Given the following input:

_time _value
2020-01-01T00:01:00Z 1.0
2020-01-01T00:02:00Z 1.0
2020-01-01T00:03:00Z 2.0
2020-01-01T00:04:00Z 3.0
{{% /flex-content %}}
{{% flex-content %}}
The following function returns:
|> first()
_time _value
2020-01-01T00:01:00Z 1.0
{{% /flex-content %}}
{{< /flex >}}

last

last() returns the last non-null record in an input table.

{{< flex >}} {{% flex-content %}} Given the following input:

_time _value
2020-01-01T00:01:00Z 1.0
2020-01-01T00:02:00Z 1.0
2020-01-01T00:03:00Z 2.0
2020-01-01T00:04:00Z 3.0
{{% /flex-content %}}
{{% flex-content %}}
The following function returns:
|> last()
_time _value
2020-01-01T00:04:00Z 3.0
{{% /flex-content %}}
{{< /flex >}}

Use first() or last() with aggregateWindow()

Use first() and last() with [aggregateWindow()](/{{< latest "influxdb" "v2" >}}/reference/flux/stdlib/built-in/transformations/aggregates/aggregatewindow/) to select the first or last records in time-based groups. aggregateWindow() segments data into windows of time, aggregates data in each window into a single point using aggregate or selector functions, and then removes the time-based segmentation.

{{< flex >}} {{% flex-content %}} Given the following input:

_time _value
2020-01-01T00:00:00Z 10
2020-01-01T00:00:15Z 12
2020-01-01T00:00:45Z 9
2020-01-01T00:01:05Z 9
2020-01-01T00:01:10Z 15
2020-01-01T00:02:30Z 11
{{% /flex-content %}}

{{% flex-content %}} The following function returns: {{< code-tabs-wrapper >}} {{% code-tabs %}} first last {{% /code-tabs %}} {{% code-tab-content %}}

|> aggregateWindow(
  every: 1h,
  fn: first
)
_time _value
2020-01-01T00:00:59Z 10
2020-01-01T00:01:59Z 9
2020-01-01T00:02:59Z 11
{{% /code-tab-content %}}
{{% code-tab-content %}}
|> aggregateWindow(
  every: 1h,
  fn: last
)
_time _value
2020-01-01T00:00:59Z 9
2020-01-01T00:01:59Z 15
2020-01-01T00:02:59Z 11
{{% /code-tab-content %}}
{{< /code-tabs-wrapper >}}
{{%/flex-content %}}
{{< /flex >}}