小编典典

Python:如何在不到40秒的时间内更新Google BigQuery中的值?

sql

我有一个表GoogleBigQuery,我访问和使用Python中的修改pandas功能read_gbqto_gbq。问题在于,添加100,000行需要大约150秒,而添加1行需要大约40秒。我想更新表中的值而不是添加一行,有没有一种方法可以使用python快速或快于40秒来更新表中的值?


阅读 150

收藏
2021-04-28

共1个答案

小编典典

不确定是否可以使用pandas但可以使用google-cloud库。

您可以只安装(pip install --upgrade google-cloud)并按以下方式运行它:

import uuid
import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'path_to_json_credentials.json'
from google.cloud.bigquery.client import Client

bq_client = Client()

job_id = str(uuid.uuid4())
query = """UPDATE `dataset.table` SET field_1 = '3' WHERE field_2 = '1'"""
job = bq_client.run_async_query(query=query, job_name=job_id)
job.use_legacy_sql = False
job.begin()

在这里,此操作平均需要2s。

附带说明一下,牢记与BQ中DML操作相关的配额很重要,也就是说,知道何时使用它们以及它们是否完全适合您的需求。

2021-04-28