🐃

【Python】Google ColabでCSVファイルをBigQueryに簡単ロード!

2025/01/18に公開

こんにちは、エンジニアのうさぎです🐰

今回は、Google Colabを使ってCSVファイルをBigQueryにロードする方法をご紹介します。データ分析やBI(ビジネスインテリジェンス)で便利なBigQueryですが、初めて使う方にとってはデータのロード方法が分かりにくいかもしれません。

この記事では、Pythonを使って簡単にCSVファイルをBigQueryにロードする方法を解説します!

📋 目次

  1. 事前準備
  2. 実装手順
  3. エラー対処法
  4. まとめ

1. 事前準備

BigQueryを使用するために、以下の準備が必要です:

  • Google Cloudプロジェクトの作成
  • 必要な権限の設定(BigQuery管理者権限など)
  • サービスアカウントキーの作成
  • Google Colabでノートブックを新規作成

まず、必要なライブラリをインストールしましょう:

!pip install google-cloud-bigquery pandas

2. 実装手順

それでは、具体的な実装手順を見ていきましょう。

Step 1: Google Driveのマウントとライブラリのインポート

from google.colab import drive
drive.mount('/content/drive')

from google.cloud import bigquery
import pandas as pd
import os

# サービスアカウントキーの設定
credentials_path = "/content/drive/My Drive/service-account-key.json"
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = credentials_path

Step 2: BigQueryクライアントの初期化

# BigQueryクライアントを作成
client = bigquery.Client()

# プロジェクトとデータセットの設定
project_id = "your-project-id"  # あなたのプロジェクトIDに変更してください
dataset_id = "your_dataset"
table_id = "your_table"

# テーブル参照の作成
table_ref = f"{project_id}.{dataset_id}.{table_id}"

Step 3: CSVファイルのロード

# CSVファイルを読み込む
df = pd.read_csv('/content/drive/My Drive/data.csv')

# BigQueryへのロード設定
job_config = bigquery.LoadJobConfig(
    write_disposition="WRITE_TRUNCATE",  # テーブルを上書き
)

# データのアップロード
job = client.load_table_from_dataframe(
    df,
    table_ref,
    job_config=job_config
)

# ロード完了まで待機
job.result()

print(f"✨ {len(df)} 行のデータがテーブルにロードされました!")

3. エラー対処法

よくあるエラーと対処方法をまとめました:

🚫 認証エラー

エラーメッセージ: "Could not automatically determine credentials..."

対処法:サービスアカウントキーのパスが正しいか確認してください。

🚫 権限エラー

エラーメッセージ: "Permission denied while..."

対処法:IAMでBigQuery管理者権限が付与されているか確認してください。

🚫 メモリエラー

エラーメッセージ: "MemoryError"

対処法:大きなCSVファイルは分割してアップロードするか、チャンクサイズを指定してください。

4. まとめ

今回は、Google ColabでCSVファイルをBigQueryにロードする方法を解説しました。主なポイントは以下の通りです:

  • Google Driveのマウントが必要
  • 適切な認証設定が重要
  • エラーが発生した場合は、権限やパスを確認

この方法を使えば、簡単にCSVデータをBigQueryで分析できるようになります!

最後までお読みいただき、ありがとうございました🐰

参考リンク

Discussion