ローカルのJupyter NotebookからBigQueryのデータを簡単に取得する方法

ローカル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

db_dtypesをインストール

次に、BigQuery 等のための pandas のデータ型拡張ライブラリである「db_dtypes」をインストールします。

pipの場合

pip install db-dtypes

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 クライアントを使えば簡単!