我需要使用'其中'来过滤一些数据。来自表格的子句,其大小超过1.2 TB,行数约为28亿。
我开始使用小型数据表(约21百万行和9.6个表格大小)测试数据过滤,方法是设置一个目的地表并启用“允许大结果”#39;在工作配置中。
我的查询非常简单:
SELECT * FROM [mydataset.mytable] Where DATETIME >= '2014-03-17 00:00:00' and DATETIME <= '2014-03-17 23:59:59';
我使用了BigQuery Browser Tool和bq命令行工具,但是,我得到的响应太大而无法返回&#39;每次运行此查询时都会出错。
在此处http://goo.gl/b6pNjA的文档中,Google说:
- 如果您计划运行可能返回较大结果的查询,则可以在作业配置中将allowLargeResults设置为true。
- 您必须指定目的地表。
- 您无法指定顶级ORDER BY子句。
- 窗口函数无法返回大量查询结果。
我的查询非常简单,不包含任何窗口函数。那么,为了绕过这个问题,我是否可以使用特定的查询语法来成功运行查询?
请注意,在http://goo.gl/zkSN32处,指定最大响应大小为128 MB压缩,并且在返回大型查询结果时无限制,如上面的链接(http://goo.gl/b6pNjA)所述。
答案 0 :(得分:2)
正如N.N所说,为了避免在这种情况下“响应太大而无法返回”错误,它应该使用select *来声明select子句中的所有字段。
我尝试通过声明select语句中的所有字段,设置目标表并启用“允许大结果”来运行相同的查询,它运行正常。
查询完成(已经过了115.6秒,处理了298 GB)。
目的地表的行数:77,796,259。