diff --git a/docs/querying/operators.md b/docs/querying/operators.md index 714b41b3c3..9f35e0c153 100644 --- a/docs/querying/operators.md +++ b/docs/querying/operators.md @@ -241,7 +241,7 @@ vector. `by` and `without` are only used to bucket the input vector. `quantile` calculates the φ-quantile, the value that ranks at number φ*N among the N metric values of the dimensions aggregated over. φ is provided as the aggregation parameter. For example, `quantile(0.5, ...)` calculates the median, -`quantile(0.95, ...)` the 95th percentile. For φ = `NaN`, `NaN` is returned. +`quantile(0.95, ...)` the 95th percentile. For φ = `NaN`, `NaN` is returned. For φ < 0, `-Inf` is returned. For φ > 1, `+Inf` is returned. Example: diff --git a/promql/quantile.go b/promql/quantile.go index 26dcf81d2c..a3abf68dd0 100644 --- a/promql/quantile.go +++ b/promql/quantile.go @@ -186,7 +186,7 @@ func ensureMonotonic(buckets buckets) { // quantile calculates the given quantile of a vector of samples. // // The Vector will be sorted. -// If 'values' has zero elements +// If 'values' has zero elements, NaN is returned. // If q==NaN, NaN is returned. // If q<0, -Inf is returned. // If q>1, +Inf is returned. diff --git a/promql/testdata/aggregators.test b/promql/testdata/aggregators.test index 220c5edce1..8709b393b2 100644 --- a/promql/testdata/aggregators.test +++ b/promql/testdata/aggregators.test @@ -399,6 +399,11 @@ eval instant at 1m quantile without(point)((scalar(foo)), data) {test="three samples"} 1.6 {test="uneven samples"} 2.8 +eval instant at 1m quantile without(point)(NaN, data) + {test="two samples"} NaN + {test="three samples"} NaN + {test="uneven samples"} NaN + # Tests for group. clear