> ## 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.

# 에어컨 가상 데이터 생성

> **소요 시간**: \~15분 | **사전 조건**: [02. 공기청정기 데이터 생성](02-air-purifier-data) 완료 | **컴퓨트**: Serverless 권장

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

| 기능             | 설명                                                                    | 공식 문서                                                     |
| -------------- | --------------------------------------------------------------------- | --------------------------------------------------------- |
| **PySpark**    | Databricks의 분산 데이터 처리 엔진. 대규모 데이터를 클러스터에서 병렬로 생성/처리합니다.               | [docs](https://docs.databricks.com/en/pyspark/index.html) |
| **Faker**      | 테스트용 가짜 데이터를 생성하는 Python 라이브러리. 현실적인 센서 값을 만듭니다.                      | [pypi](https://pypi.org/project/Faker/)                   |
| **Delta Lake** | Databricks의 기본 테이블 형식. 트랜잭션 보장, 스키마 진화, 시간 여행(Time Travel) 기능을 제공합니다. | [docs](https://docs.databricks.com/en/delta/index.html)   |

## 개요

DUALCOOL/WHISEN 에어컨에서 수집되는 IoT 센서 데이터를 기반으로 **9개 테이블, 약 120만 건**의 가상 데이터를 생성합니다.

에어컨 특유의 냉/난방 사이클, 컴프레서 동작, 에너지 효율 등 실제 운전 데이터 구조를 반영합니다.

***

## 데이터 아키텍처

```
catalog: lge_appliance
├── bronze (Raw IoT 센서 로그)
│   ├── [Master] ac_devices                    8,000건   — 에어컨 디바이스 마스터
│   ├── [Sensor] ac_temperature_logs         400,000건   — 실내/외 온도, 설정 온도 측정
│   ├── [Sensor] ac_humidity_logs            200,000건   — 실내 습도 및 제습량
│   ├── [Operation] ac_operation_logs        250,000건   — 냉방/난방/제습/송풍 모드, 풍향/풍속
│   ├── [Operation] ac_compressor_events      80,000건   — 컴프레서 가동/정지, 주파수(Hz)
│   ├── [Energy] ac_energy_consumption       200,000건   — 시간대별 전력 소비 및 EER
│   ├── [IoT] ac_thinq_commands               60,000건   — 제조사 모바일 앱 원격 제어 명령
│   ├── [Alert] ac_alert_events               30,000건   — 에러 코드, 정비 알림
│   └── [Maintenance] ac_maintenance_logs     20,000건   — 정기 점검, 냉매 충전, 세척 이력
```

***

## 테이블별 DDL 및 프롬프트

### 1. 디바이스 마스터 (ac\_devices)

```
lge_appliance.bronze.ac_devices 테이블을 생성해줘. 8,000건.

DDL 정보:
- device_id: STRING — 고유 디바이스 ID (AC-UUID 형식)
- model_name: STRING — 모델명 (FQ18DADWA2, FQ18PAKWT2, FW18RAWWA 등 DUALCOOL/WHISEN 모델)
- product_line: STRING — 'DUALCOOL' 또는 'WHISEN'
- capacity_btu: INT — 냉방 능력(BTU), 9000/12000/18000/24000
- energy_grade: STRING — 에너지 효율 등급 '1'~'5'
- manufactured_date: DATE — 2022-01-01 ~ 2026-03-31
- firmware_version: STRING — 'v2.5.0' ~ 'v3.2.0'
- region: STRING — 서울, 경기, 부산, 대구, 광주, 대전, 인천, 세종
- install_type: STRING — '벽걸이', '스탠드', '천장형', '시스템'
- thinq_registered: BOOLEAN — 제조사 모바일 앱 등록 여부 (75% true)
- warranty_end_date: DATE — manufactured_date + 3년
- registration_date: TIMESTAMP

COMMENT: 'DUALCOOL/WHISEN 에어컨 디바이스 마스터 테이블'
Delta 형식으로 저장해줘.
```

### 2. 온도 센서 로그 (ac\_temperature\_logs)

```
lge_appliance.bronze.ac_temperature_logs 테이블을 생성해줘. 400,000건.

DDL 정보:
- log_id: STRING — UUID
- device_id: STRING — ac_devices.device_id 참조
- measured_at: TIMESTAMP — 2025-10-01 ~ 2026-03-31 (10분 간격)
- indoor_temp: DOUBLE — 실내 온도(°C), 15~35
- outdoor_temp: DOUBLE — 실외 온도(°C), -10~40, 계절별 변동
- set_temp: DOUBLE — 설정 온도(°C), 18~30
- temp_diff: DOUBLE — indoor_temp - set_temp (자동 계산)
- sensor_location: STRING — 'main', 'sub', 'remote'
- event_date: DATE

여름(6~8월) 실외 온도 30~40°C, 겨울(12~2월) -10~5°C로 계절별 분포.
COMMENT: '실내외 온도 센서 측정 로그 (10분 간격)'
Delta 형식, event_date 파티셔닝.
```

### 3. 습도 센서 로그 (ac\_humidity\_logs)

```
lge_appliance.bronze.ac_humidity_logs 테이블을 생성해줘. 200,000건.

DDL 정보:
- log_id: STRING — UUID
- device_id: STRING
- measured_at: TIMESTAMP — 10분 간격
- indoor_humidity: DOUBLE — 실내 습도(%), 20~90
- dehumidify_amount: DOUBLE — 제습량(L/h), 0~3.0
- comfort_index: DOUBLE — 쾌적 지수 0~100
- event_date: DATE

장마철(6~7월) 습도 70~90%로 높게, 겨울 20~40%로 낮게.
COMMENT: '실내 습도 및 제습량 측정 로그'
Delta 형식, event_date 파티셔닝.
```

### 4. 운전 모드 로그 (ac\_operation\_logs)

```
lge_appliance.bronze.ac_operation_logs 테이블을 생성해줘. 250,000건.

DDL 정보:
- log_id: STRING — UUID
- device_id: STRING
- event_at: TIMESTAMP
- operation_mode: STRING — 'Cooling', 'Heating', 'Dehumidify', 'Fan', 'AI_Auto', 'Energy_Saving'
- fan_speed: INT — 풍속 단계 1~6
- fan_direction: STRING — 'auto', 'up', 'down', 'left', 'right', 'wide', 'spot'
- set_temperature: DOUBLE — 설정 온도
- duration_minutes: INT — 해당 모드 유지 시간
- triggered_by: STRING — 'user', 'ai_auto', 'schedule', 'thinq_app'
- event_date: DATE

여름: 냉방 60%, AI자동 20%. 겨울: 난방 55%, AI자동 25%.
COMMENT: '에어컨 운전 모드 변경 로그'
Delta 형식, event_date 파티셔닝.
```

### 5. 컴프레서 이벤트 (ac\_compressor\_events)

```
lge_appliance.bronze.ac_compressor_events 테이블을 생성해줘. 80,000건.

DDL 정보:
- event_id: STRING — UUID
- device_id: STRING
- event_at: TIMESTAMP
- compressor_state: STRING — 'running', 'stopped', 'defrost'
- frequency_hz: DOUBLE — 인버터 주파수(Hz), 0~120
- discharge_temp: DOUBLE — 토출 온도(°C), 40~90
- suction_temp: DOUBLE — 흡입 온도(°C), -5~20
- current_amps: DOUBLE — 소비 전류(A), 0~15
- event_date: DATE

COMMENT: '컴프레서 가동/정지 이벤트 (인버터 주파수 포함)'
Delta 형식, event_date 파티셔닝.
```

### 6. 전력 소비 (ac\_energy\_consumption)

```
lge_appliance.bronze.ac_energy_consumption 테이블을 생성해줘. 200,000건.

DDL 정보:
- record_id: STRING — UUID
- device_id: STRING
- measured_at: TIMESTAMP — 1시간 간격
- power_watts: DOUBLE — 소비 전력(W), 모드별: Fan 30~50W, Cooling 500~2000W, Heating 600~2500W
- cumulative_kwh: DOUBLE — 누적 전력량(kWh)
- eer: DOUBLE — 에너지효율비(EER), 2.5~5.0
- operation_mode: STRING — 측정 시점의 운전 모드
- outdoor_temp: DOUBLE — 측정 시점 실외 온도 (효율 분석용)
- event_date: DATE

실외 온도가 높을수록(냉방 시) 또는 낮을수록(난방 시) 전력 소비 증가.
COMMENT: '시간대별 전력 소비 및 에너지 효율 로그'
Delta 형식, event_date 파티셔닝.
```

### 7. ThinQ 원격 제어 명령 (ac\_thinq\_commands)

```
lge_appliance.bronze.ac_thinq_commands 테이블을 생성해줘. 60,000건.

DDL 정보:
- command_id: STRING — UUID
- device_id: STRING
- sent_at: TIMESTAMP
- command_type: STRING — 'power_on', 'power_off', 'mode_change', 'temp_set', 'fan_speed', 'schedule_set', 'ai_mode'
- command_payload: STRING — JSON 형태 명령 파라미터
- execution_result: STRING — 'success', 'failed', 'timeout', 'device_offline'
- response_time_ms: INT — 명령 응답 시간(ms), 100~5000
- app_version: STRING — 제조사 모바일 앱 버전
- event_date: DATE

성공률 90%, 실패 6%, 타임아웃 2.5%, 오프라인 1.5%.
COMMENT: '제조사 모바일 앱 에어컨 원격 제어 명령 로그'
Delta 형식, event_date 파티셔닝.
```

### 8. 알림 이벤트 (ac\_alert\_events)

```
lge_appliance.bronze.ac_alert_events 테이블을 생성해줘. 30,000건.

DDL 정보:
- alert_id: STRING — UUID
- device_id: STRING
- alert_at: TIMESTAMP
- alert_type: STRING — 'filter_clean', 'refrigerant_low', 'compressor_error', 'sensor_fault', 'defrost_cycle', 'firmware_update'
- error_code: STRING — 'CH01'~'CH15' 에러 코드 체계
- severity: STRING — 'info', 'warning', 'critical'
- alert_message: STRING — 한글 알림 메시지
- acknowledged: BOOLEAN — 사용자 확인 여부
- resolved_at: TIMESTAMP — 해결 시각 (NULL 가능)
- event_date: DATE

필터 세척 35%, 제상 사이클 20%, 센서 이상 15%, 컴프레서 에러 10%, 냉매 부족 10%, 펌웨어 10%.
COMMENT: '에어컨 알림 및 에러 코드 이벤트'
Delta 형식, event_date 파티셔닝.
```

### 9. 정비 이력 (ac\_maintenance\_logs)

```
lge_appliance.bronze.ac_maintenance_logs 테이블을 생성해줘. 20,000건.

DDL 정보:
- maintenance_id: STRING — UUID
- device_id: STRING
- maintenance_date: DATE — 정비 수행일
- maintenance_type: STRING — 'regular_inspection', 'filter_cleaning', 'refrigerant_charge', 'deep_cleaning', 'part_replacement'
- technician_id: STRING — 서비스 기사 ID
- cost_krw: INT — 정비 비용(원), 0(무상) ~ 500000
- warranty_covered: BOOLEAN — 무상 보증 해당 여부
- parts_replaced: STRING — 교체 부품 (NULL 가능)
- next_maintenance_date: DATE — 다음 정비 권장일
- notes: STRING — 정비 메모
- event_date: DATE

정기 점검 30%, 필터 세척 25%, 심층 세척 20%, 냉매 충전 15%, 부품 교체 10%.
COMMENT: '에어컨 정비 및 서비스 이력'
Delta 형식, event_date 파티셔닝.
```

***

## 데이터 검증

모든 테이블 생성 후 아래 프롬프트로 검증합니다:

```
lge_appliance.bronze 스키마에서 ac_로 시작하는 모든 테이블의 
건수, 컬럼 수, 파티션 키를 정리해서 보여줘.
```

| 테이블                     | 목표 건수   | 주요 컬럼                                       |
| ----------------------- | ------- | ------------------------------------------- |
| ac\_devices             | 8,000   | device\_id, model\_name, capacity\_btu      |
| ac\_temperature\_logs   | 400,000 | indoor\_temp, outdoor\_temp, set\_temp      |
| ac\_humidity\_logs      | 200,000 | indoor\_humidity, dehumidify\_amount        |
| ac\_operation\_logs     | 250,000 | operation\_mode, fan\_speed, fan\_direction |
| ac\_compressor\_events  | 80,000  | compressor\_state, frequency\_hz            |
| ac\_energy\_consumption | 200,000 | power\_watts, eer                           |
| ac\_thinq\_commands     | 60,000  | command\_type, execution\_result            |
| ac\_alert\_events       | 30,000  | alert\_type, error\_code, severity          |
| ac\_maintenance\_logs   | 20,000  | maintenance\_type, cost\_krw                |

***

## 다음 단계

* **[04. SDP 파이프라인](04-sdp-pipeline)** — 공기청정기 + 에어컨 데이터를 Bronze → Silver → Gold로 변환하는 파이프라인 구축
