빅쿼리 데이터를 파이썬 데이터프레임으로 불러오기


내용

  • GCP(Google Cloud Platform) 프로젝트 설정
    • 프로젝트 생성
    • 서비스 계정 생성
    • 서비스 계정 키 생성 후 JSON 파일 추출
    • 서비스 계정에 빅쿼리 관련 역할 추가
  • Python과 BigQuery 연동
    • 라이브러리 설치
    • 서비스 계정 키 설정
    • GCP 클라이언트 정의
    • 데이터 조회 쿼리 실행


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 클라이언트 정의

# 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


BigQuery 공식문서

https://cloud.google.com/bigquery/docs?hl=ko#docs

태그:

카테고리:

업데이트:

댓글남기기