반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- PyGWalker
- 성장
- DataAnalyst
- pandasai
- 데이터분석
- 인과추론
- 글또
- 아하모먼트
- DataAnalysis
- aha-moment
- 야구
- 전환분석
- n8n
- 벅슨의역설
- productanalysis
- 트위먼의법칙
- 데이터분석가
- 시각화
- EDA
- data-analysis
- 신기효과
- data
- 데이터디스커버리플랫폼
- 프롬프트엔지니어링
- 데이터
- 프롬프트
- 주가데이터
- retentioneering
- gapminder
- 분석한스푼
Archives
데이터 생존 로그
n8n 자동화 프로젝트③ - 워크플로를 통한 버스 실시간 위치 데이터 수집 본문
* 이 글은 data popcorn에서 진행하는 n8n 스터디 2기에 참여하고 그 과정을 글로 남긴 게시글입니다.
- n8n 기초 강의: https://youtu.be/zcjTErUqvxM?si=MN0VAE5p6RtQ2YLk
- n8n & AI 자동화 커뮤니티: https://open.kakao.com/o/gwBKXcSg
이번 게시글에서는 n8n 워크플로우를 활용하여 버스 실시간 위치 데이터 수집하는 과정을 담았습니다.
- 저번 게시글1: https://analyst-ggom-chi-kim.tistory.com/26
- 저번 게시글2: https://analyst-ggom-chi-kim.tistory.com/27
전체 워크플로우 Overview
위 n8n 워크플로우는 버스 실시간 위치 데이터를 수집하고 이를 Google Sheets에 저장하는 과정을 담고 있다.
주요 기능:
- 경기도 공공데이터 API에서 특정 노선의 실시간 버스 위치 정보를 가져옴
- 데이터는 일정 시간 간격(3분)으로 업데이트
- 수집된 정보는 Google Sheets에 기록됨
노드별 주요 기능 및 역할
- Schedule Trigger (트리거)
- 매 3분마다 워크플로우를 실행
- If 노드 (시간 조건 확인)
- 특정 시간대(02:00 ~ 05:00) 사이에는 데이터를 가져오지 않도록 필터링
- HTTP Request (버스 정보 요청)
- 경기도 공공데이터 API에 요청을 보내고, 특정 노선(routeId=200000104)의 실시간 위치 데이터를 가져옴
- 요청 URL: http://apis.data.go.kr/6410000/buslocationservice/v2/getBusLocationListv2
- Split Out (데이터 분할)
- API 응답 중 busLocationList 필드를 개별 항목으로 분리
- Edit Fields (데이터 가공)
- timestamp 필드를 추가하여 데이터의 수집 시간을 명시
- Date & Time (날짜 형식 변환)
- timestamp 값을 yyyy-MM-dd HH:mm:ss 형식으로 변환
- Merge (데이터 통합)
- 기존 API 응답 데이터와 변환된 날짜 정보를 병합
- Google Sheets (데이터 저장)
- 가공된 데이터를 Google Sheets의 bus_data 시트에 저장
- 기록되는 데이터:
- plateNo (버스 번호판)
- remainSeatCnt (남은 좌석 수)
- stationId (현재 정류장 ID)
- stationSeq (정류장 순번)
- timestamp (데이터 수집 시각)
단계별 동작 방식 설명
1️⃣ 스케줄 트리거 실행
- 3분 간격으로 자동 실행
2️⃣ 시간 필터링
- 만약 현재 시간이 02:00 ~ 05:00 사이라면, 데이터 요청을 중단
3️⃣ 버스 위치 정보 요청
- API를 호출하여 노선의 모든 버스 정보를 가져옴
4️⃣ 데이터 분할
- 여러 개의 버스 데이터를 각각 개별 항목으로 분리
5️⃣ 필드 추가 및 날짜 변환
- 현재 시간(timestamp)을 추가하고, 읽기 쉬운 날짜 형식으로 변환
6️⃣ 데이터 병합
- 변환된 날짜와 API 응답 데이터를 병합
7️⃣ Google Sheets에 저장
- 정제된 데이터를 bus_data 시트에 추가
출력물 형태
✅ 실행 결과
- 3분마다 Google Sheets에 새로운 버스 운행 데이터가 기록
✅ 출력 예시 (Google Sheets에서 확인 가능)
plateNo | remainSeatCnt | stationId | stationSeq | timestamp |
경기1234 | 5 | 100200 | 12 | 2024-03-16 12:00:00 |
경기5678 | 2 | 100201 | 13 | 2024-03-16 12:03:00 |
✅ 결과 확인 방법
- Google Sheets (bus_data 시트)에서 데이터를 실시간으로 확인할 수 있음
- 필요 시 해당 데이터를 활용하여 분석 및 시각화 대시보드를 구성할 수도 있음
해당 데이터를 이용하여 분석한 사례: https://analyst-ggom-chi-kim.tistory.com/28
반응형
Comments