10분
파이프라인 조립
ETL 파이프라인
파이프라인 조립
ETL 파이프라인 > ETL 파이프라인
학습 목표
- 다섯 단계를 하나의 실행 순서로 묶는다
- 단계별 독립 실행 가능성을 확보한다
파이프라인 전체 조립
python pipeline.py --source portmis_arrival --file raw/arrival_202608.csv
1. profile() → reports/arrival_202608.json (앞 모듈 프로파일러)
2. validate_l2() → clean/ + rejected/ (L2 문지기)
3. transform() → staged/ (매핑 시트 적용: UTC 변환, 교차사전, 결정적 ID 발급)
4. load() → Neo4j (멱등 MERGE, 배치)
5. metrics() → 파생 지표 재계산 + LoadBatch 기록두 가지 요구
각 단계는 독립 실행 가능해야 합니다. 매핑 규칙을 하나 고쳤을 때 3단계만 다시 돌릴 수 있어야 합니다. 전체를 처음부터 돌려야 한다면 실험 비용이 너무 비싸져 아무도 개선하지 않게 됩니다.
순서서 전체를 코드로 고정합니다. ⚠️ "손으로 한 번 만진 파이프라인"은 재현 불가능한 파이프라인입니다. 급해서 DB에 직접 쿼리 한 번 날린 순간, 그 그래프는 스크립트로 재생성할 수 없게 됩니다.
실습
- 다섯 단계를 각각 함수로 분리하고 CLI 인자로 개별 실행 가능하게 만듭니다.
- 전체를 두 번 연속 실행해 결과가 같은지 확인합니다(파이프라인 수준 멱등성).
- 3단계만 다시 실행해 4~5단계가 정상 동작하는지 봅니다.
이 모듈의 신규 용어
| 용어 | 뜻 |
|---|---|
| ETL | Extract-Transform-Load. 추출·변환·적재의 데이터 파이프라인 |
| 멱등성 (idempotency) | 같은 작업을 여러 번 해도 결과가 같은 성질. 재적재 안전의 조건 |
| MERGE | Cypher의 "없으면 생성, 있으면 재사용". 반드시 키만으로 매칭할 것 |
| 결정적 ID | 같은 입력이면 항상 같은 값이 나오는 식별자(해시 기반). 이벤트 멱등성의 열쇠 |
| UNWIND | 리스트를 행으로 풀어 배치 처리하는 Cypher 구문 |
| 스테이징 (staging) | 적재 직전, 그래프 모양으로 변환된 중간 산출물 단계 |
| load-then-clean | DB에 넣고 나서 청소하는 반(反)패턴. 문지기는 적재 전에 |
| LoadBatch | 적재 이력 노드. 데이터 신선도를 그래프가 스스로 증언하게 하는 장치 |
에디터 로딩 중...