LabHub
배우기 러닝패스 코스

顧客データを扱う

再利用できる検証器を作る

LabHub 에서 이어서 보기

한국어 원문으로 표시합니다.

목표

한 번 쓰고 버리는 정제 스크립트가 아니라, 매주 도착하는 파일을 자동으로 판정하는 검증기를 만들 수 있게 됩니다.

왜 중요한가

검증기의 진짜 시험은 깨진 파일이 아니라 정상 파일입니다. 규칙이 너무 빡빡해서 멀쩡한 파일도 실패시키면, 사람이 매주 "또 그거겠지" 하며 무시하기 시작하고, 두 달 뒤 진짜 문제가 왔을 때도 똑같이 무시합니다. 그 시점에는 검증기가 있는 것이 없는 것보다 나쁩니다 — 있다고 믿게 만들면서 실제로는 아무것도 막지 못하기 때문입니다.

그래서 검증기는 항상 두 방향으로 시험합니다. 정상 파일에 통과하는가, 깨진 파일에 실패하는가. 그리고 결과는 종료 코드로 말해야 합니다. 통과면 0, 실패면 0 이 아닌 값. 그래야 배치 파이프라인에 그대로 꽂힙니다.

/opt/data/validate/ 에 네 개의 파일이 있습니다. 세 개는 서로 다른 방식으로 깨져 있고 하나는 멀쩡합니다. 모든 파일의 헤더는 id,customer,amount,region,date 입니다.

규칙 세 가지

단계

  1. /root/validate 디렉터리를 만드세요.
  2. bad_schema.csv 의 형식 위반 행 수를 /root/validate/schema_bad.txt 에 적으세요.
  3. bad_dupe.csv 에서 중복으로 버려야 할 행 수를 /root/validate/dupe_rows.txt 에 적으세요.
  4. bad_range.csv 의 범위 위반 행 수를 /root/validate/range_bad.txt 에 적으세요.
  5. good.csv 의 위반 행 수를 /root/validate/good_bad.txt 에 적으세요.
  6. 네 값의 합을 /root/validate/total_bad.txt 에 적으세요.
  7. /root/validate/validate.sh 를 만드세요. 첫 번째 인자로 CSV 경로를 받고, 위반이 하나도 없으면 종료 코드 0, 하나라도 있으면 0 이 아닌 코드로 끝나야 합니다.
  8. /root/validate/report.md 에 네 파일의 이름과 각각의 위반 건수, 그리고 총합을 적으세요.

참고

작업 디렉터리 만들기

/root/validate 디렉터리를 만드세요.

/root/validate 아래에 결과를 모읍니다.

형식 위반 행 세기

bad_schema.csv 의 형식 위반 행 수를 /root/validate/schema_bad.txt 에 적으세요.

bad_schema.csv 에서 필드 수, 빈 고객명, 비정수 금액 셋 중 하나라도 어긴 행의 수입니다.

중복 행 세기

bad_dupe.csv 에서 중복으로 버려야 할 행 수를 /root/validate/dupe_rows.txt 에 적으세요.

bad_dupe.csv 에서 같은 id 가 다시 나온 행의 개수입니다. 처음 나온 행은 세지 않습니다.

범위 위반 행 세기

bad_range.csv 의 범위 위반 행 수를 /root/validate/range_bad.txt 에 적으세요.

bad_range.csv 에서 amount 가 1 이상 10000000 이하를 벗어난 행입니다. 0 도 위반입니다.

정상 파일 확인하기

good.csv 의 위반 행 수를 /root/validate/good_bad.txt 에 적으세요.

good.csv 에는 위반이 없어야 합니다. 여기서 0 이 안 나오면 검증기가 과탐지하는 것입니다.

전체 위반 합계 내기

네 값의 합을 /root/validate/total_bad.txt 에 적으세요.

네 파일에서 나온 수를 모두 더합니다.

검증 스크립트 만들기

/root/validate/validate.sh 를 만드세요. 첫 번째 인자로 CSV 경로를 받고, 위반이 하나도 없으면 종료 코드 0, 하나라도 있으면 0 이 아닌 코드로 끝나야 합니다.

파일 경로를 인자로 받아, 통과면 종료 코드 0, 위반이 있으면 0 이 아닌 값으로 끝나야 합니다.

검증 리포트 쓰기

/root/validate/report.md 에 네 파일의 이름과 각각의 위반 건수, 그리고 총합을 적으세요.

네 파일 이름과 각각의 위반 건수, 그리고 총합이 들어가야 합니다.