我需要从日志表中查询相当多的行(大约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
的情况下运行查询,然后在本地对结果进行排序,但这看起来不是一个好的解决方案。
有没有更有效的方法来做到这一点?
答案 0 :(得分:1)
我唯一的想法是通过在time_unixtime字段上放置过滤器将此查询分解为多个 - 每次限制查询到可以适合ORDER BY的数据子集。然后,您将得到几个CSV文件,每个文件按time_unixtime排序,并且它们可以连接成单个排序文件。