PythonでBig Queryを操作する

PythonでBig Queryを操作します.

# ライブラリのインストール

下記のコードでライブラリをインストールします.

!pip install pandas-gbq
!pip install -U pyarrow
!pip install --upgrade pandas-gbq 'google-cloud-bigquery[bqstorage,pandas]'

# BigQueryと接続

下記のコードでPandasとBig Queryを接続させます.

from google.cloud import bigquery

# keyとなるjsonファイルを読み込み
KEY_PATH = '****.json'
bq_client = bigquery.Client.from_service_account_json(KEY_PATH)

# データセットの生成

下記のコードでBig Queryのデータセットを生成します.

# データセットの生成
dataset_id = '*****'
bq_client.create_dataset(dataset_id)

# データセットのリストを出力
for ds in bq_client.list_datasets():
    print(ds.dataset_id)

# テーブルの作成

# データの読み込み

下記のコードでBigQueryに入れるデータフレームを作成します.

import glob
import pandas as pd

# csvの読み込み
path = "****.csv"
df = pd.read_csv(path)

# スキーマの作成

下記のコードでBigQueryに入れるデータの設定をまとめたスキーマを作成します.

# データ型の確認
df_columns = df.dtypes
df_columns = pd.DataFrame(df_columns).reset_index()
df_columns = df_columns.rename(columns={'index': 'columns', 0: 'type'})

# スキーマ
schema = []
for i in range(len(df_columns)):
    column = df_columns['columns'][i]
    dtype = str(df_columns['type'][i]).replace('datetime64[ns]', 'DATETIME')\
                                      .replace('int64', 'INTEGER')\
                                      .replace('float64', 'FLOAT')\
                                      .replace('object', 'STRING')
    schema.append(bigquery.SchemaField(column, dtype, mode="NULLABLE"))
display(schema)

# [SchemaField('******', 'DATETIME', 'NULLABLE', None, (), None),
#  SchemaField('******', 'STRING', 'NULLABLE', None, (), None),
#  SchemaField('******', 'INTEGER', 'NULLABLE', None, (), None),
#  SchemaField('******', 'FLOAT', 'NULLABLE', None, (), None)]

# テーブルの作成

下記のコードでBigQueryのテーブルを作成します.

# table_idを生成(形式 : project_name.dataset_id.table_name)
table_name = '*****'
dataset = bq_client.get_dataset(dataset_id)
table_id = '%s.%s.%s' % (dataset.project, dataset.dataset_id, table_name)

# テーブル生成
table = bigquery.Table(table_id, schema=schema)
bq_client.create_table(table)

# pandasからのデータの投入

pandasのDataFrameからそのままデータを投入します.

# Tableを取得
table = bigquery.Table(table_id, schema=schema)

# DataFrameを投入
bq_client.insert_rows_from_dataframe(table, df)

# テーブルの削除

下記のコードでテーブルを削除します.

# テーブルの削除
table = dataset.table(table_name)
bq_client.delete_table(table)

# まとめ

PythonでBig Queryを操作させました.

# 参考サイト

PythonでBigQueryの操作 (opens new window)

BigQuery ↔ Pandas間で読み込み/書き込み (opens new window)

[BigQuery] BigQueryのPython用APIの使い方 -テーブル作成編- (opens new window)

Kepler.glをJupyterNotebook上で扱ってみた

Kepler.glをJupyterNotebook上で扱ってみた

Kepler.glをJupyterNotebook上で扱ってみます.

VuepressでGoogle AdSense広告を表示する

VuepressでGoogle AdSense広告を表示する

VuepressでGoogle AdSense広告を表示できるようにします.

本稿の設定の利点は,自分で広告コードを貼り付ける必要がなくなることです.