前回に引き続きgoogle-cloud-bigqueryのライブラリを使ってpythonでBigQueryの操作を行います。
前回まではBigQueryへのデータ登録などはDMLでのデータの登録を行なっていましたが制限が多くあります。
・割り当てと制限
https://cloud.google.com/bigquery/quotas?hl=ja
そこで、データの登録量の多い時にデータの登録をおこな方法としてはストリーミング挿入での登録を行います。
・BigQuery へのデータのストリーミング
https://cloud.google.com/bigquery/streaming-data-into-bigquery?hl=ja
・Life of a BigQuery streaming insert
https://cloud.google.com/blog/products/gcp/life-of-a-bigquery-streaming-insert
BigQuery へストリーミング挿入でデータの登録
以下はシンプルなストリーミング挿入での方法です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
from google.cloud import bigquery import os credentials_json = './credentials.json' os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = credentials_json ## Set Project ID my_project = "project_name" ## Set Dataset my_dataset = "dataset" ## Set Table my_table = "table" bigquery_client = bigquery.Client(project = my_project) json_rows = [ {"name": "taro", "id": 50} ] dataset_ref = bigquery_client.dataset(my_dataset) table_ref = dataset_ref.table(my_table) table = bigquery_client.get_table(table_ref) result = bigquery_client.insert_rows_json(table, json_rows) |
最後の「result」の中にエラーの結果が入ってきます。
尚、ストリーミング挿入ではDMLとは違い結果が反映されるのに時間がかかります。
30分以上の時間がかかることが普通にあるので即時性のある操作は行えません。
最大90分の待機時間を要する場合があります。
また、サンプルではデータを1件登録していますが、1度の登録でのデータは500件程度の登録を推奨されています。(最大、10,000件)
これらをうまく使いデータの登録をする必要があります。
★関連記事
・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などの開発依頼などお気軽にお声がけください。
開発パートナーを増やしたいという企業と積極的に繋がっていきたいです。