파이썬에서 BigQuery로 데이터 옮겨담기

John
3 min readJan 31, 2020

--

파이썬에서 크롤링 작업한 코드를 통해 생성된 데이터 프레임을 BigQuery로 옮기고 싶었고 여러가지 구글링과 문의를 통해서 방법을 알아낼 수 있었다.

정답은 바로..!

pandas에서 제공하는 to_gbq 함수였다.

1. BigQuery에서 미리 준비하기

크롤링 한 데이터 프레임을 BigQuery에 옮겨 담기 전에 미리 준비해야 할 것이 있다.

바로 BigQuery에서 Columns이 동일한 빈 테이블을 만들어야한다.

빈 테이블 만들기.

자신이 크롤링 한 데이터 프레임과 동일한 컬럼명과 개수를 통일 시킨 후에 빈 테이블을 생성하면 된다.

2. 설치 및 코드

pip install pandas-gbq

그리고 크롤링한 데이터가 Dataframe 형태로 되어 있다면

from google.oauth2 import service_account
import pandas_gbq
크롤링 코드...cd = service_account.Credentials.from_service_account_file(
'서비스키값/경로.json',
)
project_id = '프로젝트 이름'
destination_table = '데이터세트이름.테이블이름'
dataframe.to_gbq(destination_table,project_id,if_exists='replace',credentials=cd)
print('migration complete')

정말 간단하게 끝이다.

여기서 credentials은 json으로 [IAM 및 관리자] -> [서비스 계정] 에서 발급 받을 수 있다.
그리고 if_exists의 parameter 값은 replace(대체) 혹은 append(추가)로 지정이 가능하다.

3. 활용

  1. 크롤링을 통해 주기적으로 생성 및 변화하는 데이터 같은 경우 해당 코드를 특정 시기마다 적재할 수 있도록 스케줄링하는 방법으로 활용할 수 있을 것이다. (다음 포스팅 예상)

-> Airflow, Cronjob, APScheduler 등.

2. 그렇지 않고 단순히 많은 양의 데이터를 수집하고 이것을 BigQuery로 옮기고 싶다면 json형태의 key값과 to_gbq 함수로 편하게 활용할 수 있다. 필요한 코드만 아카이빙 해두었다가 요긴하게 쓰일 수 있을 듯

참고

-> key의 경로를 파라미터로 넣는 방법이 아닌 json 통째로 집어넣는 방법도 있다. 하지만 경로가 더 편할 듯.

--

--

John
John

Written by John

기술적인 성장을 희망합니다

No responses yet