【发布时间】:2013-03-21 16:24:33
【问题描述】:
有什么方法可以取消正在运行的查询吗?
我使用网络界面。首先,我对 10k 行和超过 20k 行的表进行了一系列测试,响应以秒为单位。但是我在 100k 行的表上运行三重联接查询,几千秒后它似乎无穷无尽。
我只是想在将所有工作转移到 bigquery 之前运行一些测试,但现在我担心它会花费整个每月 100gb 的免费限制 + 更多。
该表是一个简单的整数值键值对。
【问题讨论】:
标签: google-bigquery
有什么方法可以取消正在运行的查询吗?
我使用网络界面。首先,我对 10k 行和超过 20k 行的表进行了一系列测试,响应以秒为单位。但是我在 100k 行的表上运行三重联接查询,几千秒后它似乎无穷无尽。
我只是想在将所有工作转移到 bigquery 之前运行一些测试,但现在我担心它会花费整个每月 100gb 的免费限制 + 更多。
该表是一个简单的整数值键值对。
【问题讨论】:
标签: google-bigquery
shell 命令bq cancel job_id 现在将执行此操作。您可以从 BigQuery 控制台的 Query History 标签中获取 job_id。如果您通过 CLI 启动查询,它会将job_id 记录到标准输出中。
【讨论】:
目前没有办法通过 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
将生成 n x m 行,其中 n 是 table1 中的行数,m 是 table2 中的行数。您的查询是否有可能做类似的事情?如果没有,您可以发送查询吗? (也许在另一个 SO 问题中,与慢连接性能有关)。
【讨论】:
SELECT aa.e1, c.n_id_customer, count(*) from (select a.i_euvn as e1, b.i_euvn as e2 FROM [ovca.ovca100k] a join [ovca.ovca100k] b on a.n_id_customer=b.n_id_customer) as aa join [ovca.ovca100k] c on aa.e2=c.i_euvn group each by 1,2 order by 1,3 desc;
Data Processed Per Day 14 MB,尽管我确定查询吃的更多
我们没有找到在使用 Java API 时停止作业的方法,据我所知,您无法在 Web 界面上停止作业。
【讨论】: