【发布时间】:2016-08-24 05:10:35
【问题描述】:
我想在 Google BigQuery 中将一个包含 1.2 亿行的表拆分为多个大小相同的表。我发现这个answer 是一个关于获取表格行号的问题。示例解决方案是:
SELECT
ROW_NUMBER() OVER() row_number,
contributor_username,
FROM (
SELECT contributor_username,
FROM [publicdata:samples.wikipedia]
GROUP BY contributor_username
)
这将允许您获得一个row_number,然后您可以通过手动选择来创建一个表
WHERE row_number BETWEEN x AND y
这适用于示例中的表,但使用 ROW_NUMBER() 会为具有 117MM 行的表产生资源超出错误。
然后我尝试了以下想法:
SELECT field1, field2
FROM (
SELECT field1, field2, ntile(100) over (order by row_id ) as ntile
FROM (
SELECT hash(some_unique_key) as row_id, field1, field2
FROM table_with_177_MM_rows
)
)
WHERE ntile = 1
然后我需要为 ntile=[1,...,100] 运行它。这也失败了。有什么办法可以将GBQ中带有唯一键的大表拆分成小表?
【问题讨论】:
标签: google-bigquery