Browse Source

update sched_map query

mlnicolas 6 years ago
parent
commit
baf1638e02
1 changed files with 48 additions and 34 deletions
  1. 48 34
      crss-mq-computation/crss-mq-computation.yml

+ 48 - 34
crss-mq-computation/crss-mq-computation.yml

@@ -108,46 +108,60 @@ crss:
       genMtnMpointSchedMapQuery: >
         insert into %s (mtn, sein, reading_datetime, group_schedule_id, validated_id, version, CREATED_DATE)
         select
+          outer_query.mtn_name,
+          outer_query.sein,
+          outer_query.reading_datetime,
+          outer_query.group_schedule_id,
+          outer_query.validated_id,
+          %d,
+          now()
+        from
+        (select *,
+        row_number() over (partition by sein, reading_datetime order by eff_start_date desc, created_datetime desc) as rn
+        from
+        (select
           temp_sched_map.mtn_name,
           temp_sched_map.sein,
           temp_sched_map.reading_datetime,
           temp_sched_map.group_schedule_id,
           temp_sched_map.validated_id,
-          %d,
-          now()
+          temp_sched_map.eff_start_date,
+          temp_sched_map.created_datetime
         from (
-               SELECT
-                 DISTINCT  on (cm.mtn_name, mpoint.sein, reading_datetime, gs.id)
-                 cm.mtn_name,
-                 mpoint.sein,
-                 gen_date AS reading_datetime,
-                 gs.id    AS group_schedule_id,
-                 rank() OVER (PARTITION BY cm.mtn_name ORDER BY gs.eff_start_date desc, gs.created_datetime DESC ) as rank
-                ,
-
-                 (
-                     select
-                       DISTINCT first_value(val.id) OVER (PARTITION BY val.sein, val.reading_datetime ORDER BY val.created_date_time DESC )
-                     from txn_meter_validated_%s val
-                     where val.sein = mpoint.sein
-                           and val.reading_datetime = gen_date
-                           and val.meter_type = 'MIRF_MT_WESM'
-                   )
-                   as validated_id
-               FROM cfg_mtn_grp_sched gs
-                 JOIN cfg_mtn_grp mg
-                   ON mg.mtn_grp_id = gs.mtn_grp_id
-                 JOIN cfg_mtn_grp_x_cfg_mtn gxm
-                   ON gxm.mtn_grp_id = mg.mtn_grp_id
-                 JOIN cfg_mtn cm
-                   ON cm.mtn_cfg_id = gxm.mtn_cfg_id
-                 LEFT JOIN cfg_mtn_mpoint mpoint
-                   ON mpoint.mtn_cfg_id = cm.mtn_cfg_id
-                 ,
-                     generate_series('%s', '%s', INTERVAL '%d minutes') gen_date
-               WHERE gs.eff_start_date <= gen_date
-                     AND gs.status = 'ACTIVE'
-             ) temp_sched_map where temp_sched_map.rank = 1 and temp_sched_map.validated_id is not null;
+        SELECT
+        DISTINCT  on (cm.mtn_name, mpoint.sein, reading_datetime, gs.id)
+        cm.mtn_name,
+        mpoint.sein,
+        gen_date AS reading_datetime,
+        gs.id    AS group_schedule_id,
+        gs.eff_start_date,
+        gs.created_datetime,
+        rank() OVER (PARTITION BY cm.mtn_name ORDER BY gs.eff_start_date desc, gs.created_datetime DESC ) as rank
+        ,
+        (
+        select
+        DISTINCT first_value(val.id) OVER (PARTITION BY val.sein, val.reading_datetime ORDER BY val.created_date_time DESC )
+        from txn_meter_validated_%s val
+        where val.sein = mpoint.sein
+        and val.reading_datetime = gen_date
+        and val.meter_type = 'MIRF_MT_WESM'
+        )
+        as validated_id
+        FROM cfg_mtn_grp_sched gs
+        JOIN cfg_mtn_grp mg
+        ON mg.mtn_grp_id = gs.mtn_grp_id
+        JOIN cfg_mtn_grp_x_cfg_mtn gxm
+        ON gxm.mtn_grp_id = mg.mtn_grp_id
+        JOIN cfg_mtn cm
+        ON cm.mtn_cfg_id = gxm.mtn_cfg_id
+        LEFT JOIN cfg_mtn_mpoint mpoint
+        ON mpoint.mtn_cfg_id = cm.mtn_cfg_id
+        ,
+        generate_series('%s', '%s', INTERVAL '%d minutes') gen_date
+        WHERE gs.eff_start_date <= gen_date
+        AND gs.status = 'ACTIVE'
+        ) temp_sched_map where temp_sched_map.rank = 1 and temp_sched_map.validated_id is not null) inner_query) outer_query
+        where rn = 1;
 ---
 spring:
   profiles: dailyMq