ローカルPCで開発している場合、Jupyter Notebook から直接BigQueryのデータを取得できると何かと便利ですよね!
さらにPandasのDataframeとして出力しておけば、後々の分析等で扱いやすくなって一石二鳥!
ということで、今回はJupyter NotobookからBigQueryのデータを取得する方法をご紹介したいと思います。
Googleへの認証
今回は、pydata_google_auth を使って認証してみます。
このライブラリを使うと、ブラウザ上で簡単に認証ができ、認証キーを変数として持つことができます。
インストールする場合は、以下のコマンドから↓↓↓
Anacondaの場合
conda install -c conda-forge pydata-google-auth |
pipの場合
pip install pydata-google-auth |
インストールができたら、Jupyter Notebookのセルに以下のコードを打ち込んで実行します。
import pydata_google_auth credentials = pydata_google_auth.get_user_credentials( [‘https://www.googleapis.com/auth/bigquery‘], ) |
すると、新規ブラウザが立ち上がります。
Googleアカウントを選択し、画面の指示にしたがって操作していくと、最後に認証キーが発行さます。
認証キーはプログラム内の変数「credentials」に格納されます。
Google Cloudのクライアントを準備する
Google Cloudのリソースに対してPythonから操作するために、サービス毎にライブラリが用意されています。
今回はBigQueryを操作するので、「google-cloud-bigquery」を使います。
インストールする場合は、以下のコマンドから↓↓↓
Anacondaの場合
conda install -c conda-forge google-cloud-bigquery |
pipの場合
pip install google-cloud-bigquery |
JupyterNoteBookからBigQueyrへの接続確認
準備が整ったので、BigQueryからデータを取得してみます。
特定のテーブルから10行だけ取り出すqueryをBigQueryに投げてみたいと思います。
※それぞれの環境に合わせてプロジェクトID、データセット名、テーブル名を変更してください。
from google.cloud import bigquery client = bigquery.Client(project=’プロジェクトID’, credentials=credentials) query = ‘SELECT * FROM データセット名.テーブル名 LIMIT 10’ df_result = client.query(query).to_dataframe() |
to_dataframe()メソッドを用いることで、PandasのDataFrameとして出力できます。
▼ BigQuery上に保存している 2023/9/9 の気象データを10行だけ取得
必要に応じてクエリを変更すれば、データの取得の他にも「データの挿入」や「テーブルの作成・削除」などあらゆる操作をPythonから行うことができます。
(※アカウントに各権限を付与する必要あり)
今回は、Google Cloudのクライアントを使用したデータ取得方法をご紹介しましたが、この他にもPandasの拡張ライブラリを使って直接DataFrameに読み込む方法もあります。
また機会があれば、そちらの方法もご紹介したいと思います!
まとめ
- pydata-google-auth を使えば自身の持つGoogleアカウント情報と紐づいた認証キーをオブジェクトとして取得できる!
- BigQueryのデータを取得するには、Google Cloud クライアントを使えば簡単!