从分区表的BigQuery页面:
每个表最多可包含2,000个分区。
我们计划白天对数据进行分区。我们的大多数查询都是基于日期的,但我们有大约5年的历史数据,并计划从现在起每天收集更多。只有2000个分区:2000/365为我们提供了大约5.5年的数据。
想要超过2000个分区的表的最佳做法是什么?
更新:表限制现在是4000个分区。
答案 0 :(得分:5)
我们正在执行2000分区限制(因此我们提前告知我们提前通知我们的用户)。所以这是一个软限制。
创建大量分区会影响性能,因此我们建议将表限制为2000个分区。我们在这里有一些空间,具体取决于表的模式,因此如果可以增加,请求支持是合理的。我们将根据我们认为对该表的操作需要多少资源来审核它。
我们希望将来某个时候支持更多的分区(最多10K),但是我们正在努力完成必要的设计和实现更改(此时我们没有ETA)
答案 1 :(得分:2)
关于您的问题"是否可以按周或按月进行分区?",有一项功能请求可以更灵活地分配分区类型: https://issuetracker.google.com/issues/35905817
如果我们能够将INT作为一种分区,那么很容易定义几个月的分区'在YYYYMM的方式。
答案 2 :(得分:0)
现在限制为4,000个分区,这刚刚超过10年的数据。但是,如果您有10年以上的数据,并且希望按照第一天的解决方法对它进行分区,则可以将您的表拆分为数十年,然后在顶部编写一个视图以将十年表合并在一起。
当在where子句中使用日期分区字段查询视图时,BigQuery知道仅处理所需的分区,即使该分区跨越多个表或在单个表中也是如此。
我们已经使用这种方法来确保业务用户(数据分析师和报表开发人员)只需要担心单个表,而仍然可以访问分区表的性能和成本优势。