Airflow를 써봤다면 익숙한 패턴이 있다. 태스크 순서, 의존성, 재시도, 모니터링을 전부 코드로 직접 관리해야 했다. DLT는 그걸 선언만 하면 알아서 해준다.
기존 방식 vs DLT
# 기존 방식 - 직접 다 관리
df = spark.read.table("raw_orders")
df_clean = df.filter(col("amount") > 0)
df_clean.write.format("delta").saveAsTable("clean_orders")
# DLT 방식 - 선언만
@dlt.table
def clean_orders():
return dlt.read("raw_orders").filter(col("amount") > 0)
| 기존 방식 | DLT | |
|---|---|---|
| 실행 순서 | 직접 관리 | 의존성 자동 파악 |
| Delta Table 생성 | 직접 생성 | 자동 생성 |
| 에러 처리 | 직접 구현 | 자동 모니터링 |
| 데이터 품질 검사 | 직접 구현 | Expectations로 선언 |
Bronze → Silver → Gold 패턴
DLT는 데이터를 3단계로 나눠서 관리한다.
[원천 데이터]
↓
[Bronze] 원본 그대로 저장
↓
[Silver] 필터링, 정제, 변환
↓
[Gold] 집계, 비즈니스 로직
↓
[분석가 / 대시보드]
| 단계 | 역할 | 예시 |
|---|---|---|
| Bronze | 원본 그대로 | Kafka에서 받은 JSON 그대로 |
| Silver | 정제 | amount > 0, null 제거 |
| Gold | 집계 | 일별 매출 합계 |
분석가로 일하면서 쿼리하던 테이블이 대부분 Gold 단계다.
Expectations (데이터 품질 검사)
@dlt.table
@dlt.expect("amount는 양수", "amount > 0") # 위반해도 저장, 기록만
@dlt.expect_or_drop("id는 null 아님", "id IS NOT NULL") # 위반하면 행 제거
@dlt.expect_or_fail("치명적 오류", "date IS NOT NULL") # 위반하면 파이프라인 중단
def silver_orders():
return dlt.read("bronze_orders")
| Expectation | 위반 시 |
|---|---|
expect |
기록만 남김 |
expect_or_drop |
해당 행 제거 |
expect_or_fail |
파이프라인 중단 |
실습 결과
원본 데이터 4행 중 amount가 음수인 행, order_date가 null인 행을 Silver에서 자동으로 걸러냈다.
| 단계 | 행 수 | 내용 |
|---|---|---|
| Bronze | 4행 | 원본 그대로 (잘못된 데이터 포함) |
| Silver | 2행 | 조건 미충족 2행 제거 |
| Gold | 1행 | 2026-08-01 총 매출 47,000 |
카탈로그 구조
Databricks는 데이터를 3단계로 관리한다.
Catalog (databricks_practice)
└── Schema (default)
├── bronze_orders
├── silver_orders
└── gold_daily_sales
테이블 풀네임: databricks_practice.default.silver_orders
DLT 실행 방법
DLT 코드는 일반 노트북에서 직접 실행하면 안 된다. Jobs & Pipelines에서 Pipeline을 만들고, 노트북을 소스로 연결해서 실행해야 한다.
1. Jobs & Pipelines → Pipeline 생성
2. Source code에 DLT 노트북 연결
3. Run pipeline으로 실행
4. Bronze → Silver → Gold 그래프 확인
DLT는 코드 디테일보다 개념이 중요하다. 어떤 상황에서 쓰는지, Expectations 중 어떤 걸 써야 하는지를 이해하는 것이 핵심이다. 다음은 Workflows다.
'공부를 하다 > Databricks' 카테고리의 다른 글
| Day 07. Databricks 아키텍처 + Notebooks + Git Folders (0) | 2026.08.24 |
|---|---|
| Day 06. Workflows — 파이프라인 자동화의 진화 (0) | 2026.08.01 |
| Day 04. Structured Streaming — 데이터가 흘러오는 걸 실시간으로 처리하기 (0) | 2026.07.28 |
| Day 03. Auto Loader — 새 파일이 오면 알아서 처리되는 구조 (0) | 2026.07.24 |
| Day 02. Delta Lake — 하둡 시절 불편함이 해결되는 순간 (0) | 2026.07.23 |