Python

DataFrameをBigQueryに格納する

pythonを使ってpandasデータフレームをBigQueryに格納する手法について紹介します。

pythonとBigQueryを連携させる手法はいくつかあります。pandas-gbqライブラリを利用するのが一つ目の手法です。簡単に操作できるというメリットはあるものの、データセットのプロパティの更新、データセットの削除などの機能を扱うことができないといったデメリットもあります。

そのため、おすすめは二つ目の手法であるgoogle-cloud-bigqueryライブラリを利用する手法です。ここからは、google-cloud-bigqueryを利用してデータフレームをBigQueryに格納するまでの操作を説明していきます。

google-cloud-bigquery ライブラリを使用して、DataFrameをBigQueryに格納するためには、DataFrameをParquet形式に変換する必要があります。そして、Parquet形式に変換するためにはpyarrowライブラリを利用します。

pip install pyarrow

次に、google-cloud-bigquery ライブラリを読み込み、project idを指定して、clientを生成します。このとき、予めサービスアカウント or ユーザーアカウントでGoogle認証を行っておく必要があります。

from google.cloud import bigquery
client = bigquery.Client(project="project_id")

そして、データセット名と作成されるテーブル名をtable_idとして指定します。さらには、スキーマとして列ごとの型や欠損が認められるかどうかをjob_configに持たせ、jobを実行すると、DataFrameをBigQueryに格納することができます。

table_id = 'dataset_name.table_name'
job_config = bigquery.LoadJobConfig(schema=[
    bigquery.SchemaField("column1", "STRING", mode="NULLABLE"),
    bigquery.SchemaField("column2", "INTEGER", mode="REQUIRED"),
])
job = client.load_table_from_dataframe(
    df, table_id, job_config=job_config
)
job.result()
Y.Y
アナリティクス&デベロップメント所属。画像や時系列など。