> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sifi.life/llms.txt
> Use this file to discover all available pages before exploring further.

# SDP 파이프라인

> **소요 시간**: \~1시간 | **사전 조건**: [02. 공기청정기 데이터](02-air-purifier-data) + [03. 에어컨 데이터](03-air-conditioner-data) 완료
>
> **핵심 메시지**: "Raw IoT 센서 로그를 신뢰할 수 있는 분석용 데이터로 바꾸는 과정을 자연어 한 줄로 자동화한다"

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

| 기능                                    | 설명                                                              | 공식 문서                                                                      |
| ------------------------------------- | --------------------------------------------------------------- | -------------------------------------------------------------------------- |
| **SDP (Spark Declarative Pipelines)** | 데이터 파이프라인을 선언적으로 정의하면, 실행 순서·증분 처리·에러 복구를 Databricks가 자동 관리합니다. | [docs](https://docs.databricks.com/en/delta-live-tables/index.html)        |
| **Expectations**                      | SDP에서 데이터 품질 규칙을 선언하는 기능. 위반 레코드를 감지·격리합니다.                     | [docs](https://docs.databricks.com/en/delta-live-tables/expectations.html) |
| **Medallion Architecture**            | Bronze(원본) → Silver(정제) → Gold(집계) 3단계 데이터 레이어 패턴.              | [docs](https://docs.databricks.com/en/lakehouse/medallion.html)            |

## 개요

공기청정기 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](05-dashboard-genie)** — Gold 테이블 기반 대시보드와 자연어 데이터 탐색
