티스토리 뷰

이전 편에서 놓치고 있던 세 가지 부분에 대해서 이야기를 했었는데 데이터 중간점검을 하는 도중 이상한 점이 발견되었다. 특정 버스의 데이터가 제대로 수집되고 있지 않다던지, 아침 시간대에 대충 알고 있는 버스 빈 자리 숫자와 수집된 데이터에 확연한 오차가 발생하고 있었던 것이다. 다시 유심히 경기버스의 데이터를 살펴보니 수집되는 데이터에 index가 고정이 아니라는 사실을 알 수 있었다. 예를 들어 보면 수집되는 데이터를 나타내는 busArrivalInfo 배열에는 32개의 버스 데이터 정보가 있는데 이 배열 안에 내게 필요한 버스 정보들이 있는 위치가 가변이라는 것이다. 예를 들어 A라는 버스가 이른 아침에는 6번 index에 있었지만 어느 시간이 되면 7번 index로 바뀌어 있는 것이다.

수집되는 데이터의 형태

 

데이터 안에는 버스번호도 포함되어 있었는데 굳이 특정 index를 버스번호로 매핑되도록 하드코딩으로 작성한게 큰 실수였다. 아무튼 이렇게 확인이 되었으니 다행으로 생각하고 코드 구조를 수정했다. 데이터 안에 있는 버스번호를 파싱해서 사용하도록 했고, 버스번호도 저장하도록 변경했다( 버스번호로 2층버스인지 여부를 확인할 수 있을듯 해서 남겼다 ). 특히 이번에 가장 크게 수정된 부분은 Google BigQuery를 도입한 것이다. 어차피 데이터가 일정 수준 이상 누적되면 분석을 해야 할 텐데 그 도구로 빅쿼리를 선택했다. 사실 어떤 데이터베이스를 사용해도 상관없지만, 빅쿼리를 튜토리얼이 아닌 다른 쪽으로는 사용해본 경험이 없었기 때문에 이번 기회를 통해 친해져 보기로 결정한 것이다. 

BigQuery에 데이터 적재 시작

 

기존에는 데이터를 로컬에 CSV 형태로 저장하고 있었고 나중에 이 데이터를 구글 스프레드시트로 옮길 생각이었다. 그리고 그 안에서 그래프 차트를 그려보려고 했는데 기왕 이렇게 된거 그럴듯하게 GCP 기술로만 유의미한 결과를 도출해보기로 했다. 일단 그 첫 단추가 빅쿼리였고 다음 단계는 Google Datalab( 주피터 노트북 같은 도구 )을 통해 빅쿼리를 연동하고 데이터 시각화를 해볼 예정이다. 현재 데이터 수집은 GCE에서 돌리고 있는데 추후에는 Cloud Functions이나 Cloud Run을 사용해 볼 계획이다. 하지만 팩트는.. 지금 사용하고 있는 초소형 GCE가 가격적으로 훨씬 싸다는... 후후.. 하지만 side-project의 묘미와 여러 기술을 사용해보자는 의미로 GCE는 결국 레거시로 남게 될 듯.

 

- 다음편에 계속

댓글
댓글쓰기 폼