pandasをからBigQueryに保存されているデータを扱うとき、わざわざCSVやJSONを経由したくない場合があります。pandasでは新たにライブラリなどを入れる必要もなくread_gbq
を使うだけで簡単にBigQueryからデータを読み込むことができます。
必要なもの
- 適切な権限の付与されたサービスアカウント (もしくは個人アカウント)
- private key (JSON)
- google-api-python-client
事前準備
サービスアカウントの作成と private key のダウンロード
権限の与えられたアカウントと対応する private key がない場合は作成しておきます。
- Google Cloud Platform の「IAMと管理」のメニューから「サービスアカウント」を選択
- 「プロジェクトを選択」から対象のプロジェクトを選択
- 「サービスアカウントを作成」でアカウント名・IDを入力し適切な役割を選択
- 「新しい秘密鍵の提供」にチェックを入れる
- 「キーのタイプ」で「JSON」を選択(pandasから扱う場合はP12では扱いづらい)
google-api-python-client のインストール
pip を使う場合は
pip install google-api-python-client
その他の場合は下記を参考に
BigQuery API Client Library for Python
実装例
import pandas
query = 'SELECT * FROM [project-999:dataset.table]'
project_id = 'project-999'
private_key = '/path.to/private_key.json' # pathでもJSON形式の文字列でもいい
pandas.read_gbq(query, project_id=project_id, private_key=private_key)
参考
ドキュメント: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.gbq.read_gbq.html