mirror of
https://github.com/grafana/grafana.git
synced 2025-09-25 20:33:58 +08:00
handle counter overflow and resets in rate
This commit is contained in:
@ -240,7 +240,7 @@ export default class PostgresQuery {
|
|||||||
let special = _.find(column, (g: any) => g.type === 'special');
|
let special = _.find(column, (g: any) => g.type === 'special');
|
||||||
if (special) {
|
if (special) {
|
||||||
let over = '';
|
let over = '';
|
||||||
if (target.metricColumn) {
|
if (target.metricColumn !== 'None') {
|
||||||
over = 'PARTITION BY ' + target.metricColumn;
|
over = 'PARTITION BY ' + target.metricColumn;
|
||||||
}
|
}
|
||||||
switch (special.params[0]) {
|
switch (special.params[0]) {
|
||||||
@ -249,7 +249,9 @@ export default class PostgresQuery {
|
|||||||
break;
|
break;
|
||||||
case 'rate':
|
case 'rate':
|
||||||
let timeColumn = target.timeColumn;
|
let timeColumn = target.timeColumn;
|
||||||
query = '(' + query + ' - lag(' + query + ') OVER (' + over + '))';
|
let curr = query;
|
||||||
|
let prev = 'lag(' + curr + ') OVER (' + over + ')';
|
||||||
|
query = '(CASE WHEN ' + curr + ' >= ' + prev + ' THEN ' + curr + ' - ' + prev + ' ELSE ' + curr + ' END)';
|
||||||
query += '/extract(epoch from ' + timeColumn + ' - lag(' + timeColumn + ') OVER (' + over + '))';
|
query += '/extract(epoch from ' + timeColumn + ' - lag(' + timeColumn + ') OVER (' + over + '))';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user