首页 > 解决方案 > Google Cloud Bigquery 库错误

问题描述

我收到此错误 Cannot set destination table in jobs with DDL statements

当我尝试从库job.build_resource()中的函数重新提交作业时google.cloud.bigquery

在该函数调用之后,目标表似乎设置为这样的东西。

'destinationTable': {'projectId': 'xxx', 'datasetId': 'xxx', 'tableId': 'xxx'},

我在这里做错了吗?感谢任何可以在这里给我任何指导的人。

编辑:

该作业最初是由此触发的

query = bq.query(sql_rendered)

我们存储作业 ID 并稍后使用它来检查状态。

我们得到这样的工作

job = bq.get_job(job_id=job_id)

如果它满足一个条件,在这种情况下它由于速率限制而失败。我们重试该工作。

我们像这样重试工作

di = job._build_resource()
jo = bigquery.Client(project=self.project_client).job_from_resource(di)
jo._begin()

我认为这几乎是您需要的所有代码,但如果需要,我们很乐意提供更多。

标签: python-3.xgoogle-bigquerygoogle-cloud-python

解决方案


您看到此错误是因为您的查询中有 DDL 语句。正在发生的事情是job_config在执行第一个查询后更改了一些值,尤其是job_config.destination. 为了尝试克服此问题,您可以尝试在每次提交作业后将值重置为 None 或为每个查询job_config.destination使用不同的值。job_config


推荐阅读