我有一张桌子在Google BigQuery
我使用 Python 访问和修改pandas
功能read_gbq
and to_gbq
。问题是追加 100,000 行大约需要 150 秒,而追加 1 行大约需要 40 秒。我想更新表中的值而不是追加一行,有没有一种方法可以使用非常快或快于 40 秒的 python 更新表中的值?
不确定你是否可以使用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()
这里这个操作平均需要 2 秒。
作为旁注,重要的是要记住quotas https://cloud.google.com/bigquery/quota-policy#datasettableupdates与 BQ 中的 DML 操作相关,即知道何时适合使用它们以及它们是否适合您的需求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)