Skip to main content
소요 시간: ~1시간 | 사전 조건: 02. 공기청정기 데이터 + 03. 에어컨 데이터 완료 핵심 메시지: “Raw IoT 센서 로그를 신뢰할 수 있는 분석용 데이터로 바꾸는 과정을 자연어 한 줄로 자동화한다”

이 모듈에서 사용하는 Databricks 기능

기능설명공식 문서
SDP (Spark Declarative Pipelines)데이터 파이프라인을 선언적으로 정의하면, 실행 순서·증분 처리·에러 복구를 Databricks가 자동 관리합니다.docs
ExpectationsSDP에서 데이터 품질 규칙을 선언하는 기능. 위반 레코드를 감지·격리합니다.docs
Medallion ArchitectureBronze(원본) → Silver(정제) → Gold(집계) 3단계 데이터 레이어 패턴.docs

개요

공기청정기 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            — ThinQ 앱 사용 통계
  ├── 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 위반율 요약

다음 단계