Backend/Bigquery
-
Bigquery에서 GROUP BY를 이용하여, 서울 2023년 아파트 전세(실거래) 평균값 알아보기 - feat. round함수, cast 함수 사용하기Backend/Bigquery 2023. 8. 12. 14:28
필자는 실거래가 이루어진 데이터를 open api를 통해 bigquery에 적재하였다. 조건을 넣어, 2023년 서울 실거래되었고, 지어진 지 2010년 이상 된 전세, 아파트의 평균 거래 값과 등수를 나열해보는 쿼리를 만들어 보았다. SELECT ACC_YEAR ,SGG_NM ,round(avg(CAST(RENT_GTN as INT64)),1) as avgofrent FROM `sy-gcp-project.analytics.payment_2023` WHERE HOUSE_GBN_NM ='아파트' AND RENT_GBN = '전세' AND BUILD_YEAR like '201%' GROUP BY 1,2 ORDER BY 3 DESC 여기서 사용했던 함수는 3가지가 있다. 1. round 함수는 반올림을 첫째 ..
-
서울 열린 데이터광장에서 API 이용하여 빅쿼리에 데이터 적재Backend/Bigquery 2023. 8. 11. 22:23
필자는 앞에서 테스트를 하고 드디어 bigquery에 적재를 완료하였다!!!!!!! 직접 공공 API를 사용하는 것을 처음이라, 시간이 이틀? 정도 걸렸지만 설명해보려 한다. 선행해야 할 것 필자는 빅쿼리를 사용했는데, 미리 빈테이블을 만들어야 한다(스키마 지정) - > 테이블 명을 사용해야 하기 때문! 테이블 만드는 과정은 url을 참조 할 것 : https://amelia-suyeon.tistory.com/entry/Bigquery-%ED%85%8C%EC%9D%B4%EB%B8%94-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0 Bigquery 테이블 생성하기 빅쿼리에 데이터를 업로드 하는 방법은 3가지가 존재한다. 필자는 Google Cloud Storage에서 Bigquery 로..
-
서울 열린 데이터광장에서 API 이용하여 빅쿼리에 데이터 적재 및 배치 시작!Backend/Bigquery 2023. 8. 11. 17:27
필자는 공공 API를 사용하여, 빅쿼리에 일배치 하는 작업을 하려 했다. 연결은 어느 정도 하였으나, 계속 오류를 마주한 것이 있었는데 바로 스키마 불일치가 가장 컸던것 같다. 기존 공공 API에서 받은 스키마대로 테이블을 만들었지만, json 형식으로 넘어오면서 정말 필요한 데이터를 제외하고는 string 형식으로 바뀌는 듯 하였다. 나름의 null처리를 하였지만 도저히 예외를 다 받을 수 없었기에,,,, 최후의 수단은 테이블 스키마를 변경하여 새로운 테이블을 만들기로 하였다. 마주한 error들 -> 대부분이 타입이 맞지 않아 생긴 것이 많다. 그리고 대부분의 넘어오는 데이터의 형식 이후, 다시 스키마를 변경하여 테스트 한 결과 -> 성공 데이터가 잘 들어왔음을 볼 수 있다! 다음 포스팅에서부터, 본..
-
Bigquery에서 숫자를 문자열로 변환 후, substr 사용하기Backend/Bigquery 2023. 8. 10. 17:29
필자는 다른 테이블과 조인을 하기 위해서 날짜 컬럼(=숫자열) 에서 년도만 가져 오려 한다. 이때, 숫자로 된 컬럼을 1차로 문자열로 바꿔주는 함수가 빅쿼리에서는 CAST이다. 사용 방법은 아래와 같이 간단하다. CAST( 컬럼 as string) 이런 식으로 사용하면 된다. 이후, format_datetime을 사용하려 했으나, 날짜 컬럼이 되어 있어야 함으로 pass SQL에서 공통적으로 사용되는 substr을 이용하였다. SUBSTR(CAST(use_date as string), 1,4) as year로 변경해주었다. 이는 substr에서 1에서 4번째 까지의 문자열을 가져 온다는 뜻이다. SELECT SUBSTR(CAST(use_date as string),1,4) as year ,line_nam..
-
Bigquery 이용하여 간단한 where 조건문 걸기Backend/Bigquery 2023. 8. 9. 16:28
필자는 공공데이터에서 받은 서울시 지하철 데이터를 이용하여, 조건문이 들어간 데이터를 뽑으려고 한다. 궁금했던 점은 2023년 상반기 동안 집과 가까운 2호선 홍대입구역에 얼마나 많은 사람들이 타고 내리는지 중점을 두었다. 그리고, 탄 사람보다 내린 사람이 더 많은 날을 집계하는 쿼리를 만들어 보았다. SELECT use_date,line_num, line_name, sum(total_num) as total_num, sum(take_off_num) as tot_take_off FROM `{gcp 프로젝트이름}.{데이터세트 ID}.card_subway_month_total` WHERE total_num
-
Bigquery에 DTS 기능 이용하기 - Data Transfer ServiceBackend/Bigquery 2023. 7. 4. 22:16
Google Cloud Platform에서 제공하는 Data Transfer Service를 이용하여 Google Cloud Bucket에 있는 데이터를 Bigquery에 손쉽게 적재할 수 있다! 필자는 이미 GCS에 올려놓은 test 데이터를 이용해서 적재해보도록 하겠다! 1. 빅쿼리 탭에서 데이터 전송을 클릭한다. 2. 전송 만들기를 클릭 3. 소스 유형 선택하기 -> 필자의 경우 Google Cloud Storage 선택 여러 소스를 선택할 수 있으며, aws s3 버킷도 가능함! 4. 전송 구성 이름 , 일정 옵션을 지정해준다. 반복 간격 : 배치 간격 시간 지정 지금 시작 및 일정한 시간에 시작 : 현재 or 시작 할 시간 지정 가능 5. 하이라이트 된 부분 지정해서 입력 데이터 세트 : big..
-
Bigquery 이용하여 간단한 select 문 연습하기Backend/Bigquery 2023. 7. 3. 21:00
필자는 빅쿼리에 적재한 테이블을 이용하여, 간단한 Select 문 예시를 들어보겠다! 1. Select 문 중 전체를 불러올 때 (limit 이용하여 row수 제한) SELECT * FROM `sy-gcp-project.analytics.card_subway_month_total` LIMIT 1000 빅쿼리에서 limit 을 걸지 않고 다량의 데이터를 조회하면, 비용이 많이 발생 할 수 있기 때문에, limit을 걸어주는 것이 좋다. 2-1. WHERE 조건 중 string 일때 SELECT * FROM `sy-gcp-project.analytics.card_subway_month_total` WHERE line_num = '2호선' LIMIT 1000 호선을 2호선만 보고 싶을 때, 조건을 준다. (보..
-
csv 파일을 빅쿼리에 업로드 하기 - 인코딩 주의Backend/Bigquery 2023. 6. 29. 15:50
필자는 공공데이터를 활용하여, 빅쿼리 테이블을 생성하고, 쿼리 연습을 위해 다운받았다. 공공 데이터는 누락이 많기는 하지만, raw 데이터 보다는 전처리가 어느정도 되어 있기 때문에, 가공해서 사용하기 유용함! 보통 openAPI를 신청하기도 하고, csv 파일을 다운 받기도 하는데, 먼저 csv 파일 다운로드 받은것을 python으로 간단하게 정리하여 올려보았다. 공공 데이터 포탈은 여기를 참고: https://www.data.go.kr/index.do 공공데이터 포털 국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase www.data.go.kr 먼저, 지하철 ..