---
title: experimental.quantile() function
description: experimental.quantile() returns non-null records with values in the _value column that fall within the specified quantile or represent the specified quantile.
url: https://docs.influxdata.com/flux/v0/stdlib/experimental/quantile/
estimated_tokens: 1602
product: Flux
version: v0
publisher: InfluxData
canonical: https://docs.influxdata.com/flux/v0/stdlib/experimental/quantile/
date: '2024-04-08T16:01:02-06:00'
lastmod: '2024-04-08T16:01:02-06:00'
---

* Flux 0.107.0+

InfluxDB support

> [!Important]
> `experimental.quantile()` is [subject to change at any time](/flux/v0/stdlib/experimental/#experimental-packages-are-subject-to-change).

`experimental.quantile()` returns non-null records with values in the `_value` column that
fall within the specified quantile or represent the specified quantile.

The `_value` column must contain float values.

## Computation methods and behavior

`experimental.quantile()` behaves like an **aggregate function** or a**selector function** depending on the `method` parameter.
The following computation methods are available:

##### estimate\_tdigest

An aggregate method that uses a [t-digest data structure](https://github.com/tdunning/t-digest)to compute an accurate quantile estimate on large data sources.
When used, `experimental.quantile()` outputs non-null records with values
that fall within the specified quantile.

##### exact\_mean

An aggregate method that takes the average of the two points closest to the quantile value.
When used, `experimental.quantile()` outputs non-null records with values
that fall within the specified quantile.

##### exact\_selector

A selector method that returns the data point for which at least `q` points are less than.
When used, `experimental.quantile()` outputs the non-null record with the
value that represents the specified quantile.

##### Function type signature

```js
(
    <-tables: stream[{A with _value: float}],
    q: float,
    ?compression: float,
    ?method: string,
) => stream[{A with _value: float}]
```

For more information, see [Function type signatures](/flux/v0/function-type-signatures/).

## Parameters

### q

(Required)
Quantile to compute (`[0 - 1]`).

### method

Computation method. Default is `estimate_tdigest`.

**Supported methods**:

* estimate\_tdigest
* exact\_mean
* exact\_selector

### compression

Number of centroids to use when compressing the dataset.
Default is `1000.0`.

A larger number produces a more accurate result at the cost of increased
memory requirements.

### tables

Input data. Default is piped-forward data (`<-`).

## Examples

* [Return values in the 50th percentile of each input table](#return-values-in-the-50th-percentile-of-each-input-table)
* [Return a value representing the 50th percentile of each input table](#return-a-value-representing-the-50th-percentile-of-each-input-table)

### Return values in the 50th percentile of each input table

```js
import "experimental"
import "sampledata"

sampledata.float()
    |> experimental.quantile(q: 0.5)
```

[](#view-example-input-and-output)

View example input and output

#### Input data

|       \_time       |\*tag|\_value|
|--------------------|-----|-------|
|2021-01-01T00:00:00Z| t1  |\-2.18 |
|2021-01-01T00:00:10Z| t1  | 10.92 |
|2021-01-01T00:00:20Z| t1  | 7.35  |
|2021-01-01T00:00:30Z| t1  | 17.53 |
|2021-01-01T00:00:40Z| t1  | 15.23 |
|2021-01-01T00:00:50Z| t1  | 4.43  |

|       \_time       |\*tag|\_value|
|--------------------|-----|-------|
|2021-01-01T00:00:00Z| t2  | 19.85 |
|2021-01-01T00:00:10Z| t2  | 4.97  |
|2021-01-01T00:00:20Z| t2  |\-3.75 |
|2021-01-01T00:00:30Z| t2  | 19.77 |
|2021-01-01T00:00:40Z| t2  | 13.86 |
|2021-01-01T00:00:50Z| t2  | 1.86  |

#### Output data

|\*tag|\_value|
|-----|-------|
| t1  | 9.135 |

|\*tag|\_value|
|-----|-------|
| t2  | 9.415 |

### Return a value representing the 50th percentile of each input table

```js
import "experimental"
import "sampledata"

sampledata.float()
    |> experimental.quantile(q: 0.5, method: "exact_selector")
```

[](#view-example-input-and-output)

View example input and output

#### Input data

|       \_time       |\*tag|\_value|
|--------------------|-----|-------|
|2021-01-01T00:00:00Z| t1  |\-2.18 |
|2021-01-01T00:00:10Z| t1  | 10.92 |
|2021-01-01T00:00:20Z| t1  | 7.35  |
|2021-01-01T00:00:30Z| t1  | 17.53 |
|2021-01-01T00:00:40Z| t1  | 15.23 |
|2021-01-01T00:00:50Z| t1  | 4.43  |

|       \_time       |\*tag|\_value|
|--------------------|-----|-------|
|2021-01-01T00:00:00Z| t2  | 19.85 |
|2021-01-01T00:00:10Z| t2  | 4.97  |
|2021-01-01T00:00:20Z| t2  |\-3.75 |
|2021-01-01T00:00:30Z| t2  | 19.77 |
|2021-01-01T00:00:40Z| t2  | 13.86 |
|2021-01-01T00:00:50Z| t2  | 1.86  |

#### Output data

|       \_time       |\*tag|\_value|
|--------------------|-----|-------|
|2021-01-01T00:00:20Z| t1  | 7.35  |

|       \_time       |\*tag|\_value|
|--------------------|-----|-------|
|2021-01-01T00:00:10Z| t2  | 4.97  |

#### Related

* [Find percentile and quantile values](/influxdb/v2/query-data/flux/percentile-quantile/)
* [quantile() function](/flux/v0/stdlib/universe/quantile/)
* [InfluxQL – PERCENTILE()](/influxdb/v1/query_language/functions/#percentile)

[transformations](/flux/v0/tags/transformations/)[aggregates](/flux/v0/tags/aggregates/)[selectors](/flux/v0/tags/selectors/)
| _time | *tag | _value |
| --- | --- | --- |
| _time | *tag | _value |
| 2021-01-01T00:00:00Z | t1 | -2.18 |
| 2021-01-01T00:00:10Z | t1 | 10.92 |
| 2021-01-01T00:00:20Z | t1 | 7.35 |
| 2021-01-01T00:00:30Z | t1 | 17.53 |
| 2021-01-01T00:00:40Z | t1 | 15.23 |
| 2021-01-01T00:00:50Z | t1 | 4.43 |

| _time | *tag | _value |
| --- | --- | --- |
| _time | *tag | _value |
| 2021-01-01T00:00:00Z | t2 | 19.85 |
| 2021-01-01T00:00:10Z | t2 | 4.97 |
| 2021-01-01T00:00:20Z | t2 | -3.75 |
| 2021-01-01T00:00:30Z | t2 | 19.77 |
| 2021-01-01T00:00:40Z | t2 | 13.86 |
| 2021-01-01T00:00:50Z | t2 | 1.86 |

| *tag | _value |
| --- | --- |
| *tag | _value |
| t1 | 9.135 |

| *tag | _value |
| --- | --- |
| *tag | _value |
| t2 | 9.415 |

| _time | *tag | _value |
| --- | --- | --- |
| _time | *tag | _value |
| 2021-01-01T00:00:00Z | t1 | -2.18 |
| 2021-01-01T00:00:10Z | t1 | 10.92 |
| 2021-01-01T00:00:20Z | t1 | 7.35 |
| 2021-01-01T00:00:30Z | t1 | 17.53 |
| 2021-01-01T00:00:40Z | t1 | 15.23 |
| 2021-01-01T00:00:50Z | t1 | 4.43 |

| _time | *tag | _value |
| --- | --- | --- |
| _time | *tag | _value |
| 2021-01-01T00:00:00Z | t2 | 19.85 |
| 2021-01-01T00:00:10Z | t2 | 4.97 |
| 2021-01-01T00:00:20Z | t2 | -3.75 |
| 2021-01-01T00:00:30Z | t2 | 19.77 |
| 2021-01-01T00:00:40Z | t2 | 13.86 |
| 2021-01-01T00:00:50Z | t2 | 1.86 |

| _time | *tag | _value |
| --- | --- | --- |
| _time | *tag | _value |
| 2021-01-01T00:00:20Z | t1 | 7.35 |

| _time | *tag | _value |
| --- | --- | --- |
| _time | *tag | _value |
| 2021-01-01T00:00:10Z | t2 | 4.97 |
