Skip to content

with_bounds()

Add bounds to a counter aggregate

Since 1.3.0

Add time bounds to an already-computed counter aggregate. Bounds are necessary to use extrapolation accessors on the aggregate.

Create a counter aggregate for each id and each 15-minute interval. Then add bounds to the counter aggregate, so you can calculate the extrapolated rate.

SELECT
id,
bucket,
extrapolated_rate(
with_bounds(
summary,
time_bucket_range('15 min'::interval, bucket)
),
'prometheus'
)
FROM (
SELECT
id,
time_bucket('15 min'::interval, ts) AS bucket,
counter_agg(ts, val) AS summary
FROM foo
GROUP BY id, time_bucket('15 min'::interval, ts)
) t

The syntax is:

with_bounds(
summary CounterSummary,
bounds TSTZRANGE,
) RETURNS CounterSummary
NameTypeDefaultRequiredDescription
summaryCounterSummary-A counter aggregate created using counter_agg
boundsTSTZRANGE-A range of timestamptz giving the smallest and largest allowed times in the counter aggregate
ColumnTypeDescription
with_boundsCounterSummaryA new counter aggregate with the bounds applied