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
- airflow설치
- grafana
- spark
- kafka
- SQL
- aiagent
- 오블완
- BigQuery
- Redshift
- 설치
- pySpark
- amazonlinux
- ubuntu
- prometheus
- vectorDB
- Streamlit
- Dag
- MSA
- airflow
- milvus
- dockercompose
- 루프백주소
- Python
- docker
- metadabatase
- RAG
- javascript
- hadoop
- jmx-exporter
- sparkstreaming
Archives
- Today
- Total
데이터 노트
[BigQuery] Python, BigQuery 연동 후 Google Sheet에 저장 본문
필요 사전 작업
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({셀 위치}, {업데이트할 값})
참고
'Data Engineering > DB' 카테고리의 다른 글
[Redshift] 연산 오류 | 자동 정수 변환 (0) | 2024.04.13 |
---|---|
[Redshift] Airflow로 자동화한 프로시저가 작동하지 않을 경우 (0) | 2024.03.23 |
[Redshift] 기존 테이블의 컬럼명 변경을 위한 방법 (0) | 2024.03.20 |
[BigQuery] Python, BigQuery, Google Sheet 연동 시 credential 에러 (0) | 2023.06.07 |
[GCP] CLOUD SQL - Ubuntu 내 Django 연동 (0) | 2023.02.10 |