diff --git a/src/Infrastructure/Database/ExperionDbContext.cs b/src/Infrastructure/Database/ExperionDbContext.cs index 0ea7a02..4813b07 100644 --- a/src/Infrastructure/Database/ExperionDbContext.cs +++ b/src/Infrastructure/Database/ExperionDbContext.cs @@ -311,10 +311,7 @@ public class ExperionDbService : IExperionDbService instate1_rt.livevalue AS instate1, instate2_rt.livevalue AS instate2, desc_md.value AS description, - area_md.value AS area, - s0d_md.value AS state0_descriptor, - s1d_md.value AS state1_descriptor, - s2d_md.value AS state2_descriptor + area_md.value AS area FROM (SELECT DISTINCT split_part(tagname, '.', 1) AS base_tag FROM realtime_table) rt_base LEFT JOIN realtime_table pv_rt ON pv_rt.tagname = rt_base.base_tag || '.pv' LEFT JOIN realtime_table sp_rt ON sp_rt.tagname = rt_base.base_tag || '.sp' @@ -324,9 +321,15 @@ public class ExperionDbService : IExperionDbService LEFT JOIN realtime_table instate2_rt ON instate2_rt.tagname = rt_base.base_tag || '.instate2' LEFT JOIN tag_metadata desc_md ON desc_md.base_tag = rt_base.base_tag AND desc_md.attribute = 'desc' LEFT JOIN tag_metadata area_md ON area_md.base_tag = rt_base.base_tag AND area_md.attribute = 'area' - LEFT JOIN tag_metadata s0d_md ON s0d_md.base_tag = rt_base.base_tag AND s0d_md.attribute = 'state0descriptor' - LEFT JOIN tag_metadata s1d_md ON s1d_md.base_tag = rt_base.base_tag AND s1d_md.attribute = 'state1descriptor' - LEFT JOIN tag_metadata s2d_md ON s2d_md.base_tag = rt_base.base_tag AND s2d_md.attribute = 'state2descriptor' + """); + + // state descriptor 고아 데이터 정리 (state0~7descriptor는 더 이상 로딩하지 않음) + await _ctx.Database.ExecuteSqlRawAsync(""" + DELETE FROM tag_metadata WHERE attribute IN ( + 'state0descriptor', 'state1descriptor', 'state2descriptor', + 'state3descriptor', 'state4descriptor', 'state5descriptor', + 'state6descriptor', 'state7descriptor' + ) """); // history 테이블은 수동으로 하이퍼테이블 생성 필요