데이터 엔지니어링에서는 주기적으로 데이터를 수집(Extract), 변환(Transform), 적재(Load) 하는 ETL 파이프라인을 구축합니다. 하지만 단계가 늘어나고 로직이 복잡해질수록 코드 관리가 점점 어려워집니다.
특히 다음과 같은 문제가 자주 발생합니다.
- 단계별 로직을 if-elif로 처리하면서 코드가 복잡해짐
- 단계 추가/변경 시 기존 코드를 수정해야 함
- 파이프라인 전체를 한눈에 파악하기 어려움
이때 Enum을 활용하면 단계 정의와 로직 분리를 깔끔하게 정리할 수 있습니다.
1. ETL 단계를 Enum으로 정의
ETL 파이프라인에서 고정적으로 사용되는 단계들을 Enum으로 관리합니다.
import enum
class ETLStep(enum.Enum):
EXTRACT = enum.auto()
TRANSFORM = enum.auto()
LOAD = enum.auto()
✔ Int나 문자열 대신 Enum을 사용해 단계의 의미가 명확해짐
✔ IDE 자동완성 → 실수 방지
✔ 파이프라인 단계가 늘어나도 구조 유지 가능
2. 단계별 로직 분리
각 단계는 독립적인 함수로 구현합니다.
이렇게 해야 유지보수도 쉽고 테스트도 편합니다.
def extract():
print("Extracting data...")
def transform():
print("Transforming data...")
def load():
print("Loading data...")
3. Enum과 단계별 로직을 매핑
핵심은 Enum을 기준으로 기능을 연결하는 매핑 구조입니다.
ETL_RUNNER = {
ETLStep.EXTRACT: extract,
ETLStep.TRANSFORM: transform,
ETLStep.LOAD: load
}
✔ if-elif 없이 단계별 기능 연결
✔ 새로운 단계가 추가되더라도 매핑만 추가하면 됨
✔ 전체 ETL 구조를 한눈에 파악 가능
4. ETL 실행기 만들기
Enum을 입력받아 매핑된 함수를 호출하는 구조입니다.
def run_step(step: ETLStep):
ETL_RUNNER[step]()
사용은 이렇게 간단합니다:
run_step(ETLStep.EXTRACT)
run_step(ETLStep.TRANSFORM)
run_step(ETLStep.LOAD)
정리하면
데이터 엔지니어링에서는 파이프라인이 커질수록
“단계 관리”가 어려워집니다.
Enum을 활용한 ETL 단계 설계는
- 코드 구조를 단순화하고
- 단계 추가/변경을 쉽게 만들며
- 파이프라인 안정성을 높이는
가장 실용적인 설계 방법 중 하나입니다.
'파이썬 > 기초 프로그래밍' 카테고리의 다른 글
| SQLAlchemy INSERT 구문에서 values 딕셔너리는 어떻게 매핑될까 (0) | 2026.02.03 |
|---|---|
| 파이썬에서 모듈 전역 변수는 왜 함수 파라미터 없이도 사용할 수 있을까 (0) | 2026.02.03 |
| 파이썬 Descriptor를 활용한 속성 제어 예제 (0) | 2025.09.15 |
| 파이썬 Descriptor와 Property 비교 예제 (0) | 2025.09.15 |
| 파이썬 메타클래스로 커스텀 리스트 만들기 (0) | 2025.09.15 |