Man*_*ero 9 python google-api google-bigquery
我正在用 python 设计一个 BigQuery 作业,它更新并插入到多个表中。我想到了两种方法来实现这一目标:
执行查询作业并将结果保存到带有更新/插入指示器的临时表中,然后处理它们。但是不清楚如何使用 python 库进行更新。
将整个数据加载到新的分区表中并跳过更新/插入。它需要比我想要的更多空间,但无论如何分区都会在几天内过期。
我错过了什么吗?还有其他方法可以实现这一目标吗?
vre*_*pue 12
使用Google BigQuery API时,您可以简单地使用数据操作语言 (DML) 语句而不是 SQL 查询。
例如,为了更新下表中的特定行:
Inventory
+-------------------+----------+--------------------+
| product | quantity | supply_constrained |
+-------------------+----------+--------------------+
| dishwasher | 30 | NULL |
| dryer | 30 | NULL |
| front load washer | 30 | NULL |
| microwave | 30 | NULL |
+-------------------+----------+--------------------+
Run Code Online (Sandbox Code Playgroud)
您可以使用以下代码:
from google.cloud import bigquery
client = bigquery.Client()
dml_statement = (
"UPDATE dataset.Inventory "
"SET quantity = quantity - 10 "
"WHERE product like '%washer%'")
query_job = client.query(dml_statement) # API request
query_job.result() # Waits for statement to finish
Run Code Online (Sandbox Code Playgroud)
得到以下结果:
Inventory
+-------------------+----------+--------------------+
| product | quantity | supply_constrained |
+-------------------+----------+--------------------+
| dishwasher | 20 | NULL |
| dryer | 30 | NULL |
| front load washer | 20 | NULL |
| microwave | 30 | NULL |
+-------------------+----------+--------------------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11543 次 |
| 最近记录: |