Ivan Babrou
a6b35ff304
promql: use natural sort in sort_by_label and sort_by_label_desc ( #13411 )
...
These functions are intended for humans, as robots can already sort the results
however they please. Humans like things sorted "naturally":
* https://blog.codinghorror.com/sorting-for-humans-natural-sort-order/
A similar thing has been done to Grafana, which is also used by humans:
* https://github.com/grafana/grafana/pull/78024
* https://github.com/grafana/grafana/pull/78494
Signed-off-by: Ivan Babrou <github@ivan.computer>
2024-01-16 21:34:09 -03:00
Jeanette Tan
2910b48180
Make mad_over_time experimental and move tests
...
Signed-off-by: Jeanette Tan <jeanette.tan@grafana.com>
2023-12-01 01:56:07 +08:00
Alexander Trost
5051a993ab
promql: add sort_by_label and sort_by_label_desc functions
...
This adds functions to sort a vector by its label value.
Based on https://github.com/prometheus/prometheus/pull/1533
Signed-off-by: Alexander Trost <galexrt@googlemail.com>
2023-11-28 14:40:07 +01:00
Ivo Gosemann
e22b54e253
Adds day_of_year function to PromQL
...
Signed-off-by: Ivo Gosemann <ivo.gosemann@sap.com>
2022-05-20 14:08:34 +02:00
Darshan Chaudhary
c4f2e9eec5
Add present_over_time ( #9097 )
...
* Add present_over_time
Signed-off-by: darshanime <deathbullet@gmail.com>
* Add tests for present_over_time
Signed-off-by: darshanime <deathbullet@gmail.com>
* Address PR comments
Signed-off-by: darshanime <deathbullet@gmail.com>
* Add documentation for present_over_time
Signed-off-by: darshanime <deathbullet@gmail.com>
* Update documentation
Signed-off-by: darshanime <deathbullet@gmail.com>
* Update documentation comment
Signed-off-by: darshanime <deathbullet@gmail.com>
2021-07-29 12:38:11 +02:00
pschou
aff3c702ab
promql: Add sgn, clamp and last_over_time functions ( #8457 )
...
* Add sgn, clamp and last_over_time functions
Signed-off-by: schou <pschou@users.noreply.github.com>
2021-02-20 16:34:52 +01:00
Ganesh Vernekar
9199fcb8d1
'@ <timestamp>' modifier ( #8121 )
...
This commit adds `@ <timestamp>` modifier as per this design doc: https://docs.google.com/document/d/1uSbD3T2beM-iX4-Hp7V074bzBRiRNlqUdcWP6JTDQSs/edit .
An example query:
```
rate(process_cpu_seconds_total[1m])
and
topk(7, rate(process_cpu_seconds_total[1h] @ 1234))
```
which ranks based on last 1h rate and w.r.t. unix timestamp 1234 but actually plots the 1m rate.
Signed-off-by: Ganesh Vernekar <cs15btech11018@iith.ac.in>
2021-01-20 16:27:39 +05:30
Ganesh Vernekar
d30da66d77
Fix timestamp() method for vector selector inside paren ( #8164 )
...
Signed-off-by: Ganesh Vernekar <cs15btech11018@iith.ac.in>
2020-11-09 18:21:50 +05:30
Harold Dost
bf7c771f54
promql: Organize legacy tests into appropriate files ( #7989 )
...
* Separate tests into:
** Aggregators
** Functions
** Operators
** Selectors
* Remove simple files and place tests into other files.
* Eliminate some of the _over_time tests since there are already plenty of
edge cases present in the functions.test file.
Relates to #740
Signed-off-by: Harold Dost <harolddost@gmail.com>
2020-10-07 10:09:20 +01:00
Julien Pivotto
d77b56e88e
Fix avg_over_time for nan and float64 overflows ( #7346 )
...
* Fix avg_over_time with Inf and NaN values
Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
2020-07-13 17:30:50 +02:00
Tobias Guggenmos
3a204be6b7
PromQL: Fix string and parentheses handling in engine ( #6612 )
...
* WIP: PromQL: Allow engine to return strings
Signed-off-by: Tobias Guggenmos <tguggenm@redhat.com>
* Add test suggested by @roidelapluie
Signed-off-by: Tobias Guggenmos <tguggenm@redhat.com>
* Fix typo in React UI
Signed-off-by: Tobias Guggenmos <tguggenm@redhat.com>
* Fix parenthesis handling for functions and aggregator params
Signed-off-by: Tobias Guggenmos <tguggenm@redhat.com>
* Add more tests
Signed-off-by: Tobias Guggenmos <tguggenm@redhat.com>
* Fix React UI test
Signed-off-by: Tobias Guggenmos <tguggenm@redhat.com>
2020-01-15 18:31:58 +01:00
Julien Pivotto
e0afec906f
add absent_over_time ( #6490 )
...
* Implement absent_over_time
Fixes #2882
Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
2020-01-03 15:26:12 +00:00
Ben Kochie
c6399296dc
Fix spelling/typos ( #4921 )
...
* Fix spelling/typos
Fix spelling/typos reported by codespell/misspell.
* UK -> US spelling changes.
Signed-off-by: Ben Kochie <superq@gmail.com>
2018-11-27 17:44:29 +01:00
Thomas Jackson
abf6fe0a98
Change max/min over_time to handle NaNs properly ( #4386 )
...
We only want to return a NaN if the NaN is the only value
Signed-off-by: Thomas Jackson <jacksontj.89@gmail.com>
Fixes #4385
2018-09-26 08:58:16 +01:00
Harsh Agarwal
18a9a390b5
Add duplicate-labelset check for range/instant vectors ( #4589 )
...
Signed-off-by: Harsh Agarwal <cs15btech11019@iith.ac.in>
2018-09-18 10:46:13 +01:00
Dan Cech
9f4cb06a37
use Welford/Knuth method to compute standard deviation and variance ( #4533 )
...
* use Welford/Knuth method to compute standard deviation and variance, avoids float precision issues
* use better method for calculating avg and avg_over_time
Signed-off-by: Dan Cech <dcech@grafana.com>
2018-08-26 10:28:47 +01:00
Krasi Georgiev
4801573b64
time() return milliseconds ( #3811 )
2018-02-08 11:39:13 +00:00
Fabian Reinartz
ca2b68889b
Merge branch 'master' into dev-2.0
2017-06-23 13:15:44 +02:00
Harsh Agarwal
16867c89a7
implement label_join issue 1147 ( #2806 )
...
Replace OptionalArgs int with Variadic int.
2017-06-16 14:51:22 +01:00
Brian Brazil
517b81f927
Add timestamp() function.
...
Make the timestamp of instant vectors be the timestamp of the sample
rather than the evaluation. We were not using this anywhere, so this is
safe.
Add a function to return the timestamp of samples in an instant vector.
Fixes #1557
2017-05-12 12:00:31 +01:00
Fabian Reinartz
ccbce0c51f
promql: handle NaN in changes() correctly
2016-09-30 11:04:25 +02:00
Matt Bostock
a0201036fa
PromQL: Add tests for time/date funcs with arg
...
Add tests for the date and time functions where an argument is
specified.
Suggested by @grobie:
https://github.com/prometheus/prometheus/pull/1984#issuecomment-246508286
`1136239445` is the reference time used by Go:
https://golang.org/src/time/format.go
2016-09-12 23:12:43 +01:00
Matt Bostock
9628eb5998
PromQL: Add minute() function
...
Returns the minutes from the current time in UTC. Related to the
`hour()` function.
Fixes #1983 .
2016-09-12 20:34:23 +01:00
Brian Brazil
4680daf237
Default date functions to current time.
2016-08-29 18:22:12 +01:00
Brian Brazil
ea1318f38b
Short names of some date related functions
2016-08-23 22:34:22 +01:00
Brian Brazil
d2ca2b496a
Add days_in_month function.
2016-08-22 21:15:35 +01:00
Brian Brazil
fd7822829c
Add date related functions.
...
Add day_of_month, day_of_week, hour_of_day, month_of_year and year.
This only work for UTC, and ignore leap seconds the same as Go.
2016-08-22 21:15:30 +01:00
Fabian Stäber
08b6556ee6
Assume counters start at zero after reset.
2016-08-12 20:21:04 +02:00
Frederic Branczyk
dbf83666bb
add idelta function
...
similar to the irate function the idelta function calculates the delta
function with the last two values
2016-08-08 10:40:50 +02:00
Frederic Branczyk
0ce5e7fe6d
move legacy test for delta function
2016-08-08 10:02:58 +02:00
Brian Brazil
0303ccc6a7
Add quantile aggregator.
2016-07-21 00:09:19 +01:00
Brian Brazil
b0342ba9ec
Add quantile_over_time function
2016-07-20 23:56:18 +01:00
Brian Brazil
1edd6875f5
Add stddev_over_time and stdvar_over_time.
2016-07-16 00:34:44 +01:00
Brian Brazil
3b0c182eee
Move topk/bottomk unittests over to aggregators.
2016-07-04 13:18:28 +01:00
eliothedeman
1543ef92b2
Adds holt-winters query function
2016-03-28 15:42:27 -04:00
beorn7
c740789ce3
Improve predict_linear
...
Fixes https://github.com/prometheus/prometheus/issues/1401
This remove the last (and in fact bogus) use of BoundaryValues.
Thus, a whole lot of unused (and arguably sub-optimal / ugly) code can
be removed here, too.
2016-02-25 12:10:55 +01:00
Brian Brazil
c77c3a8c56
promql: Limit extrapolation of delta/rate/increase
...
The new implementation detects the start and end of a series by
looking at the average sample interval within the range. If the first
(last) sample in the range is more than 1.1*interval distant from the
beginning (end) of the range, it is considered the first (last) sample
of the series as a whole, and extrapolation is limited to half the
interval (rather than all the way to the beginning (end) of the
range). In addition, if the extrapolated starting point of a counter
(where it is zero) is within the range, it is used as the starting
point of the series.
Fixes #581
2016-01-08 15:32:43 +01:00
Brian Brazil
bac1f28cad
Similar to topk/bottomk, have sort/sort_desc put NaN at end.
...
This makes topk and bottomk consistent with the sorting functions,
as per #1271 .
2015-12-31 14:52:48 +00:00
Brian Brazil
88ca82304c
Make topk/bottomk prefer returning real numbers over NaN.
2015-12-22 13:53:43 +00:00
Brian Brazil
edf3e123f5
Move topk/bottomk tests from legacy.
2015-12-22 12:38:32 +00:00
James Sanford
5b53262b7a
promql: Add clamp_max/clamp_min functions.
2015-11-26 13:38:06 -08:00
Brian Brazil
f08abdb48b
promql: Add irate() function
...
irate is a rate function that only looks at the most
recent two data points, and calucaltes a per-second value
from that. This produces much more granular graphs for
fast moving data, and works sanely across many scrape intervals.
It doesn't do so well for slowly moving data.
2015-10-09 21:44:35 +01:00
Brian Brazil
9b382647b5
Remove optional vector() 2nd argument
2015-09-13 09:13:22 +01:00
Brian Brazil
69f5fa0c1e
promql: Add vector function.
...
Currently the only way to convert a scalar to a vector is to
use absent(), which isn't very clean. This adds a vector()
function that's the inverse of scalar() and lets your optionally
set labels.
Example usage would be
vector(time() % 86400) < 3600
to filter to only the first hour of the day.
2015-09-11 12:09:34 +01:00
Julius Volz
61c42c8da0
Change relabel_replace() to do full-string matches.
...
THIS IS A BREAKING CHANGE.
Fixes part of https://github.com/prometheus/prometheus/issues/996
2015-09-01 15:49:28 +02:00
Julius Volz
27ed874358
Implement label_replace()
...
Implements part of https://github.com/prometheus/prometheus/issues/959 .
2015-08-18 14:20:07 +02:00
Brian Brazil
d6a80c2b76
promql: Add support for predict_linear(my_timeseries[1h], 7200)
...
This will give a prediction for the value of my_timeseries in 2 hours,
based on the last hour of data.
2015-08-05 15:16:49 +01:00
Brian Brazil
f34de493d5
Add increase() function, to replace delta(..., 1).
...
This calculates how much a counter increases over
a given period of time, which is the area under the curve
of it's rate.
increase(x[5m]) is equivilent to rate(x[5m]) * 300.
2015-05-26 22:49:21 +01:00
Julius Volz
d44a89c6e8
Implement changes() function.
...
changes() takes a range vector and returns the number of times a value
has changed in the given time window for each time series as an instant
vector.
2015-05-26 19:06:22 +02:00
Julius Volz
6f33ed9e59
Add resets() function to count counter resets.
...
resets() returns for every range vector element how many counter
resets there have been in the specified range.
2015-05-26 17:56:52 +02:00