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

# 첫 번째 실습

> 이 문서는 **[무료 체험 시작하기](/training/02-databricks-overview/getting-started-trial)** 의 일부입니다.

Workspace에 접속했다면, 간단한 실습으로 Databricks를 체험해 보겠습니다.

## 1. 클러스터 생성 및 시작

1. 좌측 메뉴에서 **Compute** 클릭
2. **Create Compute** 클릭
3. 클러스터 이름 입력 (예: `my-first-cluster`)
4. 나머지는 기본값 유지 → **Create Compute** 클릭
5. 약 3\~5분 대기 (상태가 "Running"으로 변경되면 완료)

## 2. 노트북 생성

1. 좌측 메뉴에서 **+ New** → **Notebook** 클릭
2. 이름: `hello-databricks`
3. 기본 언어: **Python**
4. 방금 만든 클러스터를 연결

## 3. 코드 실행

```python theme={null}
# 셀 1: Spark 버전 확인
print(f"Spark 버전: {spark.version}")
print("Hello, Databricks!")
```

```python theme={null}
# 셀 2: 샘플 데이터 생성 및 분석
from pyspark.sql.functions import col, sum, avg, count

orders = spark.createDataFrame([
    (1, "노트북", "전자제품", 1200000, "2025-03-01"),
    (2, "키보드", "전자제품", 89000, "2025-03-01"),
    (3, "운동화", "패션", 159000, "2025-03-02"),
    (4, "텀블러", "생활용품", 25000, "2025-03-02"),
    (5, "모니터", "전자제품", 450000, "2025-03-03"),
], ["order_id", "product", "category", "price", "order_date"])

summary = orders.groupBy("category").agg(
    count("*").alias("주문건수"),
    sum("price").alias("총매출"),
    avg("price").alias("평균단가")
).orderBy(col("총매출").desc())

display(summary)
```

## 4. SQL로 분석

```python theme={null}
orders.createOrReplaceTempView("orders")
```

```sql theme={null}
%sql
SELECT
    order_date AS 주문일,
    COUNT(*) AS 주문건수,
    FORMAT_NUMBER(SUM(price), 0) AS 총매출
FROM orders
GROUP BY order_date
ORDER BY order_date
```

결과 아래 **차트 아이콘**을 클릭하고 Bar Chart를 선택하면 시각화됩니다.

## 5. Delta Lake 타임 트래블 체험

```python theme={null}
orders.write.mode("overwrite").saveAsTable("main.default.trial_orders")
```

```sql theme={null}
%sql
-- 데이터 수정
UPDATE main.default.trial_orders SET price = 999000 WHERE product = '노트북';

-- 변경 이력 확인
DESCRIBE HISTORY main.default.trial_orders;

-- 수정 전 데이터 조회 (버전 0 = 최초 상태)
SELECT * FROM main.default.trial_orders VERSION AS OF 0 WHERE product = '노트북';
-- price가 원래의 1200000으로 나옵니다!
```

> 이것이 Delta Lake의 **타임 트래블** 기능입니다. 실수로 데이터를 잘못 수정해도 과거 버전으로 되돌릴 수 있습니다.

## 6. 샘플 데이터셋 활용 (Full Trial)

```sql theme={null}
%sql
SELECT * FROM samples.nyctaxi.trips LIMIT 10;
SELECT * FROM samples.tpch.orders LIMIT 10;
```

## 7. Databricks Assistant (AI 코딩 도우미)

Notebook에서 자연어로 "이 DataFrame에서 카테고리별 평균 가격을 구해줘"라고 입력하면 코드를 자동 생성합니다.
