개발일상/BigQuery

[BigQuery] Python에서 빅쿼리로 데이터프레임 업로드

김쌀 2024. 11. 22. 23:56

빅쿼리 콘솔로 쿼리 실행할 일도 많지만, 가끔은 파이썬 자체에서 BQ를 실행할 일도 있다.

오늘은 python에서 빅쿼리 코드를 수행하기 위해 로컬 설정에 필요한 패키지와 설치 방법을 알아보자. 

그 중에서도 pandas dataframe을 쿼리를 통해 테이블로 업로드 하는 코드를 추가했다. 로컬에서도 빅쿼리로 테이블이 뿅! 하고 나타나는 마법을 볼 수 있을 것이다. (음 뭐 마법까지야?)


1. Google Cloud 프로젝트 설정

  1. Google Cloud Console에 로그인합니다.
  2. BigQuery API를 활성화합니다.
    • API 및 서비스 > API 라이브러리에서 "BigQuery API"를 검색하고 활성화합니다.
  3. 서비스 계정을 생성하고 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. 로컬 개발 시 주의 사항

  1. GOOGLE_APPLICATION_CREDENTIALS 설정:
    • JSON 키 파일이 저장된 경로를 정확히 설정해야 합니다.
  2. 환경 변수 확인:
     
     
  3. 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

반응형