10

파이프라인 조립

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에 직접 쿼리 한 번 날린 순간, 그 그래프는 스크립트로 재생성할 수 없게 됩니다.

실습

  1. 다섯 단계를 각각 함수로 분리하고 CLI 인자로 개별 실행 가능하게 만듭니다.
  2. 전체를 두 번 연속 실행해 결과가 같은지 확인합니다(파이프라인 수준 멱등성).
  3. 3단계만 다시 실행해 4~5단계가 정상 동작하는지 봅니다.

이 모듈의 신규 용어

용어
ETLExtract-Transform-Load. 추출·변환·적재의 데이터 파이프라인
멱등성 (idempotency)같은 작업을 여러 번 해도 결과가 같은 성질. 재적재 안전의 조건
MERGECypher의 "없으면 생성, 있으면 재사용". 반드시 키만으로 매칭할 것
결정적 ID같은 입력이면 항상 같은 값이 나오는 식별자(해시 기반). 이벤트 멱등성의 열쇠
UNWIND리스트를 행으로 풀어 배치 처리하는 Cypher 구문
스테이징 (staging)적재 직전, 그래프 모양으로 변환된 중간 산출물 단계
load-then-cleanDB에 넣고 나서 청소하는 반(反)패턴. 문지기는 적재 전에
LoadBatch적재 이력 노드. 데이터 신선도를 그래프가 스스로 증언하게 하는 장치
에디터 로딩 중...
용어