@@ -285,12 +285,25 @@ sql="
285
285
key
286
286
from sum_s2
287
287
join sum_si_s2 using (key)
288
- ), absolute_error as ( -- absolute error with respect to calls metric is calculated as: (diff1(calls) + diff2(calls)) / 2
289
- select
290
- (diff1.sum_calls + diff2.sum_calls)::numeric / 2 as sum_calls,
291
- (diff1.sum_total_time + diff2.sum_total_time)::numeric / 2 as sum_total_time
292
- from diff1
293
- join diff2 using (key)
288
+ ), diff_calc_rel_err as (
289
+ select
290
+ abs(sum_si_s2.sum_calls - sum_si_s1.sum_calls) as sum_calls,
291
+ abs(sum_si_s2.sum_total_time - sum_si_s1.sum_total_time) as sum_total_time,
292
+ key
293
+ from sum_si_s2
294
+ join sum_si_s1 using (key)
295
+ ), calc_error as ( -- absolute error with respect to calls metric is calculated as: (diff1(calls) + diff2(calls)) / 2
296
+ select
297
+ (diff1.sum_calls + diff2.sum_calls)::numeric / 2 as absolute_error_calls,
298
+ (diff1.sum_total_time + diff2.sum_total_time)::numeric / 2 as absolute_error_total_time,
299
+ case when (select sum_calls from diff_calc_rel_err) = 0 then 0 else
300
+ (((diff1.sum_calls + diff2.sum_calls) / 2) * 100) / (select sum_calls from diff_calc_rel_err)
301
+ end as relative_error_calls,
302
+ case when (select sum_total_time from diff_calc_rel_err) = 0 then 0 else
303
+ (((diff1.sum_total_time + diff2.sum_total_time) / 2) * 100) / (select sum_total_time from diff_calc_rel_err)
304
+ end as relative_error_total_time
305
+ from diff1
306
+ join diff2 using (key)
294
307
), sum_delta as (
295
308
select
296
309
${sub_sql_sum_delta}
@@ -316,8 +329,10 @@ sql="
316
329
'end_timestamptz'::text, (select j->'snapshot_timestamptz' from snap2),
317
330
'period_seconds'::text, ( select (snap2.j->>'snapshot_timestamptz_s')::numeric - (snap1.j->>'snapshot_timestamptz_s')::numeric from snap1, snap2 ),
318
331
'period_age'::text, ( select (snap2.j->>'snapshot_timestamptz')::timestamptz - (snap1.j->>'snapshot_timestamptz')::timestamptz from snap1, snap2 ),
319
- 'absolute_error_calls'::text, (select sum_calls from absolute_error),
320
- 'absolute_error_total_time'::text, (select sum_total_time from absolute_error),
332
+ 'absolute_error_calls'::text, (select absolute_error_calls from calc_error),
333
+ 'absolute_error_total_time'::text, (select absolute_error_total_time from calc_error),
334
+ 'relative_error_calls'::text, (select relative_error_calls from calc_error),
335
+ 'relative_error_total_time'::text, (select relative_error_total_time from calc_error),
321
336
'queries', json_object_agg(queries.rownum, queries.*)
322
337
)
323
338
from queries
0 commit comments