前回に引き続きgoogle-cloud-bigqueryのライブラリを使ってpythonでBigQueryの操作を行います。
★Pythonでのgoogle-cloud-bigqueryライブラリを利用したBigQueryの操作を標準SQLとレガシーSQLで実施(データの取得)
https://developer-collaboration.com/2019/03/28/python-google-cloud-bigquery-1/
前回はSELECTでのデータ取得だけでしたので、今回はデータの登録と更新を行います。
尚、テーブルとしては以下のような構成としています。
1 2 3 4 5 6 7 8 9 10 11 12 |
[ { "name": "name", "type": "string" }, { "name": "id", "type": "integer" } ] |
データの登録(insert)
それではデータの登録から。
DMLでのデータの登録は標準テーブル、分割テーブルともに制限がありますので、確認をしておいた方が良いです。
・割り当てと制限
https://cloud.google.com/bigquery/quotas?hl=ja
さて、データ登録のプログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
from google.cloud import bigquery import os credentials_json = './credentials.json' os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = credentials_json ## Set Project ID project = "project_name" ## Set Dataset dataset = "dataset" ## Set Table table = "table" bigquery_client = bigquery.Client() query = "INSERT INTO `{0}.{1}.{2}` (name, id) SELECT 'taro', 10".format(project, dataset, table) rows = bigquery_client.query(query).result() |
データの更新(update)
続いてデータの更新です。
こちらについても上記の「割り当てと制限」のページにありますように、「UPDATE、DELETE、および MERGE の各ステートメントを組み合わせた実行数の 1 日あたりのテーブルあたり最大値 - 200」と制限が非常に厳しいので注意が必要です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
from google.cloud import bigquery import os credentials_json = './credentials.json' os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = credentials_json ## Set Project ID project = "project_name" ## Set Dataset dataset = "dataset" ## Set Table table = "table" bigquery_client = bigquery.Client() query = "UPDATE `{0}.{1}.{2}` SET name = 'hanako' WHERE id = 10".format(project, dataset, table) rows = bigquery_client.query(query).result() |
DSL操作なので共に標準SQLを使用しています。
では、今回はこの辺で。
★関連記事
・Pythonでのgoogle-cloud-bigqueryライブラリを利用したBigQueryの操作を標準SQLとレガシーSQLで実施(データの取得)
・Pythonでのgoogle-cloud-bigqueryライブラリを利用したBigQueryでのパーティションを利用したデータの挿入と検索
・Pythonでのgoogle-cloud-bigqueryライブラリを利用したBigQueryへのストリーミング挿入
このブログは株式会社CoLabMixによる技術ブログです。
GCP、AWSなどでのインフラ構築・運用や、クローリング・分析・検索などを主体とした開発を行なっています。
Ruby on RailsやDjango、Pythonなどの開発依頼などお気軽にお声がけください。
開発パートナーを増やしたいという企業と積極的に繋がっていきたいです。