【BigQuery】ColaboratoryでBigQueryのデータを読み書きする方法

Python

前回はGドライブのCSVファイルやスプレッドシートからデータを読み書きする方法をまとめましたが、今回はBigQueryデータの読み書きについてまとめたいと思います。

本当であれば1つの記事にまとめたかったのですが、思いのほかボリュームが大きかったために別記事としました。

データレイクとしてBigQueryを利用している企業が多いため、今回のテクニックはビックデータの解析をするPython/Colaboratoryとの相性は抜群だと思います。

ad

準備

GCPのAPIキーの取得

ColaboratoryはGCPアカウントと紐付けがされているわけではないので、GCPサービスであるBigQueryにアクセスする際は事前にリンクする必要があります。

そもそものユーザーにGCPアクセス権限がなければ何もできないため、必要であればGCPアカウントを作成してBigQueryのアクセス権限を付与してください。

from google.colab import auth
auth.authenticate_user()

を実行すると接続認証へのリンクが表示されるため、画面遷移でアクセスリクエストの許可を行い、ログインコードをコピーして、もとのColaboratoryページにてログインコードを入力してください。

何もエラーが表示されなければOKです

読み込み

BigQueryのデータはPandasを利用して取得します。

pd.io.gbq.read_gbq()関数に実行したいSQL文とプロジェクト名を指定すればOKです。

import pandas as pd

# プロジェクトの定義
project_id='myProject'
# 発行するSELECT分を定義
sql='''
SELECT age, total, male, female
FROM population_of_wako
ORDER BY age ASC
'''

# SELECT文の実行
df=pd.io.gbq.read_gbq( sql, project_id=project_id )
# 取得結果を表示
df.head(2)

実行自体は1行でできるため超簡単です。

age total male female
1 0 798 392 406
2 1 814 414 400

書き込み

BigQueryの書き込みは読み込みよりももっと簡単です。

登録したいデータをデータフレームにセットしてto_gbq()関数を呼び出すだけです。

# プロジェクトの定義
project_id='myProject'
# テーブル名の定義
table='population_of_wako_2'

# データフレームの内容をBigQueryのテーブルに追加
df.to_gbq( table, project_id=project_id, if_exists="append") 

エラーの表示なく登録ができたら指定したテーブル(今回の場合は'population_of_wako_2')にデータが格納されます。

ちなみに引数で指定するif_existsには以下の指定ができます

if_exists 内容
fail 指定したテーブルが存在していたら、TableCreationErrorを発生させる
replace 指定したテーブルが存在していたら、テーブルの上書きをする
append 指定したテーブルが存在していたら、データを追記する

今回はappendを指定しているため、テーブルにデータを追記しているイメージとなります。

コメント