python-3.x - 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()
我认为这几乎是您需要的所有代码,但如果需要,我们很乐意提供更多。
解决方案
您看到此错误是因为您的查询中有 DDL 语句。正在发生的事情是job_config
在执行第一个查询后更改了一些值,尤其是job_config.destination
. 为了尝试克服此问题,您可以尝试在每次提交作业后将值重置为 None 或为每个查询job_config.destination
使用不同的值。job_config
推荐阅读
- c# - 从子类访问隐藏的属性
- laravel - 引导模式 onclick 关闭
- ansible - 无法使用gather_facts true运行ansible playbook
- google-drive-api - 如何将文件从 jupyter 实验室复制到 Google 驱动器
- bash - BASH:如何将具有导出环境变量的文件聚合到属性文件
- coded-ui-tests - 无法从 codedui 中的 WinList 中选择项目
- python - Python Web 服务 - 仅允许 TLS 1.1 和 1.2
- excel - 组合 3 个 VBA 代码并将其作为单个代码运行
- hazelcast - spring boot 中的 cacheput-annotation-not-updating-cache-hazelcast-cache
- artificial-intelligence - 在股票交易中如何保证股票数量