diff --git a/monitoring/db/scripts/get_detailed_power.py b/monitoring/db/scripts/get_detailed_power.py index 1085158..474b816 100755 --- a/monitoring/db/scripts/get_detailed_power.py +++ b/monitoring/db/scripts/get_detailed_power.py @@ -157,32 +157,32 @@ class MonitoringDB: def build_query(jobid, interval): """Query taken from https://kb.hlrs.de/monitoring/index.php/TimescaleDB_-_Query_Guidelines#Power_by_Job_Query""" import sqlalchemy as db - query_string = """with job as ( - select job_id, starttime, endtime, nodes from jobs where job_id='{jobid}.hawk-pbs5' - ), - node_series as( - select n.name, scmcavg.id as series_id from nodes n - inner join (select * from label where key='node') l on n.id = l.value::int - inner join series_cmc_power_racktraynodepoweravg scmcavg on l.id = scmcavg.labels[( - select pos from label_key_position - where metric_category= 'cmc_power' - and metric_name = 'RackTrayNodePowerAvg' - and key = 'node' - )] - where n.id = any((select nodes from job)::int[]) - ) - select a.time, a.value, ns.name from ( - select - time_bucket(extract ('epoch' from '{interval} seconds'::interval)::int*1000, cmcavg.ts) as time, - cmcavg.series_id::varchar, - avg(cmcavg.val) AS value - from cmc_power_racktraynodepoweravg cmcavg + query_string = """with _job as ( + select job_id, starttime, endtime, nodes from job where job_id='{jobid}.hawk-pbs5' +), +node_series as( + select n.name, scmcavg.id as series_id from node n + inner join (select * from label where key='node') l on n.id = l.value::int + inner join series_cmc_power_racktraynodepoweravg scmcavg on l.id = scmcavg.labels[( + select pos from label_key_position + where metric_category= 'cmc_power' + and metric_name = 'RackTrayNodePowerAvg' + and key = 'node' + )] + where n.id = any((select nodes from _job)::int[]) +) +select a.time, a.value, ns.name from ( + select + time_bucket(extract ('epoch' from '{interval} seconds'::interval)::int*1000, cmcavg.ts) as time, + cmcavg.series_id::varchar, + avg(cmcavg.val) AS value + from cmc_power_racktraynodepoweravg cmcavg where - ts <= (select endtime from job) - and ts >= (select starttime from job) + ts <= (select endtime from _job) + and ts >= (select starttime from _job) and series_id = Any(select series_id from node_series) - group by time, cmcavg.series_id order by time desc) a - inner join node_series ns on a.series_id::int = ns.series_id; + group by time, cmcavg.series_id order by time desc) a +inner join node_series ns on a.series_id::int = ns.series_id; """ return db.text(query_string.format(jobid=jobid, interval=interval))