Devin.KR

교통과 날씨를 안전하게 결합

키와 관측 단위를 맞춰 교통·날씨 결합 표를 만듭니다.

진도 0%

레슨

  1. 기본키와 관측 단위

    지역·날짜 키가 유일한지 조회하고 중복 키 목록을 반환합니다.

  2. 조인과 미매칭 행

    지역 코드 대응표를 거쳐 LEFT JOIN하고 날씨 미매칭 행을 별도로 반환합니다.

  3. 합계가 부풀어 오르는 이유

    관측소별 날씨를 일별 지역 단위로 먼저 집계하여 다대다 조인의 행 증가를 재현하고 수정합니다.

  4. 결합 표의 계약

    결합 SQL과 키 제약을 저장하고 조인 전후 행 수·합계·미매칭 수를 검사합니다.

교통과 날씨를 안전하게 결합 결과물 통합

m02-sql-summary의 solution 전체와 daily.csv를 이어받습니다. 합성 관측소 날씨와 지역 코드 대응표를 추가하여 누락을 보존하는 결합 표와 감사 기록을 만듭니다.

요구사항

  • 이전 원본·메타데이터·계약 테스트·daily SQL을 보존하고 queries/join.sql을 확장합니다.
  • 날씨 원본 키는 지역·날짜·관측소이며 중복을 거부합니다. 지역·날짜별 유효 강수량의 같은 가중치 평균과 전체·유효 관측소 수를 계산합니다.
  • 대응표 region 유일성을 검사하고 daily 기준 두 LEFT JOIN으로 mapping_missing·weather_missing·rain_missing을 구분합니다.
  • joined.csv와 join-audit.json에 전후 행 수·합계·상태별 누락 수를 기록하고 입력 바이트와 재실행 출력을 보존합니다.

완료 기준

  • python3 -m unittest discover -s tests -v: 기존19개와 결합10개 총29개 통과, starter는 새 테스트 일부 실패합니다.
  • 관측소 여러 곳·NULL과0·대응 누락·날씨 빈 표·교통 빈 표·각 입력 키 중복·음수와 비유한 강수 fixture를 검사합니다.
  • python3 pipeline.py 후 python3 join_pipeline.py: 교통 전후6행·390대, 날씨 행 누락1·강수값 결측1, A/9월1일 평균3mm입니다.
python3 -m unittest discover -s tests -v
미션 시작 코드
모범 답안모범 답안 내려받기

검토 기준

  • 판단 근거와 제외 조건을 데이터와 연결해 설명합니다.
  • 앞 단계 산출물을 재사용하고 원본을 보존합니다.