계측 데이터와 집계

집계 구조

원시 1분 데이터를 화면에서 직접 합치면 느리고, 날짜 경계가 흔들리고, 화면마다 숫자가 달라집니다. 에너지 플랫폼은 집계 테이블을 단계별로 쌓고, 화면과 보고서는 집계만 읽는 구조를 씁니다.


1. 집계 계층

원시 (power_measurement)               1분, 계기별
 └─ 15분 (power_measurement_15min)      수요전력, 요금 구간, 그룹 집계
     └─ 계기 기본 (power_measurement_base)        계기별 기간 집계 + 품질 지표
         └─ 시간 (power_measurement_usage_hour)   그룹별 시간 사용량, 시간대 요금
             └─ 구역 기본 (*_plant_area_base)      구역/그룹 기간 집계, 순위, 탄소
                 └─ 요약 (power_measurement_summary)  DAY / WEEK / MONTH / YEAR
단계목적주 사용처
원시원본 보존재집계, 실시간 차트
15분한전 수요전력 단위피크 알람, 요금 구간 배분
계기 기본계기별 사용량과 전기 품질계기 상세, 품질 분석
시간시간대별 요금, 기준선요금, 절감 계산
구역 기본계층 집계, 순위대시보드, 랭킹
요약기간 합계보고서, 추이 차트

유량, 분진, 소음, PID, SCR도 같은 패턴(*_measurement_base, *_usage_hour, *_plant_area_base, *_summary)을 따릅니다. 도메인이 늘어도 집계 구조는 같아서 화면과 보고서를 재사용할 수 있습니다.

2. 공통 집계 키

항목값설명
periodDAY / WEEK / MONTH / YEAR집계 주기
grp_typeCOMPANY / PLANT / PLANT_AREA / ASSET / METER어느 계층의 합계인가
grp_id해당 계층 PK공장 3번, 계기 12번
grp_code, grp_name표시용조인 없이 화면 표시
parent_id상위 집계 행계층 드릴다운
measured_at구간 시작 시각일 집계면 해당일 0시

grp_code, grp_name을 집계 행에 같이 저장하면 보고서처럼 무거운 조회에서 마스터 조인을 줄일 수 있습니다. 대신 이름 변경 시 과거 행은 옛 이름으로 남는다는 점을 감안해야 합니다.

3. 전력 집계 주요 지표

컬럼의미
kWh사용량 (적산 차분)
kWhFirst, kWhLast구간 첫/마지막 적산값. 검증과 재계산 근거
Pavg, Pmax, PmaxTime평균/최대 전력, 최대 시각
demandPower수요전력 (15분 기준)
PmaxExcess, PmaxExcessRate목표 피크 초과량, 초과율
lf, rlf부하율
llKWh, mlKWh, plKWh경부하/중간/최대부하 사용량
llRate, mlRate, plRate, baseRate시간대 단가, 기본요금 단가
cKWh요금 환산값
usageRatio상위 대비 사용 비율
tCO2탄소 배출량
meterRank사용량 순위
recordsCnt, expectedRecordsCnt실제/기대 수집 건수 (결측률)
boundaryOk, aggStatus경계 데이터 확보 여부, 집계 상태

계기 기본 테이블에는 전압 불평형(vur), 전류 불평형(cur), 전압 THD(vthd), 주파수 편차, 역률(pf) 같은 전기 품질 지표도 같이 담습니다.

4. 15분 집계

15분 집계는 세 가지 일을 합니다.

  1. 피크: 그룹별 15분 수요전력(Pmax/Pavg)을 구하고 목표 피크와 비교해 알람 평가
  2. 요금: 계기별 15분 소비량을 계절·시간대 요금 구간에 배분
  3. 그룹: 계기 데이터를 회사/사업장/구역/공정/유틸리티/설비 단위로 합산

15분 단위로 시간대를 판정해 두면 시간대 경계(예: 10:00)에 걸친 사용량도 정확히 나눌 수 있습니다.

5. 품질 지표를 집계에 담는 이유

recordsCnt = 1380, expectedRecordsCnt = 1440 → 결측률 4.2%
boundaryOk = false → 구간 시작/끝 적산값 누락, 사용량 신뢰 낮음
  • 결측이 있어도 숫자는 나옵니다. 그 숫자를 믿어도 되는지 알려주는 것이 품질 지표입니다
  • 화면에서 결측률이 높은 날을 흐리게 표시하거나 경고 아이콘을 붙입니다
  • 보고서에는 결측률 상위 계기 목록을 부록으로 넣습니다

6. 기간 경계

  1. 하루 컷 시각을 고정합니다 (보통 00:00 KST)
  2. 주/월/연 시작 기준은 회사별 기간 정책(company_period_policy)을 따릅니다
  3. 구간은 [start, end) 반열린 구간으로 통일합니다
  4. 일 사용량은 "당일 00:00 적산 - 익일 00:00 적산"입니다. 익일 00:00 값이 들어와야 확정됩니다

7. 재집계

수집이 늦거나 결측이 나중에 채워지면 이미 만든 집계를 다시 계산해야 합니다.

1. 원시 데이터 늦게 도착 or 수동 정정
2. 해당 계기·구간을 재집계 대상으로 등록
3. 필터: 이미 확정된 기간, 잠긴 기준선 기간 등 제외 규칙 적용
4. 15분 → 계기 기본 → 시간 → 구역 → 요약 순서로 재계산
5. 상위 그룹(구역, 사업장, 회사)까지 전파
  • 집계 잡은 멱등해야 합니다. 같은 구간을 두 번 돌려도 결과가 같아야 합니다
  • 수집과 집계는 분리합니다. 수집이 멈춰도 집계는 나중에 따라잡을 수 있어야 합니다
  • 재집계 범위가 커지면 DB 부하가 크니 야간에 분할 실행합니다

8. 스케줄링

작업주기비고
수집1분 등수집기별 polling_interval
15분 집계15분경계 + 지연 여유
시간 집계1시간정시 + 수 분
일 집계1일00:00 이후, 늦은 데이터 여유
주/월/연 요약기간 경계회사 기간 정책 기준
계기 상태수 분마지막 수신 시각으로 on/off 판정

경계 시각 정각에 돌리지 말고 지연 여유(cutoff)를 둡니다. 09:00 집계를 09:00:00에 돌리면 08:59 데이터가 아직 안 들어왔을 수 있습니다.

9. 자주 하는 실수

  • 순시 kW를 평균 내서 kWh를 만드는 것 (적산 차분이 정답)
  • 상위 그룹을 하위 그룹 합산과 대표 계기로 섞어서 계산
  • 서버 UTC, 현장 KST로 일 경계가 9시간 밀림
  • 주 시작 요일을 화면과 배치가 다르게 해석
  • 재집계 시 상위 그룹 전파 누락
Previous
전력 계통과 전기 품질