[Fact] energy_usage

개요 #

항목설명
목적설비별 에너지 소비량(전기, 스팀, 가스 등)의 수집, 비용 예측, 이상 감지 및 탄소 배출 분석
발생 주기1~10분 주기 보고, 설비별 또는 라인 단위 (설비 병렬화 시 TPS 수천 이상 가능)
주요 연계dim_equipment, dim_energy_type, dim_energy_threshold, maintenance_log

메시지 스키마(Kafka/Avro) #

{
  "timestamp": "2025-05-24T14:15:00Z",
  "equipment_id": "LINE_C_PRESS_003",
  "energy_type": "electricity",
  "usage": 12.7,
  "unit": "kWh",
  "location": "line_c",
  "batch_id": "BATCH_20250524_002",
  "schema_version": "v1.1",
  "ingestion_timestamp": "2025-05-24T14:15:03Z"
}

이상 탐지 처리 흐름(Spark) #

항목내용
기준 테이블dim_energy_threshold
Join 기준equipment_id + energy_type
이상 조건usage > max_threshold 또는 unit ≠ expected_unit
알람 트리거연속 3회 이상 초과 or 특정 시간대 피크 초과
DLQ 사유 분류schema_error, unit_mismatch, threshold_missing, late_arrival
.withColumn("anomaly", $"usage" > $"max_threshold")
.withColumn("unit_mismatch", $"unit" =!= $"expected_unit")

Iceberg 저장 전략 #

항목내용
테이블명iot.fact_energy_usage
파티셔닝days(timestamp), bucket(16, equipment_id)
테이블 유형Append-only + MERGE 지원 구조
적재 지연 허용Watermark 10분 적용 예정
보관 정책365일 + compaction / metadata cleanup 주기 운영

Kafka Topic 구성 #

iot.energy_usage:
  partitions: 12
  replication-factor: 3
  compression.type: zstd
  retention.ms: 1209600000  # 14일

iot.energy_usage.dlq:
  partitions: 4
  retention.ms: 2592000000  # 30일

주요 모니터링 지표 #

iot_energy_usage_total: 전체 소비량
iot_energy_cost_prediction: 예상 vs 실제 요금
iot_energy_peak_over_count: 기준 초과 횟수
iot_energy_unit_mismatch: 단위 불일치 건수
iot_energy_carbon_emission: 탄소 배출량 예측치

SLA 기준 #

항목기준
Kafka ingest → Spark 처리 지연≤ 5초
Spark 처리 → Iceberg 적재 지연≤ 10초
DLQ 비율≤ 0.05%
처리량 유지초당 5,000건 이상 처리 보장
알람 전파 지연≤ 3초

연계 흐름 #

flowchart LR
    KAFKA(Kafka: iot.energy_usage) --> SPARK(Spark Aggregator)
    SPARK --> ICEBERG(Iceberg: fact_energy_usage)
    SPARK --> ALERT(Kafka: iot.alarm_log)
    ICEBERG --> TRINO(Trino: cost/carbon 분석)
    ICEBERG --> SUP(Superset: 전력 추이 대시보드)

관련 Dimension Table #

dim_energy_type

필드명설명
energy_type전력, 스팀, 가스 등 (enum)
standard_unit기준 단위 (예: kWh, m³)
conversion_rate환산 비율 (예: Wh → kWh = 0.001)
carbon_factor탄소 환산계수 (gCO2 per 단위)
cost_per_unit요금 정보

dim_energy_threshold

필드명설명
equipment_id설비 ID
energy_type전력/가스/스팀 등
max_threshold초과 기준
expected_unit기준 단위
valid_from, valid_to적용 기간 (스냅샷용)