10

有什么方法可以取消正在运行的查询?

我使用网络界面。首先,我对 10k 行和超过 20k 行的表进行了一系列测试,响应以秒为单位。但比我在 100k 行的表上运行三联查询,几千秒后它似乎没完没了。

我只是想在将所有工作转移到 bigquery 之前运行一些测试,但现在恐怕它会花费整个每月 100gb 的免费限制 + 更多。

该表是一个简单的整数值键值对。

4

3 回答 3

15

shell 命令bq cancel job_id现在将执行此操作。您可以job_id从BigQuery 控制台的“查询历史记录”选项卡中获取。如果您通过 CLI 启动查询,它将记录job_id到标准输出。

于 2016-02-01T22:35:05.310 回答
3

目前没有办法通过 API 或 UI 停止正在运行的查询。您可以关闭查询生成器(通过 UI 右上角的“x”)并重新打开它以使 UI 再次响应。我们目前正在 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

将生成 nxm 行,其中 n 是 table1 中的行数,m 是 table2 中的行数。您的查询是否有可能做类似的事情?如果没有,您可以发送查询吗?(也许在另一个 SO 问题中,与慢速连接性能有关)。

于 2013-03-21T20:06:56.473 回答
1

在使用 Java API 时,我们没有找到停止作业的方法,据我所知,您无法在 Web 界面上停止作业。

于 2013-03-21T16:39:50.007 回答