【发布时间】:2021-06-18 21:26:42
【问题描述】:
我想使用 BigQuery 客户端检查 dml_affected_rows 的值。
我已检查 [1],当查询(或 DML)包含单个作业时它可以工作。但是,当结果是像下面的脚本一样从儿童的作业中写入时,num_dml_affected_rows 是无效的。如何查看子作业的num_dml_affected_rows。我的想法如下。
query_job.children_job[-1].num_dml_affected_rows #(最后一个子 dml 结果)
但是从文档 [2, 3] 中找不到正确的方法(或方法)来完成它。
[1]BigQuery update how to get number of updated rows
[2]BQ REST
[3]BQ Client API (dev)
示例脚本 (python3)
sql = """
INSERT `project.dataset.table` (logdatetime)
SELECT
CURRENT_DATETIME() as logdatetime
;
SELECT 1
;
INSERT `project.dataset.table` (logdatetime)
SELECT
CURRENT_DATETIME() as logdatetime
;
"""
query_job = bigquery.Client().query(sql)
query_job.result()
print(query_job.num_child_jobs) # 3
print(query_job.num_dml_affected_rows) # None
附言我目前的解决方案是在 DML 之前和之后存储 destination table 的行数以检查差异,但如果我能够直接访问子作业的 DML 结果,则这是不必要的。
【问题讨论】:
标签: google-bigquery