계기와 수집

데이터 품질과 결측 처리

현장 데이터는 반드시 깨집니다. 통신은 끊기고, 계기는 교체되고, 정전 후에는 이상한 값이 들어옵니다. 문제는 깨지는 것이 아니라 깨진 데이터를 조용히 집계에 섞는 것입니다.


1. 적산값과 사용량

전력량계는 누적(적산) kWh를 줍니다. 사용량은 차분으로 만듭니다.

사용량(t) = 적산(t) - 적산(t-1)
시각적산 kWh사용량
09:0010,000.0-
09:0110,001.21.2
09:0210,002.51.3
09:03(결측)?
09:0410,005.02.5 (2분치)

적산값의 장점은 결측 구간이 있어도 총량은 보존된다는 것입니다. 09:03이 비어도 09:02~09:04 사이 2.5kWh는 정확합니다. 그래서 순시 kW를 적분하는 방식보다 적산 차분이 우선입니다.

2. 대표적인 품질 문제

문제증상원인
결측구간 데이터 없음통신 장애, 수집기 다운
음수 차분사용량 마이너스계기 교체, 적산 리셋, 롤오버
스파이크한 구간만 수백 배통신 노이즈, 바이트 순서 오류
고정값값이 계속 같음계기 멈춤, 게이트웨이 캐시
0 연속사용량 0 지속설비 정지 or 계기 고장 (구분 필요)
중복같은 시각 여러 건MQTT 재전송, 재수집
시각 오류미래/과거 시각게이트웨이 시계 틀어짐

3. 검증 규칙

수집 직후 또는 집계 전에 규칙 기반 검증을 겁니다.

1. 범위 검증: 0 <= 사용량 <= 정격용량(kW) × 구간시간(h) × 1.2
2. 음수 검증: 차분 < 0 이면 리셋/롤오버 판정
3. 변화율 검증: 직전 평균 대비 N배 이상이면 스파이크 의심
4. 고정값 검증: 설비 가동 중인데 M분 이상 값 변화 없음
5. 시각 검증: 서버 시각 기준 ±허용 범위 밖이면 보류

정격용량 기반 상한이 가장 효과적입니다. 100kW 설비가 1분에 50kWh를 쓸 수는 없습니다.

4. 리셋과 롤오버

  • 롤오버: 적산값이 최대값(예: 99,999,999)을 넘어 0으로 돌아감 → 최대값 - 이전값 + 현재값
  • 계기 교체: 새 계기는 0부터 시작 → 교체 시점 이력을 남기고 이전 구간과 분리
  • 수동 리셋: 현장에서 초기화 → 유지보수 이력과 대조

교체 이력이 meter_maintenance에 남아 있으면 자동 판정이 가능합니다. 이력이 없으면 음수 차분은 일단 0 처리 + 플래그를 남기고 사람이 확인합니다.

5. 결측 처리 전략

전략방법적합한 경우
그대로 둠NULL 유지, 집계 시 표시감사, 원본 보존
적산 분배결측 후 첫 값의 차분을 구간에 균등 분배적산 계기, 짧은 결측
선형 보간앞뒤 값으로 보간순시값(kW, 유량)
패턴 대체같은 요일·시간대 평균긴 결측, 보고서용
0 처리사용 없음으로 간주설비 정지가 확인된 경우만
  • 필자 생각: 보간값을 원시 테이블에 덮어쓰지 마세요. 원본은 그대로 두고, 보정 테이블이나 품질 플래그 컬럼을 따로 둡니다. 나중에 "이 숫자 진짜예요?"라는 질문에 답할 수 있어야 합니다.

6. 품질 플래그

quality_flag
- 0: 정상
- 1: 보간
- 2: 패턴 대체
- 3: 리셋 보정
- 4: 스파이크 제거
- 9: 검증 필요

집계 테이블에도 결측률 또는 보정 비율을 같이 담으면 화면에서 신뢰도를 표시할 수 있습니다.

컬럼설명
kwh집계 사용량
sample_count실제 수집 건수
expected_count기대 건수 (1분 주기면 하루 1440)
missing_rate결측률

7. 재집계

결측이 나중에 채워지는 경우(게이트웨이 버퍼 재전송)가 많습니다.

  1. 원시 데이터 수신 시 해당 구간을 "재집계 필요"로 표시
  2. 배치가 표시된 구간만 시간 → 일 → 월 순으로 재계산
  3. 이미 발행된 보고서는 재생성 여부를 정책으로 결정

집계는 언제든 다시 돌릴 수 있게 멱등하게 만들어야 합니다. INSERT ... ON DUPLICATE KEY UPDATE나 구간 삭제 후 재삽입 패턴을 씁니다.

8. 모니터링

데이터 품질도 운영 지표입니다.

  • 수집기별 마지막 수신 시각
  • 계기별 일 결측률 순위
  • 검증 실패 건수 추이
  • 메인 계기 vs 분기 합계 차이율

이 화면이 있으면 현장 담당자보다 먼저 문제를 발견할 수 있습니다.

Previous
Modbus, MQTT 실무