파이썬에서 구글 빅쿼리로 데이터를 로드하는 방법

Tech 파이썬에서 구글 빅쿼리로 데이터를 로드하는 방법 대표 이미지

빅쿼리(BigQuery)는 구글의 강력한 분석형 데이터 웨어하우스로, 대용량 데이터를 빠르게 분석할 수 있는 기능을 제공합니다. 하지만 빅쿼리를 잘 활용하려면 데이터를 어떻게 효율적으로 업로드하느냐가 핵심입니다.

이번 포스트에서는 파이썬을 사용해 데이터를 Google BigQuery로 업로드하는 다양한 방법을 비교 분석합니다. 사용 목적, 데이터 크기, 자동화 요구사항에 따라 어떤 방식을 선택해야 할지 감 잡을 수 있을 겁니다.

1. Pandas + to_gbq()

파이썬에서 데이터를 다룰때 많이 사용하는 모듈인 pandas를 사용할 경우, pandas_gbq 모듈을 사용하여 데이터프레임을 쉽게 구글 빅쿼리로 로드할 수 있습니다. 방법은 아래와 같습니다.

📦 설치

pip install pandas-gbq

🔧 사용 예시

from pandas_gbq import to_gbq

import pandas as pd

df: pd.DataFrame

to_gbq(

    df,

    destination_table=“project.dataset.table”,

    project_id=“project_id”,

    if_exists=“replace”, # fail | replace | append

    table_schema={“column”, “dtype”}, # 테이블 스키마 명시, 기본 데이터프레임 컬럼 타입에 따라 자동 생성

    chunksize=1000, # 로드 청크사이즈, 데이터가 클 경우 나눌 청크 크기를 설정

)

2. google-cloud-bigquery 클라이언트 라이브러리

 

📦 설치

pip install google-cloud-bigquery

🔧 사용 예시: DataFrame 직접 업로드

from google.cloud import bigquery

import pandas as pd

df: pd.DataFrame

client = bigquery.Client()

job = client.load_table_from_dataframe(df, “project.dataset.table”)

job.result()

🔧 사용 예시: 파일에서 직접 업로드

from google.cloud import bigquery

client = bigquery.Client()

job_config = bigquery.LoadJobConfig(source_format=bigquery.SourceFormat.CSV)

with open(“data.csv”, “rb”) as f:

    client.load_table_from_file(f, “project.dataset.table”, job_config=job_config).result()

👍 장점

  • 다양한 데이터 소스 지원 (DataFrame, CSV, JSON, GCS 등)

  • 세부 설정 가능: 파티셔닝, 스키마 지정 등

👎 단점

  • 코드 복잡

  • 설정 많음

위 소개드린 두 방법 외에 client 인스턴스 내 여러 메소드및 옵션이 더 있습니다.

공식 구글 빅쿼리 SDK의 경우 설정이 복잡하고 많은 만큼 세세한 조정이 가능합니다.

복잡한 데이터 로드 워크플로에서 사용하기 좋습니다.

3. GCS → BigQuery 로딩

 

📦 설치

pip install google-cloud-storage google-cloud-bigquery

🔧 사용 예시

from google.cloud import storage, bigquery

# 1. GCS에 데이터 업로드

storage_client = storage.Client()

bucket = storage_client.bucket(“bucket”)

blob = bucket.blob(“data.csv”)

blob.upload_from_filename(“data.csv”)

# 2. GCS 데이터를 빅쿼리로 로드

bq_client = bigquery.Client()

job_config = bigquery.LoadJobConfig(

    source_format=bigquery.SourceFormat.CSV,

    autodetect=True

)

job = bq_client.load_table_from_uri(

    “gs://bucket/data.csv”,

    “project.dataset.table”,

    job_config=job_config

)

job.result()

👍 장점

  • 대용량 데이터 처리에 적합

  • 실패 시 재시도 용이

  • 데이터 스테이징 가능

👎 단점

  • GCS 버킷 설정 필요

  • 코드 길고 번거로움

데이터가 아주 큰 대용량 데이터의 경우 파일로 저장한 후 GCS에 업로드 하여 업로드한 데이터 파일을 구글 빅쿼리로 로드하는 방법이 안정적입니다.

위 2번 방식과 마찬가지로 JobConfig를 통해 로드 상세 설정이 가능하며 그에 더해 안정성을 확보한 방식입니다.

파이썬에서 데이터를 구글 빅쿼리로 로드하는 세 가지 방식에 대해 알아보았습니다,

어떤 방식을 사용할 지는 데이터의 크기나 파티셔닝, 스키마의 상세 지정의 필요 유무에 따라 알맞은 방식을 선택할 수 있겠습니다.

Popular & Related Posts

Apache Airflow 2.10.0 새로운 기능 Hybrid Executor 블로그 배너 이미지

Tech

2025년 3월

Apache Airflow 2.10.0 새로운 기능 Hybrid Executor

Apache Airflow 2.10.0 버전에 새로 생긴 Hybrid Executor 기능 살펴보기
Tech 파이썬에서 구글 빅쿼리로 데이터를 로드하는 방법 대표 이미지

Tech

2025년 7월

파이썬에서 구글 빅쿼리로 데이터를 로드하는 방법

파이썬 환경에서 여러가지 라이브러리를 활용하여 구글 빅쿼리로 데이터를 전송하는 여러가지 방법
Airflow Dynamic Task Mapping으로 동적 태스크 실행하기 배너 이미지

Tech

2025년 7월

Airflow의 Dynamic Task Mapping으로 동적 태스크 실행하기

Airflow에서 특정 태스크 개수가 동적으로 실행되어야 할때, Airflow Dynamic Task Mapping을 사용할 수 있습니다.