개발일상/BigQuery
[BigQuery] Python에서 빅쿼리로 데이터프레임 업로드
김쌀
2024. 11. 22. 23:56
빅쿼리 콘솔로 쿼리 실행할 일도 많지만, 가끔은 파이썬 자체에서 BQ를 실행할 일도 있다.
오늘은 python에서 빅쿼리 코드를 수행하기 위해 로컬 설정에 필요한 패키지와 설치 방법을 알아보자.
그 중에서도 pandas dataframe을 쿼리를 통해 테이블로 업로드 하는 코드를 추가했다. 로컬에서도 빅쿼리로 테이블이 뿅! 하고 나타나는 마법을 볼 수 있을 것이다. (음 뭐 마법까지야?)
1. Google Cloud 프로젝트 설정
- Google Cloud Console에 로그인합니다.
- BigQuery API를 활성화합니다.
- API 및 서비스 > API 라이브러리에서 "BigQuery API"를 검색하고 활성화합니다.
- 서비스 계정을 생성하고 JSON 키를 다운로드합니다.
- IAM 및 관리자 > 서비스 계정에서 새로운 서비스 계정을 만듭니다.
- 필요한 권한(예: BigQuery Admin)을 추가하고, 키 추가 > 새 키 > JSON을 선택하여 키 파일을 다운로드합니다.
- 이 JSON 파일이 BigQuery 인증에 사용됩니다.
2. Python 환경 설정
필수 라이브러리 설치
pip install google-cloud-bigquery pandas
3. Python 코드에서 BigQuery 인증 및 설정
1) 서비스 계정 키 파일 경로 설정
- JSON 키 파일을 Python 코드에서 사용하기 위해 환경 변수에 설정합니다.
import os
# 환경 변수에 JSON 키 파일 경로 설정
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "path/to/your/service-account-key.json"
2) BigQuery 클라이언트 생성 및 쿼리 실행
- 클라이언트를 생성하고 BigQuery 작업을 수행한다.
from google.cloud import bigquery
# BigQuery 클라이언트 생성
client = bigquery.Client()
# 쿼리 실행
query = """
SELECT
name, age
FROM
`your_project_id.your_dataset.your_table`
LIMIT 10
"""
query_job = client.query(query) # 쿼리 실행
# 결과 확인
for row in query_job:
print(f"Name: {row.name}, Age: {row.age}")
4. Pandas와 함께 BigQuery 사용
Pandas DataFrame으로 데이터를 쉽게 처리할 수 있습니다.
from google.cloud import bigquery
import pandas as pd
# BigQuery 클라이언트 생성
client = bigquery.Client()
# 쿼리 실행 및 결과를 DataFrame으로 변환
query = """
SELECT
name, age
FROM
`your_project_id.your_dataset.your_table`
LIMIT 10
"""
df = client.query(query).to_dataframe() # 결과를 DataFrame으로 변환
# DataFrame 출력
print(df)
5. 로컬 개발 시 주의 사항
- GOOGLE_APPLICATION_CREDENTIALS 설정:
- JSON 키 파일이 저장된 경로를 정확히 설정해야 합니다.
- 환경 변수 확인:
- Google Cloud 프로젝트 ID 확인:
- BigQuery 클라이언트를 생성할 때 프로젝트 ID를 명시하지 않으면 기본 프로젝트가 사용됩니다.
echo $GOOGLE_APPLICATION_CREDENTIALS
#데이터프레임테이블로 #pandas #bigquery #파이썬에서쿼리 #테이블업로드 #구글클라우드 #gcp세팅
참고 링크
https://cloud.google.com/bigquery/docs/authentication?hl=ko#local-development
https://cloud.google.com/bigquery/docs/running-queries?hl=ko
반응형