ローカル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 クライアントを使えば簡単!
API ARIMA AutoML Bard BigQuery Bing ChatGPT Cloud Endpoints Cloud Storage DWH EBPM GAS Generative AI Google Apps Script Google Cloud Google Form Google Workspace IT組織 Outlook PaLM PDF Python ReportLab selenium Statsmodels STL VertexAI Vertex Forecast スクラッチ セミナー ソトミル トレンド分析 トレーニング バッチ予測 世界は女性とデジタルが救う 女性活躍 技術 時系列データ分析 業務効率化 機械学習 特徴量エンジニアリング 生成AI 自動化 評価指標 需要予測