BigQuery Storage API を使用すると、BigQuery に保存されたデータにすばやくアクセスできます。BigQuery に保存されたデータを Python 用 pandas ライブラリなどの分析ツールで使用するには、BigQuery Storage API を使用してこれらのデータをダウンロードします。
目標
このチュートリアルでは、次のことができます。
- Jupyter ノートブック内の BigQuery 用 IPython マジックから BigQuery Storage API を使用して、クエリ結果を pandas DataFrame にダウンロードする。
- Python 用 BigQuery クライアント ライブラリを使用して、クエリ結果を pandas DataFrame にダウンロードする。
- Python 用 BigQuery クライアント ライブラリを使用して、BigQuery テーブルのデータを pandas DataFrame にダウンロードする。
- Python 用 BigQuery Storage API クライアント ライブラリを使用して、BigQuery テーブルのデータを pandas DataFrame にダウンロードする。
料金
BigQuery は有料プロダクトであり、クエリを実行すると BigQuery の使用料金が発生します。処理されるクエリデータは毎月 1 TB まで無料です。詳細については、BigQuery の料金ページをご覧ください。
BigQuery Storage API は有料プロダクトであり、DataFrame をダウンロードするときにスキャンするテーブルデータに対して使用料金が発生します。詳細については、BigQuery の料金ページをご覧ください。
始める前に
このチュートリアルを始める前に、Google Cloud Console を使用して、プロジェクトを作成または選択し、課金を有効にします。
- Google アカウントにログインします。
Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する。
- 新しいプロジェクトでは、BigQuery が自動的に有効になります。既存のプロジェクトで BigQuery を有効にするには BigQuery, BigQuery Storage API API を有効にします。
- Python 開発環境を設定します。
Python を設定する - 開発環境に対する認証を設定します。
認証を設定する
このチュートリアルを始める前に、BigQuery 用 IPython マジック コマンド、BigQuery クライアント ライブラリ、pandas でのクライアント ライブラリの使用方法についても理解しておく必要があります。
クライアント ライブラリのインストール
BigQuery Python クライアント ライブラリ バージョン 1.9.0 以降と BigQuery Storage API Python クライアント ライブラリをインストールします。
PIP
google-cloud-bigquery
パッケージと google-cloud-bigquery-storage
パッケージをインストールします。
pip install --upgrade 'google-cloud-bigquery[bqstorage,pandas]'
Conda
コミュニティが運営する conda-forge
チャンネルから BigQuery パッケージと BigQuery Storage API Conda パッケージをインストールします。
conda install -c conda-forge google-cloud-bigquery \
google-cloud-bigquery-storage \
pandas \
pyarrow
BigQuery 用 IPython マジックを使用してクエリ結果をダウンロードする
Jupyter ノートブック サーバーを起動し、新しい Jupyter ノートブックを作成します。%load_ext
マジック コマンドを使用して、BigQuery 用 IPython マジック コマンドを読み込みます。
%load_ext google.cloud.bigquery
BigQuery Storage API でサイズの大きいクエリ結果をダウンロードするには、%%bigquery
マジック コマンドに --use_bq_storage_api
引数を追加します。
小さいサイズのクエリ結果にこの引数を使用すると、BigQuery API を使用して結果がダウンロードされます。
BigQuery Storage API がデフォルトで使用されるようにするには、context.use_bqstorage_api
プロパティを True
に設定します。
context.use_bqstorage_api
プロパティを設定した後、引数を追加せずに %%bigquery
マジックを実行すると、BigQuery Storage API を使用してサイズの大きい結果がダウンロードされます。
Python クライアント ライブラリを使用する
Python クライアントを作成する
次のコードを使用して、BigQuery Client
オブジェクトと BigQueryStorageClient
を作成します。
google-auth Python ライブラリを使用して、両方の API に十分に対応できる認証情報を作成します。認証が 2 回行われないよう、それぞれのコンストラクタに認証情報オブジェクトを渡します。
BigQuery クライアント ライブラリを使用してクエリ結果をダウンロードする
query
メソッドを使用してクエリを実行します。to_dataframe
メソッドを呼び出し、クエリが完了して結果が BigQuery Storage API によってダウンロードされるまで待ちます。
BigQuery クライアント ライブラリを使用してテーブルデータをダウンロードする
list_rows
メソッドを使用してテーブル内の行をすべてダウンロードします。このメソッドは RowIterator
オブジェクトを返します。bqstorage_client
引数を指定して to_dataframe
メソッドを呼び出すことで、BigQuery Storage API を使用して行をダウンロードします。
BigQuery Storage API クライアント ライブラリを使用してテーブルデータをダウンロードする
フィルタや並列処理のきめ細かな制御を直接行うには、BigQuery Storage API クライアント ライブラリを使用します。シンプルな行フィルタのみが必要な場合は、クエリの代わりに BigQuery Storage API 読み取りセッションを使用できます。
読み取り対象のテーブルに関する TableReference オブジェクトを作成します。列の選択や行のフィルタ処理を行う TableReadOptions オブジェクトを作成します。create_read_session
メソッドを使用して読み取りセッションを作成します。
セッションにストリームが存在する場合は、read_rows
メソッドを使用して、そのストリームから行の読み取りを開始します。その読み取りに対して to_dataframe
メソッドを呼び出し、ストリーム全体を pandas DataFrame に書き込みます。パフォーマンスを向上させるには、複数のストリームから並列に読み取りますが、このコード例では単純にするために単一のストリームから読み取ります。
すべての例のソースコード
クライアント ライブラリのすべての例の完全なソースコードをご覧ください。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
プロジェクトを削除します。このチュートリアルでは BigQuery リソースを作成しませんでしたが、プロジェクトを削除すると、作成した他のすべてのリソースも削除されます。- Cloud Console で [リソースの管理] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
次のステップ
- Python クライアント ライブラリの次のリファレンスを参照する