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