3.6 KiB
title | seotitle | list_title | description | weight | menu | list_query_example | canonical | v2 | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |
|
first_last | /{{< latest "influxdb" "v2" >}}/query-data/flux/first-last/ | /influxdb/v2.0/query-data/flux/first-last/ |
Use the [first()
](/{{< latest "flux" >}}/stdlib/universe/first/) or
[last()
](/{{< latest "flux" >}}/stdlib/universe/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 "flux" >}}/stdlib/universe/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 "flux" >}}/stdlib/universe/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 >}} |