有什么方法可以取消正在运行的查询吗?
我使用网络界面。首先,我对10k和20k行的表进行了一系列测试,响应时间为秒。但是我在一个100k行的表上运行三连接查询,经过几千秒后似乎无穷无尽。
我只想在将所有工作转移到bigquery之前进行一些测试,但现在我担心它会花费整个月100gb的免费限制+更多。
该表是整数值的简单键值对。
答案 0 :(得分:6)
shell命令bq cancel job_id
现在将执行此操作。您可以从BigQuery控制台中的查询历史记录标签中获取job_id
。如果您通过CLI启动查询,它会将job_id
记录到标准输出。
答案 1 :(得分:3)
目前无法通过API或UI停止正在运行的查询。您可以关闭查询构建器(通过UI右上角的“x”)并再次重新打开它以使UI再次响应。我们目前正在使用此功能。
令人惊讶的是,对于该大小的表,查询将花费很长时间,即使对于连接也是如此,除非您的连接加入了非唯一键,因此花费时间生成匹配键的交叉产品。例如:
SELECT t1.foo
FROM (SELECT 1 as one, foo FROM table1) t1
JOIN (SELECT 1 as one, bar FROM table2) t2
ON t1.one = t2.one
将生成n x m行,其中n是table1中的行数,m是table2中的行数。您的查询是否有可能做类似的事情?如果没有,你可以发送查询吗? (可能在另一个SO问题中,与慢速连接性能有关)。
答案 2 :(得分:1)
我们在使用Java API时找不到停止作业的方法,据我所知,你无法在网络界面停止工作。