소요 시간: ~1시간 | 사전 조건: 02. 공기청정기 데이터 + 03. 에어컨 데이터 완료 핵심 메시지: “Raw IoT 센서 로그를 신뢰할 수 있는 분석용 데이터로 바꾸는 과정을 자연어 한 줄로 자동화한다”
이 모듈에서 사용하는 Databricks 기능
개요
공기청정기 8개 + 에어컨 9개 = 총 17개 Bronze 테이블의 Raw IoT 로그를 SDP 파이프라인으로 정제합니다.파이프라인 구조
Bronze (17 테이블)
├── 공기청정기: ap_devices, ap_air_quality_logs, ap_filter_status,
│ ap_operation_logs, ap_power_events, ap_energy_consumption,
│ ap_thinq_commands, ap_alert_events
└── 에어컨: ac_devices, ac_temperature_logs, ac_humidity_logs,
ac_operation_logs, ac_compressor_events, ac_energy_consumption,
ac_thinq_commands, ac_alert_events, ac_maintenance_logs
↓
Silver (정제 — 중복 제거, NULL 처리, 타입 정규화)
↓
Gold (집계 — 비즈니스 KPI)
├── gold_daily_air_quality_summary — 일별 지역별 공기질 요약
├── gold_filter_lifecycle_analysis — 필터 수명 분석
├── gold_energy_comparison — 제품군별 에너지 효율 비교
├── gold_thinq_usage_stats — 제조사 모바일 앱 사용 통계
├── gold_alert_trend_analysis — 알림/에러 트렌드 분석
├── gold_seasonal_operation_pattern — 계절별 운전 패턴
├── gold_device_health_score — 디바이스 건강 점수
└── gold_maintenance_cost_analysis — 정비 비용 분석 (에어컨)
Part A: 수동 CTAS로 변환 이해
Silver 예시 — 공기질 로그 정제
lge_appliance.bronze.ap_air_quality_logs를 정제해서
lge_appliance.silver.ap_air_quality_clean에 저장해줘.
정제 규칙:
- device_id가 NULL이면 quarantine으로 격리
- pm25 < 0 또는 pm25 > 500이면 quarantine으로 격리
- pm10 < 0 또는 pm10 > 1000이면 quarantine으로 격리
- 중복 레코드 제거 (device_id + measured_at 기준)
- humidity가 NULL이면 region 평균값으로 대체
Gold 예시 — 일별 공기질 요약
silver 테이블에서 일별, 지역별 공기질 요약 테이블을 만들어줘.
lge_appliance.gold.daily_air_quality_summary에 저장.
집계 항목:
- avg_pm25, max_pm25, avg_pm10
- avg_voc, avg_co2
- 측정 건수, 고유 디바이스 수
- air_quality_index 분포 (1~5 각각의 비율)
Part B: SDP 파이프라인으로 자동화
위에서 만든 Bronze→Silver→Gold 변환을 SDP(Spark Declarative Pipeline)로
자동화하는 노트북을 만들어줘.
파이프라인 이름: lge_appliance_pipeline
타겟 스키마: lge_appliance (silver, gold 스키마 활용)
포함할 테이블:
1. Silver 레이어: 모든 ap_*, ac_* Bronze 테이블의 정제 버전
2. Gold 레이어:
- daily_air_quality_summary (일별 지역별 공기질)
- filter_lifecycle_analysis (필터 수명 주기)
- energy_comparison (공기청정기 vs 에어컨 에너지 효율)
- thinq_usage_stats (ThinQ 원격 제어 통계)
- alert_trend_analysis (알림/에러 추이)
- seasonal_operation_pattern (계절별 운전 패턴)
- device_health_score (디바이스 종합 건강 점수)
- maintenance_cost_analysis (에어컨 정비 비용)
Expectations:
- pm25_valid: pm25 BETWEEN 0 AND 500
- pm10_valid: pm10 BETWEEN 0 AND 1000
- temperature_valid: indoor_temp BETWEEN -10 AND 50
- device_id_not_null: device_id IS NOT NULL
- 위반 레코드는 quarantine 스키마로 격리
Part C: 파이프라인 실행 및 검증
SDP 파이프라인을 실행하고, 결과를 검증해줘:
1. Silver 테이블 건수가 Bronze보다 적은지 (품질 필터 적용 확인)
2. Gold 집계 테이블 8개 모두 생성됐는지
3. quarantine 테이블에 격리된 레코드 수
4. Expectations 위반율 요약
다음 단계
- 05. AI/BI 대시보드 & Genie Space — Gold 테이블 기반 대시보드와 자연어 데이터 탐색