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

# 개요 & 진행 방식

### 이 모듈의 목적과 다루는 테이블

* **목적** — 카메라 모듈 공장에서 실제로 있을 법한 Bronze 원천 17테이블을 확보합니다(강사 배포본 임포트 또는 Genie Code 생성).
* **다루는 테이블** — Bronze 17개: 마스터 3(설비·제품·자재로트) + 생산 3(작업지시·통과이벤트·추적성) + 공정 4(SMT·디스펜싱·리플로우·AA) + 설비 2(센서로그·비가동) + 검사 3(AOI·최종화질·불량이벤트) + 환경/필드 2(클린룸·필드리턴).

> **핵심 메시지**: "있을 법한 원천 로그를, 자연어 프롬프트만으로 대규모로 만든다."

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

| 기능 | 설명 | 공식 문서 |
| - | - | - |
| **PySpark** | 분산 데이터 처리 엔진. 대규모 데이터를 병렬 생성. | [docs](https://docs.databricks.com/en/pyspark/index.html) |
| **Faker / dbldatagen** | 현실적인 가짜 데이터 생성 라이브러리. `dbldatagen`은 분포·상관관계 제어에 강함. | [Faker](https://pypi.org/project/Faker/) · [dbldatagen](https://github.com/databrickslabs/dbldatagen) |
| **Delta Lake** | 트랜잭션·스키마 진화·Time Travel을 제공하는 기본 테이블 형식. | [docs](https://docs.databricks.com/en/delta/index.html) |
| **Unity Catalog Volumes** | PDF/이미지 등 파일 저장 영역. | [docs](https://docs.databricks.com/en/volumes/index.html) |

## 개요

스마트팩토리(카메라 모듈 조립 라인) 시나리오에서 실제로 발생할 법한 **10개 카테고리, 17개 테이블, 약 290만 건**의 Bronze 데이터를 생성합니다. 공정 흐름을 그대로 반영합니다:

```
자재입고 → SMT실장 → 디스펜싱/본딩 → 리플로우 → Active Alignment(AA) → AOI검사 → 최종화질검사 → 출하
```

데이터는 **실제 있을 법한 분포·상관관계·비정형**을 갖도록 설계했습니다(자재로트↔불량, 설비 노후↔고장 전조, 환경 파티클↔오염불량, 구형 테스터 결측 등). 그래서 이후 NL2SQL·예측 ML·예측정비·RAG·AI 함수 실습이 모두 자연스럽게 이어집니다.

생성 결과는 모두 **Delta Lake** 테이블로 저장합니다 — 트랜잭션·스키마 관리·Time Travel을 기본 제공하는 표준 테이블 형식이라, 이후 재현과 정제 실습의 안전판이 됩니다.

> **Tip**
>
> * `Cmd+I`로 Genie Code 패널을 열고 프롬프트 입력.
> * 코드 생성 시 **Plan 확인 → "Allow in this thread" → Accept all → Run**.
> * "Always Allow"는 누르지 마세요.

> **📓 작업 노트북**: 이 모듈의 코드는 새 노트북 `01_CCM_Data_<본인ID>`(사이드바 New → Notebook, 언어 Python, 컴퓨트 Serverless)를 만들어 그 안에서 작성합니다.

***

## 이 모듈의 두 가지 진행 방식 ★

같은 데이터를 얻는 두 경로가 있습니다. **실제 교육은 (A) 임포트**를 기본으로 하고, (B) 생성은 "Genie Code로 이런 데이터를 만들 수 있다"는 **이해·시연용**으로 함께 다룹니다.

| | (A) 샘플 데이터셋 임포트 — ★ 실제 교육 기본 | (B) Genie Code로 직접 생성 — 시연/이해용 |
| - | - | - |
| **무엇** | 강사가 미리 만든 동일 데이터셋을 빠르게 로드 | 프롬프트로 데이터를 즉석 생성 |
| **왜** | 40명 동시 생성 시 Rate Limit·시간·**참가자별 편차** 회피, 이후 모듈 결과가 모두 재현됨 | Genie Code의 데이터 생성 역량 체감, 원리 이해 |
| **소요** | 수 분 (한 번의 로드) | 테이블당 수십 초\~수 분 × 17 |
| **진행** | 아래 **Part A** 프롬프트 1\~2개 실행 | 마스터 1\~2개만 실제 생성 후, 나머지는 **Part B** 프롬프트를 읽으며 이해 |

> 💡 강사는 사전에 Part B 프롬프트로 데이터셋을 **1회 생성**하고 `parquet`로 공유 볼륨(또는 Delta Sharing/Marketplace)에 올려둡니다. 참가자는 Part A로 임포트만 하면 됩니다.

***

## Part A: 샘플 데이터셋 임포트 (실제 교육 기본)

> **사전 조건**: 시드 데이터를 확보하는 방법은 세 가지입니다.
>
> * **(방식 0) 아래 다운로드 링크의 zip**
> * (방식 1) 강사가 공유한 볼륨의 parquet
> * (방식 2) Delta Sharing/Marketplace
>
> 가장 간단한 **방식 0**을 권장합니다.

### 방식 0 — 시드 데이터 zip 다운로드 후 임포트 (가장 간단·자립형) ★

별도 공유 볼륨이나 Delta Share 없이, 아래 압축 파일 하나만 받으면 됩니다.

> ℹ️ **모듈 0에서 이미 적재했다면 이 단계는 건너뛰고 [임포트 검증](#임포트-검증)만 확인하세요.** 방식 0은 [00. Genie Code 설정](00-genie-code-intro-setup)의 '시드 데이터 다운로드 & 적재'와 동일한 작업입니다 (중복 실행 방지).

> **Unity Catalog Volume**은 zip·PDF 같은 파일을 카탈로그 거버넌스 아래 두는 파일 저장 공간입니다. 시드 zip을 여기 올려 두면 참가자 모두 동일한 경로로 접근할 수 있어, 이번 임포트의 시작점으로 씁니다.

> 📦 **다운로드**: [ccm\_factory\_seed.zip](https://github.com/SimyungYang/dbx-gitbook/releases/download/ccm-seed-v1/ccm_factory_seed.zip) — Bronze 17테이블 parquet, 약 **60MB** (압축 내부 구조: `ccm_factory/<table>/part.parquet`). 고정 시드로 생성돼 모든 참가자가 **동일한 데이터**로 시작합니다.

**1단계 —** zip을 워크스페이스 볼륨에 바로 내려받기 (권장). 로컬 다운로드→업로드는 브라우저·용량 제약이 있으니, Genie Code가 URL에서 볼륨으로 직접 받게 합니다.

```
아래 zip 파일을 시드 데이터로 쓰려고 해. ccm_factory_<본인ID>.bronze.raw_files 볼륨에 바로 다운로드해줘.
https://github.com/SimyungYang/dbx-gitbook/releases/download/ccm-seed-v1/ccm_factory_seed.zip
```

> 대안(직접 다운로드가 막히면): 위 링크를 로컬에 받은 뒤 Catalog Explorer → `bronze.raw_files` 볼륨 → **Upload** 로 올립니다.

**2단계 —** 압축을 풀고 구조 확인.

```
방금 볼륨에 받은 ccm_factory_seed.zip 을 풀어서 ccm_factory/ 아래 테이블별 parquet 폴더 17개가 있는지 목록으로 보여줘.
```

**3단계 —** parquet → Delta 17개 테이블로 로드.

```
풀린 각 parquet 폴더(ccm_factory/<table>/)를 읽어서 ccm_factory_<본인ID>.bronze 스키마에 동일 이름의 Delta 테이블 17개로 CREATE OR REPLACE TABLE 저장해줘.
```

**4단계 —** 코멘트 보완과 확인.

```
테이블/컬럼에 COMMENT가 없으면 의미에 맞게 달아주고, 완료 후 ccm_factory_<본인ID>.bronze 의 17개 테이블 row count를 표로 보여줘.
```

> 💡 이 시드에는 결측·중복·이상치·참조무결성 위반 등 **의도적 데이터 품질 이슈**가 심어져 있습니다 ([02. EDA](02-eda)·[03. 파이프라인](03-transformation-pipeline)에서 찾아내고 정제하는 실습 소재). 정상입니다.

### 방식 1 — 공유 볼륨의 parquet 로드

**1단계 —** 소스와 타겟만 알려주고 시작.

```
공유 볼륨의 카메라 모듈 공장 시드 데이터를 내 카탈로그로 임포트하려고 해. 소스는 /Volumes/main/shared/workshop_seed/ccm_factory/ (하위에 테이블별 parquet 폴더 17개), 타겟은 ccm_factory_<본인ID>.bronze 스키마야.
```

**2단계 —** 저장 방식을 지정.

```
각 parquet 폴더를 읽어서 동일한 이름의 Delta 테이블 17개로 CREATE OR REPLACE TABLE 저장해줘.
```

**3단계 —** 코멘트 보존과 확인을 추가.

```
원본 스키마/컬럼 코멘트는 최대한 보존하고, 없으면 테이블 코멘트를 달아줘. 완료 후 17개 테이블의 row count를 표로 보여줘.
```

### 방식 2 — Delta Sharing / Marketplace 공유 카탈로그에서 복제

**1단계 —** 복제 대상을 지정.

```
Delta Sharing으로 공유된 카탈로그 <shared_catalog>.ccm_seed 의 bronze 테이블 17개를 내 ccm_factory.bronze 로 복제(CTAS)해줘.
```

**2단계 —** 확인을 추가.

```
완료 후 각 테이블 row count를 확인해줘.
```

### 임포트 검증

```
ccm_factory.bronze 스키마의 테이블 17개가 모두 로드됐는지,
각 테이블 row count와 참조 무결성(serial_id/equipment_id/material_lot_id)이 정상인지 요약해줘.
```

> 임포트가 끝났으면 [데이터 생성 후 종합 검증](01-data-verification)으로 건너뛰거나, 바로 [02. EDA](02-eda)로 진행할 수 있습니다.
> Genie Code의 데이터 생성 능력을 직접 보고 싶으면 아래 **Part B**를 진행하세요.

***

## Part B: Genie Code로 직접 생성 (시연/이해용)

아래는 강사가 시드 데이터를 만들 때 사용한 실제 프롬프트이자, 참가자가 "Genie Code로 이렇게 만들 수 있다"를 체감하는 자료입니다. **마스터 1\~2개(equipment\_master 등)만 실제로 실행**해 보고, 나머지는 프롬프트를 읽으며 원리를 이해하는 것을 권장합니다.

각 테이블 프롬프트를 그대로 복사·붙여넣으면 PySpark 기반 생성 코드가 자동으로 만들어집니다.

***

## 데이터 아키텍처 전체 구조

```
catalog: ccm_factory
└── bronze (17개 테이블)
    ├── [Master]     ccm_factory.bronze.equipment_master            300
    ├── [Master]     ccm_factory.bronze.product_master              60
    ├── [Master]     ccm_factory.bronze.material_lot_master         20,000
    ├── [Production] ccm_factory.bronze.work_orders                 15,000
    ├── [Production] ccm_factory.bronze.production_events           400,000
    ├── [Production] ccm_factory.bronze.traceability                500,000
    ├── [Process]    ccm_factory.bronze.smt_placement_logs          300,000
    ├── [Process]    ccm_factory.bronze.dispensing_process          200,000
    ├── [Process]    ccm_factory.bronze.reflow_profiles             60,000
    ├── [Process]    ccm_factory.bronze.active_alignment            250,000
    ├── [Equipment]  ccm_factory.bronze.equipment_sensor_logs       300,000
    ├── [Equipment]  ccm_factory.bronze.equipment_downtime          25,000
    ├── [Inspection] ccm_factory.bronze.aoi_inspection              300,000
    ├── [Inspection] ccm_factory.bronze.final_image_test            250,000
    ├── [Inspection] ccm_factory.bronze.defect_events               120,000
    ├── [Environment]ccm_factory.bronze.cleanroom_environment       150,000
    └── [Field]      ccm_factory.bronze.field_returns               10,000
                                            ─────────────
                                            합계 ~3,000,000건
```

### Part B 생성 순서

> **17개를 한 번에 만들 필요 없습니다.**
>
> * 마스터 3개(equipment\_master → product\_master → material\_lot\_master)를 먼저 만들고, 나머지는 카테고리별로 진행하세요.
> * 모든 로그가 이 마스터들을 참조합니다.
> * 시연에서는 **마스터 1\~2개만 실제 실행**하고 나머지 프롬프트는 읽으며 이해하는 것으로 충분합니다.

***


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.