当我执行这段Python代码时:
body = {
'configuration': {
'query': {
'destinationTable': {
'projectId': PROJECT_ID,
'tableId': 'new_items',
'datasetId': 'data_set'
},
'writeDisposition': 'WRITE_TRUNCATE',
'allowLargeResults': True,
'query': 'select item from data_set.items where item not in (select item from data_set.old_items);'
}
}
}
job = service.jobs().insert(projectId = PROJECT_ID, body = body).execute()
尽管将allowLargeResults
设置为True,但我收到此错误:
响应太大而无法返回。考虑在作业配置中将allowLargeResults设置为true。
有人可以解释这个的原因,并给我一个如何摆脱这个错误的提示吗?
答案 0 :(得分:1)
我怀疑这个错误是由于查询生成结果的其中一个阶段造成的。最有可能的是它在NOT IN半连接中使用的SELECT。我能想到的唯一解决方法是将查询重写为
select a.item from
data_set.items a
left outer join each
data_set.old_items b
on a.item = b.item
where b.item IS NULL
NOT IN semijoin子句不允许使用EACH修饰符,但LEFT OUTER JOIN允许它,这应该使查询比例。