pandas-gbq との比較
pandas-gbq
ライブラリは、クエリを実行し、pandas データフレームを BigQuery にアップロードするシンプルなインターフェースを提供します。これは、BigQuery クライアント ライブラリ google-cloud-bigquery
のシンラッパーです。どちらのライブラリも、SQL を使用したデータ分析のサポートに重点を置いています。このトピックでは、コードサンプルを使用して google-cloud-bigquery
と pandas-gbq
を比較します。
2 つのライブラリの機能レベルおよびサポートレベルの違いのうち主なものは以下のとおりです。
pandas-gbq | google-cloud-bigquery | |
---|---|---|
サポート | PyData とボランティアが管理するオープンソース ライブラリ | Google が管理するオープンソース ライブラリ |
BigQuery API の機能 | クエリの実行と、pandas DataFrame からテーブルへのデータの保存 | BigQuery API の全機能、pandas DataFrame の読み書き、Jupyter マジックによるクエリ実行 |
ドキュメント / ソース | ドキュメント / ソース |
ライブラリをインストールする
このガイドのコードサンプルを使用するには、pandas-gbq
パッケージと BigQuery Python クライアント ライブラリをインストールします。
PIP
pandas-gbq
パッケージと google-cloud-bigquery
パッケージをインストールします。
pip install --upgrade pandas-gbq 'google-cloud-bigquery[bqstorage,pandas]'
Conda
コミュニティが運営する conda-forge
チャンネルから pandas-gbq
パッケージと google-cloud-bigquery
Conda パッケージをインストールします。
conda install -c conda-forge pandas-gbq google-cloud-bigquery
クエリの実行
どちらのライブラリも、BigQuery に保存されているデータのクエリをサポートしています。ライブラリ間の主な違いは次のとおりです。
pandas-gbq | google-cloud-bigquery | |
---|---|---|
デフォルトの SQL 構文 | GoogleSQL(pandas_gbq.context.dialect で構成可能) |
GoogleSQL |
クエリの構成 | BigQuery REST リファレンス指定の形式で辞書として送信します。 | さまざまな API 構成オプションのプロパティを含む QueryJobConfig クラスを使用します。 |
GoogleSQL 構文を使用したデータのクエリ
次の例では、プロジェクトを明示的に指定して GoogleSQL クエリを実行する方法と、明示的に指定せずに Google Cloud クエリを実行する方法を示しています。どちらのライブラリでも、プロジェクトが指定されていない場合、プロジェクトはデフォルトの認証情報から決定されます。
pandas-gbq
:
google-cloud-bigquery
:
レガシー SQL 構文を使用したデータのクエリ
次のサンプルは、レガシー SQL 構文を使用してクエリを実行する方法を示しています。クエリを GoogleSQL に更新する方法については、GoogleSQL 移行ガイドをご覧ください。
pandas-gbq
:
google-cloud-bigquery
:
BigQuery Storage API を使用してサイズが大きい結果をダウンロードする
BigQuery Storage API を使用すると、サイズが大きい結果(15~31 倍)を高速でダウンロードできます。
pandas-gbq
:
google-cloud-bigquery
:
構成を含むクエリの実行
パラメータ化クエリの実行や、クエリ結果を保存する抽出先テーブルの指定など、複雑な操作を実行するには、BigQuery API リクエストで構成を送信する必要があります。pandas-gbq
では、BigQuery REST リファレンスで指定された形式の辞書として構成を送信する必要があります。google-cloud-bigquery
には QueryJobConfig
などのジョブ構成クラスがあり、複雑なジョブの構成に必要なプロパティが用意されています。
次のサンプルは、名前付きパラメータを使用してクエリを実行する方法を示します。
pandas-gbq
:
google-cloud-bigquery
:
BigQuery テーブルに pandas DataFrame を読み込む
どちらのライブラリも、pandas DataFrame から BigQuery の新しいテーブルへのデータのアップロードをサポートしています。主な違いは次のとおりです。
pandas-gbq | google-cloud-bigquery | |
---|---|---|
サポートされる型 | DataFrame を CSV 形式に変換して API に送信します。ネストした値や配列値はサポートされません。 | DataFrame を Parquet 形式または CSV 形式に変換してから API に送信します。ネストされた値と配列値がサポートされます。構造体と配列の値には Parquet を選択します。日付と時刻のシリアル化の柔軟性を高めるには CSV を選択します。Parquet がデフォルトの選択肢です。DataFrame をテーブルに読み込むには、pyarrow (DataFrame のデータを BigQuery API へ送信するのに使う parquet エンジン)をインストールする必要があります。 |
読み込みの構成 | BigQuery REST リファレンス指定の形式で辞書として送信します。 | さまざまな API 構成オプションのプロパティを含む LoadJobConfig クラスを使用します。 |
pandas-gbq
:
google-cloud-bigquery
:
google-cloud-bigquery
パッケージを使用するには、pyarrow
ライブラリで Pandas DataFrame を Parquet ファイルにシリアル化する必要があります。
次の方法で、pyarrow
パッケージをインストールします。
conda install -c conda-forge pyarrow
または
pip install pyarrow
pandas-gbq がサポートしない機能
pandas-gbq
ライブラリには、データのクエリやテーブルへの書き込みに役立つインターフェースがありますが、次に挙げるような BigQuery API の機能の多くに対応していません。
- データセット管理: 新しいデータセットの作成、データセットのプロパティの更新、データセットの削除など
- pandas DataFrames 以外の形式のデータの BigQuery への読み込み
- テーブル管理: データセット内のテーブルの一覧表示、テーブルデータのコピー、テーブルの削除など
- Cloud Storage に直接、BigQuery データをエクスポートすること