Bigquery:分区数据超过 2000 限制(更新:现在 4000 限制)[重复]

Posted

技术标签:

【中文标题】Bigquery:分区数据超过 2000 限制(更新:现在 4000 限制)[重复]【英文标题】:Bigquery: Partitioning data past 2000 limit (Update: Now 4000 limit) [duplicate] 【发布时间】:2017-05-22 17:14:07 【问题描述】:

来自分区表的 BigQuery 页面:

每个表最多可以有 2000 个分区。

我们计划按天对数据进行分区。我们的大部分查询都是基于日期的,但我们有大约 5 年的历史数据,并计划从现在开始每天收集更多。只有 2000 个分区:2000/365 为我们提供了大约 5.5 年的数据。

对于需要超过 2000 个分区的表,最佳做法是什么?

每年创建一个不同的表并在需要时连接表? 是否可以改为按周或月分区? 如果您寻求支持,是否可以增加 2000 个分区限制?

更新:表限制现在为 4000 个分区。

【问题讨论】:

它似乎最近更新到 2500。文档现在说:“每个分区表最多可以有 2,500 个分区。” 分区限制现在是 4000。 与其重复提出这个问题然后自己回答,为什么不将您的答案添加到这个问题中呢? @FelipeHoffa 我真的不知道@FelipeHoffa 会发生什么。我很感激你为这个问题写了一个更新和更相关的答案。但是复制这个原始问题然后将原始问题标记为重复似乎也不正确。也许像这样的老问题应该被剔除。我不知道。我会把它留给 SO Mods。 我很感激你试图帮助@FelipeHoffa。但我不知道该怎么办。我已经在 SO 聊天中提出了这个讨论,并向一个 mod 寻求帮助。 【参考方案1】:

我们正在实施 2000 个分区的限制(因此我们提前记录了这一点,以便尽早通知用户)。所以此时这是一个软限制。

创建大量分区会影响性能,因此我们建议将表限制为 2000 个分区。根据表的模式,我们在这里有一些空间,因此如果可以增加,请求支持是合理的。我们将根据我们认为针对该表的操作需要多少资源对其进行审核。

我们希望在未来的某个时候支持更多的分区(高达 10K),但我们正在为此进行必要的设计和实现更改(我们目前还没有 ETA) .

【讨论】:

这有什么更新吗?我看到分区的数量现在最多可以达到 2500 个,但是对于每日分区表,这意味着仍然需要存储 10 年的数据拆分 这实际上并没有回答这个问题 - 对于需要超过 2000 个分区的表来说,最佳实践是什么? DAY 仍然是唯一的分区类型。如果分区表需要保存超过 2000 天的数据,那么新的 clusters 功能会有所帮助吗? 当前限制为 4000 个分区。如果您需要更多,您确实可以对分区表进行集群。 我已经达到了4000 的极限。是否会很快支持> 4000?或者您能否建议具有更多日分区的 BigQuery 用户应该做什么? @PavanEdara 同样在这里我已经达到 4000,如果我需要我的分区是白天该怎么办?【参考方案2】:

关于您的问题“是否可以按周或月进行分区?”,有一个功能请求可以在分区类型上获得更大的灵活性: https://issuetracker.google.com/issues/35905817

如果我们也能够将 INT 作为一种分区类型,那么以 YYYYMM 的方式定义“月分区”将很容易。

【讨论】:

【参考方案3】:

现在的限制是 4,000 个分区,也就是 10 年多一点的数据。但是,如果您拥有超过 10 年的数据并希望按第一天对其进行分区,我们使用的解决方法是将您的表拆分为几十年,然后在顶部编写一个视图以将十年表合并在一起。

在 where 子句中使用日期分区字段查询视图时,BigQuery 知道只处理所需的分区,即使这是跨多个表或在单个表中。

我们已经使用这种方法来确保业务用户(数据分析师和报告开发人员)只需担心单个表,但仍然可以获得分区表的性能和成本优势。

【讨论】:

以上是关于Bigquery:分区数据超过 2000 限制(更新:现在 4000 限制)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 行限制

对超过 4000 天数据的 bigquery 表进行分区?

将超过 7 天的数据插入分区 BigQuery 表

BigQuery 最大分区数达到 2000 而不是 2500

BigQuery:超过对列分区表的分区修改次数的配额

将批量数据写入 bigQuery