docs-v2/content/enterprise_influxdb/v1.9/flux/guides/median.md

4.2 KiB

title seotitle list_title description weight menu list_query_example canonical v2
Find median values Find median values in Flux Median Use the `median()` function to return a value representing the `0.5` quantile (50th percentile) or median of input data. 10
enterprise_influxdb_1_9
parent name
Query with Flux Median
median /{{< latest "influxdb" "v2" >}}/query-data/flux/median/ /influxdb/v2.0/query-data/flux/median/

Use the [median() function](/{{< latest "flux" >}}/stdlib/universe/median/) to return a value representing the 0.5 quantile (50th percentile) or median of input data.

Select a method for calculating the median

Select one of the following methods to calculate the median:

estimate_tdigest

(Default) An aggregate method that uses a t-digest data structure to compute an accurate 0.5 quantile estimate on large data sources. Output tables consist of a single row containing the calculated median.

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

_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 %}}
estimate_tdigest returns:
_value
1.5
{{% /flex-content %}}
{{< /flex >}}

exact_mean

An aggregate method that takes the average of the two points closest to the 0.5 quantile value. Output tables consist of a single row containing the calculated median.

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

_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 %}}
exact_mean returns:
_value
1.5
{{% /flex-content %}}
{{< /flex >}}

exact_selector

A selector method that returns the data point for which at least 50% of points are less than. Output tables consist of a single row containing the calculated median.

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

_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 %}}
exact_selector returns:
_time _value
2020-01-01T00:02:00Z 1.0
{{% /flex-content %}}
{{< /flex >}}

{{% note %}} The examples below use the example data variable. {{% /note %}}

Find the value that represents the median

Use the default method, "estimate_tdigest", to return all rows in a table that contain values in the 50th percentile of data in the table.

data
    |> median()

Find the average of values closest to the median

Use the exact_mean method to return a single row per input table containing the average of the two values closest to the mathematical median of data in the table.

data
    |> median(method: "exact_mean")

Find the point with the median value

Use the exact_selector method to return a single row per input table containing the value that 50% of values in the table are less than.

data
    |> median(method: "exact_selector")

Use median() with aggregateWindow()

[aggregateWindow()](/{{< latest "flux" >}}/stdlib/universe/aggregatewindow/) segments data into windows of time, aggregates data in each window into a single point, and then removes the time-based segmentation. It is primarily used to downsample data.

To specify the median calculation method in aggregateWindow(), use the [full function syntax](/{{< latest "flux" >}}/stdlib/universe/aggregatewindow/#specify-parameters-of-the-aggregate-function):

data
    |> aggregateWindow(every: 5m, fn: (tables=<-, column) => tables |> median(method: "exact_selector"))