수집·변환·저장 분리
분석 코드를 파일 기반 ETL로 분리합니다.
진도 0%
레슨
- 실행 환경과 모듈 구성
로컬 가상환경에서 수집·변환·저장 모듈과 테스트를 구성하고 의존성을 기록합니다.
- 수집과 원본 보존
로컬 HTTP 모의 서버의 공개 데이터 응답을 받아 원본과 체크섬을 보존하고 시간 초과를 처리합니다.
- 입력 스키마 검증 함수
표준 입력 JSON에서 필수 열·타입·날짜·범위를 검사하고 오류 목록을 출력합니다.
- ETL 단계와 실패 경계
m04 정제 함수를 변환 단계로 재사용하고 로컬 SQLite 저장 전에 스키마 오류를 차단합니다.
수집·변환·저장 분리 결과물 통합
m06-visual-evidence 미션 solution 전체를 포함한 ZIP에서 시작합니다. 기존 60개 검사를 유지하며 파일 수집·정제·SQLite 전체 스냅샷 저장을 etl 패키지로 연결합니다.
요구사항
- m01~m06 산출물을 유지하면서 collect/transform/load 단계를 독립 함수로 분리합니다.
- 입력 스키마와 단계별 파일 경로·실행 순서를 pipeline.json에 기록합니다.
- 네트워크 없는 표본 실행을 기본으로 제공하고 실제 출처 수집은 선택 기능으로 둡니다.
- SQLite observations는 검증된 입력 전체로 교체합니다. 증분 누적·upsert는 다음 모듈 범위로 둡니다.
완료 기준
- 기본 검사 명령으로 기존 60개와 새 20개 총 80개 테스트 통과입니다. starter는 실제 DB 저장 검사가 실패합니다.
- 열 누락 입력은 load 호출 전에 실패하며 기존 DB 바이트와 입력 파일 체크섬을 유지합니다. 잘못된 날짜·키 충돌도 저장 전에 차단합니다.
- 기본 입력 6행의 영점과 NULL을 보존하고 재실행 후 같은 논리적 행을 유지합니다. pipeline.json의 실행 순서와 경로 겹침을 검사합니다.
- HTTP 오류·시간 초과·잘못된 JSON은 응답 주입 검사로 확인합니다. BOOTCAMP_HTTP=1 python3 -m unittest discover -s tests -v로 실제 127.0.0.1 모의 서버 통합 9개를 추가 실행합니다. 작성 샌드박스의 포트 권한 거부로 이 통합 검증은 PENDING입니다.
python3 -m unittest discover -s tests -v미션 시작 코드
모범 답안
모범 답안 내려받기검토 기준
- 판단 근거와 제외 조건을 데이터와 연결해 설명합니다.
- 앞 단계 산출물을 재사용하고 원본을 보존합니다.