-
농산물 공공데이터 수집 시 주의할 점공부/Tip 2025. 7. 5. 01:49
회사에서 농산물 공공데이터를 활용한 기능을 개발하게 되었습니다. 데이터 관련 전문 인력이 없는 상황에서 직접 데이터를 분석하고 검증하며 작업을 진행해야 했던 과정에서 겪었던 고충들을 공유하고자 합니다. 동일한 공공데이터 API를 사용하실 분들께 도움이 되었으면 합니다.
총 2가지의 공공데이터를 수집하고 있습니다.
1. 한국농수산식품유통공사_전국 공영도매시장 정산정보(링크)
2. 한국농수산식품유통공사_전국 공영도매시장 실시간 경매정보(링크)
공공데이터를 활용하는 방법은 여러 블로그에도 나와있고, 실제로 공공데이터에도 잘 작성이 된 상황입니다.
다만 공공데이터를 이용하는데 제한적인 부분들이 존재합니다.

- 기본 트래픽: 데이터 활용신청 시 1일 1만 번 호출 가능
- 트래픽 증가: 필요시 증가 신청을 통해 1일 10만 번까지 확대 가능
- 운영계정 전환: 조건이 까다롭지 않으니 현재 서비스와 사용 목적을 명확히 작성하면 승인 가능
공공데이터에 데이터를 요청하면 데이터를 받는 과정이 쉽지 않을 수 있지만 받을 수 있습니다. 다만, 민감정보가 있는 데이터들은 제공되지 않는다는 점을 참고하시기 바랍니다.
이후부터 작성하는 내용은 제가 사용한 전국 공영도매시장 실시간 경매정보에 관련된 내용입니다.
처음에는 데이터 구조가 잘 정리되어 있어 활용하기 편할 것이라고 생각했습니다. 하지만 실제 사용 과정에서 다음과 같은 문제들을 발견했습니다.
겪은 문제
1. 유니크 키 부재로 인한 멱등성 문제
- 문제: 해당 데이터에는 유니크 키가 없어 멱등성을 보장하지 않음
- 영향: 중복 데이터 처리 로직 구현이 복잡해짐
2. 동일한 낙찰 일시를 가진 중복 데이터 존재
- 문제: 낙찰 일시가 존재하지만, 모든 값이 동일하고 낙찰일시마저 같은 데이터가 있음
- 영향: 낙찰 일시만으로는 중복 데이터 구분이 불가능
3. 낙찰 일시와 정산일자 불일치
- 문제: 낙찰 일시는 오늘이지만, 정산일자는 내일인 경우 발생
- 영향: 날짜 기준 데이터 처리 시 혼란 발생
4. 경매 순번의 유니크성 문제
- 문제: 경매 순번(auction_seq)이 존재하지만 유니크하지 않음
- 영향: 경매 순번을 기준으로 한 중복 제거 로직 실패
5. 실시간 데이터의 지연 문제
- 문제:
- 실시간 경매정보라고 하지만 실제로는 1시간 전 경매 데이터가 제공됨
- 낙찰이 1시간 전에 이뤄져도 바로 API에 반영되지 않음
- 영향: 낙찰 일시를 기준으로 한 데이터 수집 로직이 부정확해짐
6. 날짜/시간 기반 조회 불가
- 문제: 실시간 경매정보 API는 날짜와 시간으로 데이터 요청이 불가능
- 영향: 특정 기간 데이터 수집 시 제약이 큼
테이블 설계를 하고 수집을 하는 과정에서 중복데이터를 수집하지 않기 위한 방법을 생각하며 로직을 몇 번이나 수정했는지 모르겠습니다. 이번에는 잘된다고 생각한 게 계속 허점들이 존재하는 상황들이 발생해서 몇 번의 수정을 진행하였습니다.
단순 요청하는 것이 아닌 중복 데이터 처리를 위한 필터링 조건을 설정하는 것이 어려웠습니다.
시도했던 방법
- 경매 순번을 유니크로 지정: 유니크하지 않다는 것을 확인 후 포기
- 마지막 수집 낙찰 일시 기준 필터링: 데이터 지연 문제로 인해 누락 발생
- 특정 컬럼 조합을 유니크 Index로 지정: 여러 번의 시행착오를 통해 점진적 개선
가장 어려웠던 부분
데이터 검증 과정이 가장 시간이 많이 걸리고 어려웠습니다.
- 공공데이터 포털에서 직접 조회한 데이터와 수집한 데이터의 정합성을 확인하는 과정
- 중복 데이터 필터링 로직을 수정할 때마다 전체 데이터를 재검증해야 하는 부담
- 데이터 누락이나 중복을 발견했을 때 원인을 파악하는 과정
현재 기준(25-07-05)으로 위와 같은 문제들이 존재합니다. 실시간 경매정보 API를 활용하실 분들은 이러한 특성들을 미리 고려하여 개발 계획을 세우시면 시행착오를 줄일 수 있을 것입니다.
특히 유니크 키 부재와 실시간 데이터의 지연 문제는 반드시 염두에 두시고 중복 데이터 처리 로직을 설계하시기 바랍니다.
25-07-12 추가 사항
농산물 정산정보를 지속적으로 확인하면서 알게 된 사실이 있습니다. 정산정보도 12시가 지나면 전체 데이터가 자동으로 등록이 되는 것이 아니라는 사실을 파악하였습니다.
이유는 데이터를 지속적으로 확인하는 과정에서 조회된 데이터와 싱크가 맞지 않는 것을 확인하였고, 공공데이터에 확인해본 결과 데이터가 늦게 추가되거나 수정되는 일이 계속 존재하며, 도매시장에 있는 법인마다 계속 변경이 일어날 수 있다는 것입니다. 제공받는 데이터에도 유니크 값이 존재하지 않으며, 필터링을 할 수 있는 부분을 찾기 어렵다는 것입니다.
혹시라도 사용하고자 하는 분이 계시다면 이점도 유의하셨으면 합니다.'공부 > Tip' 카테고리의 다른 글
[Google] Apps script를 DB처럼 사용하기(doPost, doGet) (0) 2024.10.28 [Google] App Script를 이용하여 Spread Sheets 자동화 (0) 2024.06.02 [VS Code] 원격 서버에 접속하기 (0) 2023.07.24 scp 명령어로 로컬과 서버(원격)로 파일 전송 (0) 2023.03.04 배열의 중복된 요소 제거 (0) 2021.08.26