datalab Python パッケージからの移行
datalab
Python パッケージは、Datalab ノートブックで Google Cloud サービスとやり取りするために使用されます。datalab
Python パッケージには、BigQuery API メソッドのサブセットをサポートする、google.datalab.bigquery
などの Jupyter マジックと Python モジュールが含まれています。
BigQuery クライアント ライブラリ(google-cloud-bigquery
)は、BigQuery の操作に使用される公式の Python ライブラリです。このクライアント ライブラリでは、クエリ実行用の Jupyter セルマジック、pandas DataFrame を使用してデータを送受信するための関数を備え、BigQuery のフル機能もサポートしています。以下のコード例では、datalab
Python パッケージに精通しているデベロッパー向けに、google-cloud-bigquery
ライブラリを使用して BigQuery の一般的なオペレーションを実行する方法を説明します。
以下のコード スニペットで使用されているライブラリのバージョンを確認するには、requirements.txt ファイルをご覧ください。
Jupyter マジックとシェルコマンドを使う
どちらのライブラリでも、BigQuery に保存されているデータにセルマジックでクエリを行うことができます。2 つのライブラリのマジックに対するアプローチの主な違いは以下のとおりです。
datalab |
google-cloud-bigquery |
|
---|---|---|
マジック名 | bq |
bigquery |
Jupyter 拡張機能名(マジックの読み込み用) | google.datalab.kernel |
google.cloud.bigquery |
クエリ実行 | 定義と実行は別々の手順で行えます。 | マジック コマンドの実行で、常にすぐ実行される。 |
マジックでサポートされる機能 | 一部機能はサポートされない。 | クエリのみ。BigQuery の他の機能については、コマンドライン ツールまたは google.cloud.bigquery.Client メソッドを使用してください。 |
クエリ結果の保存 | クエリマジックで抽出先テーブルに保存できるが、変数には格納できない。変数に保存するには、マジックの代わりに python を使用してクエリを実行します(例を参照)。 | クエリマジックで変数に保存できるが、抽出先テーブルには格納できない。抽出先テーブルに保存するには、マジックの代わりに python を使用してクエリを実行します(例を参照)。 |
Python クライアント ライブラリのインストール
BigQuery クライアント ライブラリと、pandas DataFrame の使用に必要な依存関係をインストールするには、ノートブックで次のコマンドを入力します。
!pip install --upgrade 'google-cloud-bigquery[bqstorage,pandas]'
パッケージをインストールした後、カーネルを再起動します。
マジックの読み込み
Jupyter マジックはノートブック固有のショートカットです。これを使用すると最小限の構文でコマンドを実行できます。Jupyter ノートブックには、あらかじめ多数の組み込みコマンドが読み込まれています。datalab
および google-cloud-python
Python パッケージには追加のマジック コマンドが実装されており、Jupyter ノートブック(Datalab を含む)に読み込んで、Google Cloud とのやり取りに使用できます。
datalab
Datalab ノートブックには、あらかじめ datalab
マジックが読み込まれています。Jupyter ノートブックにこのマジックを読み込むには、次のコマンドを入力します。
%load_ext google.datalab.kernel
マジックを読み込む他の方法については、datalab
ライブラリのソース リポジトリをご覧ください。
google-cloud-bigquery
BigQuery マジックを読み込むには、次のコマンドを入力します。
%load_ext google.cloud.bigquery
BigQuery のセルマジックは、google-cloud-bigquery
パッケージがインストールされているノートブックであれば動作します。
クエリの実行
次の例は、セルマジックを使用したクエリの実行方法を示しています。どちらの例も、クエリを実行し、結果を入力セルの下に表示します。
datalab
google-cloud-bigquery
クエリを実行して結果を変数に保存する
次の例では、クエリを実行する方法と、結果を my_variable
という変数に格納する方法を説明します。
datalab
datalab
クエリマジックを使用すると、SQL クエリを実行することなく、その内容を --name
または -n
フラグで指定した名前の変数に保存できます。google-cloud-bigquery
その他のコマンド
google-cloud-bigquery
ライブラリには、クエリを実行するためのセルマジックが 1 つあるだけですが、datalab
ライブラリには、さまざまな種類の BigQuery オペレーションのためのマジックがあります。クエリ以外のオペレーションをコマンドで実行するには、コマンドライン ツールを使用します。次の例では、datalab
セルマジックまたは BigQuery シェルコマンドを使用して、bigquery-public-data
プロジェクトの samples
データセット内のすべてのテーブルを表示します。
datalab
bq コマンドライン ツール
Google Cloud CLI の一部としてインストールされる bq コマンドライン ツールを使用するには、Google Cloud CLI のインストール手順に沿ってください。ノートブックではシェルコマンドの前には !
を付けなければなりません。bp コマンドライン ツールが設定され、ノートブックから利用可能になったら、次のコマンドを入力します。これは、上記の datalab
セルマジックと同等のコマンドです。
!bq ls bigquery-public-data:samples
すべてのコマンドの一覧を表示するには、次のように入力します。
!bq help
Python コードの使用
Jupyter マジックに加えて、datalab
および google-cloud-bigquery
パッケージの両方で Python メソッドを使用して BigQuery オペレーションを実行することもできます。
クエリの実行
どちらのライブラリでも、クエリを実行して、結果を pandas DataFrame として返すことができます。
datalab
google-cloud-bigquery
BigQuery テーブルにデータを読み込む
次の例は、新しいデータセットを作成し、Cloud Storage の CSV ファイルから新しいテーブルにデータを読み込む方法を示しています。
datalab
google-cloud-bigquery
BigQuery Python クライアント ライブラリの使用例については、データのバッチ読み込みと BigQuery へのデータのストリーミングをご覧ください。
BigQuery テーブルに pandas DataFrame を読み込む
次の例は、新しいデータセットを作成し、pandas DataFrame から新しいテーブルにデータを読み込む方法を示しています。
データセットの作成など、特定の BigQuery オペレーションにはロケーションが必要です。google-cloud-bigquery
クライアントが初期化されるときにロケーションを指定すると、そのロケーションが、クライアントで作成されたジョブ、データセット、テーブルのデフォルト ロケーションになります。datalab
ライブラリには、データセットやジョブのロケーションを指定する方法がないため、予期しない動作となる可能性があります。詳細については、データセットのロケーションをご覧ください。
datalab
datalab
ライブラリは、pandas DataFrame から BigQuery テーブルにデータを読み込むときに、ストリーミング挿入を行います。このため、クエリでデータをすぐに利用できない場合があります。詳細については、BigQuery へのデータのストリーミングをご覧ください。