빅쿼리 데이터를 파이썬 데이터프레임으로 불러오기
내용
- GCP(Google Cloud Platform) 프로젝트 설정
- 프로젝트 생성
- 서비스 계정 생성
- 서비스 계정 키 생성 후 JSON 파일 추출
- 서비스 계정에 빅쿼리 관련 역할 추가
- Python과 BigQuery 연동
- 라이브러리 설치
- 서비스 계정 키 설정
- 빅쿼리 클라이언트 정의
- 데이터 조회 쿼리 실행
GCP(Google Cloud Platform) 프로젝트 설정
프로젝트 생성
- GCP 접속 후 좌측 상단 ‘Google Cloud Platform’ 로고 우측의 ‘프로젝트 선택’ 메뉴 클릭
- ‘새 프로젝트’ 클릭 후 프로젝트 만들기 진행
서비스 계정 생성
- GCP 좌측 상단 ‘탐색 메뉴’ 클릭 후 ‘IAM 및 관리자’의 ‘서비스 계정’으로 이동
- ’+ 서비스 계정 만들기’ 클릭 후 서비스 계정 만들기 진행
서비스 계정 키 생성 후 JSON 파일 추출
- 생성된 서비스 계정 클릭 후 ‘키’ 탭 이동
- ‘키 추가’ - ‘새 키 만들기’ - 키 유형 ‘JSON’ 선택 - ‘만들기’ 클릭
- config 폴더 생성 후 해당 경로에 JSON 파일 다운로드
서비스 계정에 빅쿼리 관련 역할 추가
- GCP 좌측 상단 ‘탐색 메뉴’ 클릭 후 ‘IAM 및 관리자’의 ‘IAM’으로 이동
- ‘추가’ 클릭 - 생성된 서비스 계정 이메일 추가 및 ‘BigQuery 관리자’ 역할 선택 후 저장
Python과 BigQuery 연동
구글 클라우드 빅쿼리 클라이언트 설치
pip install google-cloud-bigquery
서비스 계정 키 설정
import glob
from google.cloud import bigquery
from google.oauth2 import service_account
# 서비스 계정 키 JSON 파일 경로
key_path = glob.glob("./config/*.json")[0]
# Credentials 객체 생성
credentials = service_account.Credentials.from_service_account_file(key_path)
빅쿼리 클라이언트 정의
# GCP 클라이언트 객체 생성
client = bigquery.Client(credentials = credentials,
project = credentials.project_id)
데이터 조회 쿼리 실행
# 데이터 조회 쿼리
sql = f"""
SELECT
name, gender,
SUM(number) AS total
FROM
`bigquery-public-data.usa_names.usa_1910_2013`
GROUP BY
name, gender
ORDER BY
total DESC
LIMIT
10
"""
# 데이터 조회 쿼리 실행 결과
query_job = client.query(sql)
# 데이터프레임 변환
df = query_job.to_dataframe()
df.head()
name | gender | total | |
---|---|---|---|
0 | James | M | 4924235 |
1 | John | M | 4818746 |
2 | Robert | M | 4703680 |
3 | Michael | M | 4280040 |
4 | William | M | 3811998 |
댓글남기기