在保留订单的同时查询大结果

时间:2015-11-18 02:58:01

标签: google-bigquery

我需要从日志表中查询相当多的行(大约4,000,000个),以便将它们保存到CSV文件中。 我的查询如下:

SELECT
  time_unixtime
  field1,
  field2,
  field3
FROM
  dataset.execute_log20151118
WHERE
  field9 = 'unique_id'
ORDER BY
  time_unixtime

当我使用SDK运行它时,我遇到Resources exceeded during query execution错误,这是有道理的,因为数据可能会超过128 MB compressed limit。 在作业配置中启用allowLargeResults标志似乎是一种自然的解决方案,但这会禁止查询对结果进行排序。当然,我仍然可以在没有ORDER BY的情况下运行查询,然后在本地对结果进行排序,但这看起来不是一个好的解决方案。
有没有更有效的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

我唯一的想法是通过在time_unixtime字段上放置过滤器将此查询分解为多个 - 每次限制查询到可以适合ORDER BY的数据子集。然后,您将得到几个CSV文件,每个文件按time_unixtime排序,并且它们可以连接成单个排序文件。