Skip to content

Commit 4ef1170

Browse files
authored
Merge pull request prometheus#15422 from NeerajGartia21/promql-corrections
[BUGFIX] PromQL: Fix `count_values` for histograms
2 parents 9c02c26 + 0482228 commit 4ef1170

File tree

2 files changed

+17
-7
lines changed

2 files changed

+17
-7
lines changed

promql/engine.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3335,7 +3335,11 @@ func (ev *evaluator) aggregationCountValues(e *parser.AggregateExpr, grouping []
33353335
var buf []byte
33363336
for _, s := range vec {
33373337
enh.resetBuilder(s.Metric)
3338-
enh.lb.Set(valueLabel, strconv.FormatFloat(s.F, 'f', -1, 64))
3338+
if s.H == nil {
3339+
enh.lb.Set(valueLabel, strconv.FormatFloat(s.F, 'f', -1, 64))
3340+
} else {
3341+
enh.lb.Set(valueLabel, s.H.String())
3342+
}
33393343
metric := enh.lb.Labels()
33403344

33413345
// Considering the count_values()

promql/promqltest/testdata/aggregators.test

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -351,37 +351,41 @@ load 5m
351351
version{job="app-server", instance="1", group="production"} 6
352352
version{job="app-server", instance="0", group="canary"} 7
353353
version{job="app-server", instance="1", group="canary"} 7
354+
version{job="app-server", instance="2", group="canary"} {{schema:0 sum:10 count:20 z_bucket_w:0.001 z_bucket:2 buckets:[1 2] n_buckets:[1 2]}}
355+
version{job="app-server", instance="3", group="canary"} {{schema:0 sum:10 count:20 z_bucket_w:0.001 z_bucket:2 buckets:[1 2] n_buckets:[1 2]}}
354356

355357
eval instant at 1m count_values("version", version)
356358
{version="6"} 5
357359
{version="7"} 2
358360
{version="8"} 2
359-
361+
{version="{count:20, sum:10, [-2,-1):2, [-1,-0.5):1, [-0.001,0.001]:2, (0.5,1]:1, (1,2]:2}"} 2
360362

361363
eval instant at 1m count_values(((("version"))), version)
362-
{version="6"} 5
363-
{version="7"} 2
364-
{version="8"} 2
365-
364+
{version="6"} 5
365+
{version="7"} 2
366+
{version="8"} 2
367+
{version="{count:20, sum:10, [-2,-1):2, [-1,-0.5):1, [-0.001,0.001]:2, (0.5,1]:1, (1,2]:2}"} 2
366368

367369
eval instant at 1m count_values without (instance)("version", version)
368370
{job="api-server", group="production", version="6"} 3
369371
{job="api-server", group="canary", version="8"} 2
370372
{job="app-server", group="production", version="6"} 2
371373
{job="app-server", group="canary", version="7"} 2
374+
{job="app-server", group="canary", version="{count:20, sum:10, [-2,-1):2, [-1,-0.5):1, [-0.001,0.001]:2, (0.5,1]:1, (1,2]:2}"} 2
372375

373376
# Overwrite label with output. Don't do this.
374377
eval instant at 1m count_values without (instance)("job", version)
375378
{job="6", group="production"} 5
376379
{job="8", group="canary"} 2
377380
{job="7", group="canary"} 2
381+
{job="{count:20, sum:10, [-2,-1):2, [-1,-0.5):1, [-0.001,0.001]:2, (0.5,1]:1, (1,2]:2}", group="canary"} 2
378382

379383
# Overwrite label with output. Don't do this.
380384
eval instant at 1m count_values by (job, group)("job", version)
381385
{job="6", group="production"} 5
382386
{job="8", group="canary"} 2
383387
{job="7", group="canary"} 2
384-
388+
{job="{count:20, sum:10, [-2,-1):2, [-1,-0.5):1, [-0.001,0.001]:2, (0.5,1]:1, (1,2]:2}", group="canary"} 2
385389

386390
# Tests for quantile.
387391
clear
@@ -441,12 +445,14 @@ load 10s
441445
data{test="uneven samples",point="a"} 0
442446
data{test="uneven samples",point="b"} 1
443447
data{test="uneven samples",point="c"} 4
448+
data{test="histogram sample",point="c"} {{schema:0 sum:0 count:0}}
444449
foo .8
445450

446451
eval instant at 1m group without(point)(data)
447452
{test="two samples"} 1
448453
{test="three samples"} 1
449454
{test="uneven samples"} 1
455+
{test="histogram sample"} 1
450456

451457
eval instant at 1m group(foo)
452458
{} 1

0 commit comments

Comments
 (0)