content/flux/v0/stdlib/experimental/quantile.md
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.
experimental.quantile() behaves like an aggregate function or a
selector function depending on the method parameter.
The following computation methods are available:
An aggregate method that uses a t-digest data structure
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.
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.
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.
(
<-tables: stream[{A with _value: float}],
q: float,
?compression: float,
?method: string,
) => stream[{A with _value: float}]
{{% caption %}} For more information, see Function type signatures. {{% /caption %}}
({{< req >}})
Quantile to compute ([0 - 1]).
Computation method. Default is estimate_tdigest.
Supported methods:
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.
Input data. Default is piped-forward data (<-).
import "experimental"
import "sampledata"
sampledata.float()
|> experimental.quantile(q: 0.5)
{{< expand-wrapper >}} {{% expand "View example input and output" %}}
| _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 |
| *tag | _value |
|---|---|
| t1 | 9.135 |
| *tag | _value |
|---|---|
| t2 | 9.415 |
{{% /expand %}} {{< /expand-wrapper >}}
import "experimental"
import "sampledata"
sampledata.float()
|> experimental.quantile(q: 0.5, method: "exact_selector")
{{< expand-wrapper >}} {{% expand "View example input and output" %}}
| _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 |
| _time | *tag | _value |
|---|---|---|
| 2021-01-01T00:00:20Z | t1 | 7.35 |
| _time | *tag | _value |
|---|---|---|
| 2021-01-01T00:00:10Z | t2 | 4.97 |
{{% /expand %}} {{< /expand-wrapper >}}