TT Lab
시작하기
배우기 러닝패스 코스

고객 데이터 다루기

깨진 주문 CSV 정제하기

TT Lab 에서 이어서 보기

목표

고객이 준 깨진 CSV 를 규칙대로 정제하고, 무엇을 왜 버렸는지 숫자로 설명할 수 있게 됩니다.

왜 중요한가

정제 스크립트에서 가장 위험한 것은 조용히 지우는 것입니다. 고객은 나중에 "왜 우리 매출이 이것밖에 안 되죠" 라고 묻고, 그때 버린 행의 수와 이유를 말할 수 없으면 그 프로젝트의 모든 숫자가 의심받습니다. 그래서 이 실습에는 버린 행을 세는 단계가 따로 있습니다.

또 하나. 정제 규칙은 엔지니어가 혼자 정하는 것이 아닙니다. "금액이 음수인 행은 환불로 보이는데 제외할까요, 따로 셀까요" 를 업무 담당자에게 물어야 합니다. 이 실습에서는 규칙을 미리 정해 주지만, 현장에서 그 규칙이 어디서 오는지는 기억해 두세요.

유효한 행의 조건 — 아래 셋을 모두 만족해야 합니다.

단계

  1. /root/output 을 만들고 /opt/data/orders.csv 를 정제한 결과를 /root/output/clean.csv 로 저장하세요.
  2. clean.csv 의 첫 줄은 원본 헤더 id,customer,amount,date 그대로여야 합니다.
  3. 유효한 행만 남겨 clean.csv 가 헤더 포함 19줄이 되게 하세요.
  4. 남은 행이 위 세 조건을 모두 만족하는지 확인하세요.
  5. 버린 행의 개수를 /root/output/bad_count.txt 에 적으세요.
  6. 정제 후 남은 행의 금액 합계를 /root/output/total.txt 에 적으세요.
  7. 금액 합계가 가장 큰 날짜를 /root/output/top_day.txt 에 YYYY-MM-DD 형태로 적으세요.
  8. /root/output/by_day.csv 를 만드세요. 첫 줄은 date,total, 이후 날짜당 한 줄로 그날의 금액 합계를 적습니다.

참고

정제 결과 파일 만들기

/root/output 을 만들고 /opt/data/orders.csv 를 정제한 결과를 /root/output/clean.csv 로 저장하세요.

/root/output 디렉터리를 만들고 그 안에 clean.csv 를 만드세요. 원본은 /opt/data/orders.csv 입니다.

헤더 보존하기

clean.csv 의 첫 줄은 원본 헤더 id,customer,amount,date 그대로여야 합니다.

원본의 첫 줄을 그대로 남겨야 합니다. 정제 대상은 데이터 행뿐입니다.

유효 행만 남기기

유효한 행만 남겨 clean.csv 가 헤더 포함 19줄이 되게 하세요.

규칙 세 가지를 모두 만족하는 행만 남깁니다. 헤더를 포함해 19줄이 되어야 합니다.

남은 행이 모두 규칙을 만족하는지 확인

남은 행이 위 세 조건을 모두 만족하는지 확인하세요.

필드 수, 빈 고객명, 음수·비숫자 금액 세 가지를 각각 확인하세요. 하나라도 남아 있으면 실패합니다.

버린 행 수 세기

버린 행의 개수를 /root/output/bad_count.txt 에 적으세요.

조용히 지우는 정제는 시한폭탄입니다. 원본 데이터 행 수에서 남은 행 수를 빼면 됩니다.

금액 합계 구하기

정제 후 남은 행의 금액 합계를 /root/output/total.txt 에 적으세요.

정제 후 남은 행의 금액만 더합니다. awk 의 필드 구분자 옵션을 쓰면 한 줄로 끝납니다.

최대 매출일 찾기

금액 합계가 가장 큰 날짜를 /root/output/top_day.txt 에 YYYY-MM-DD 형태로 적으세요.

건수가 아니라 금액 합계 기준입니다. 날짜별로 금액을 누적한 뒤 가장 큰 날을 고르세요.

일자별 집계표 만들기

/root/output/by_day.csv 를 만드세요. 첫 줄은 date,total, 이후 날짜당 한 줄로 그날의 금액 합계를 적습니다.

date,total 헤더로 시작하고 날짜당 한 줄입니다. 날짜순으로 정렬하면 읽기 좋습니다.