데이터 노트

[BigQuery] Python, BigQuery 연동 후 Google Sheet에 저장 본문

Data Engineering/DB

[BigQuery] Python, BigQuery 연동 후 Google Sheet에 저장

돌돌찐 2023. 6. 10. 00:15

필요 사전 작업

Bigquery 내에서 서비스 계정 생성 후, JSON 키 생성 및 다운로드

 

설치

  • 구글 클라우드 빅쿼리 클라이언트 설치
pip install google-cloud-bigquery
  • 구글 시트 연동을 위한 라이브러리 설치
pip install gspread oauth2client

 

코드

  • Python과 BigQuery와 연동해서, 데이터 가져오기
from google.cloud import bigquery
from google.oauth2 import service_account

KEY_PATH = "{서비스 계정 인증 정보가 담긴 JSON 파일 경로}"

# Credentials 객체 생성
credentials = service_account.Credentials.from_service_account_file(KEY_PATH)

# 빅쿼리 클라이언트 객체 생성
client = bigquery.Client(credentials = credentials)

# 주문 수와 매출액을 가져오기 위한 쿼리 실행
# 쿼리는 예시
QUERY = (
    '''
    SELECT COUNT(orderid) AS CNT, SUM(sales) AS SALES  
    FROM `{프로젝트명.데이터셋명.테이블명}`
    ''')

# API request
query_job = client.query(QUERY)  
rows = query_job.result()

for row in rows:
    print(row.CNT, row.SALES)

 

  • 구글 시트와 연동해서 데이터 쓰기
# 구글 시트 객체 생성
gc = gspread.authorize(credentials)

# 구글 시트 URL
sheet_url = "{구글 시트 URL}"
doc = gc.open_by_url(sheet_url)

# 작업 시트 선택
sheet = doc.worksheet('{구글 시트 내 작업할 워크 시트 명}')

 

이 외에 필요한 값들을 가져와서 업데이트 하도록 함수들을 작성하였다.

그 중 구글 시트 셀 값들을 가져오거나 업데이트 하는 내용들을 몇 가지 정리해본다.

 

# 작업 시트 선택
sheet = doc.worksheet('{워크시트명}')

# 원하는 셀 값 가져오기
val = sheet.cell({row}, {column}).value

# or

val = sheet.cell({셀 위치}).value # 셀값 ex) F4, T7 ...

# 시트 내 전체 row 몇 개인지 세기
all_rows_cnt = sheet.row_count

# 셀 값 업데이트
sheet.update({셀 위치}, {업데이트할 값})

참고

- https://wooiljeong.github.io/python/python-bigquery/