您在Bigquery中有两种分区模式
- 按日期划分
- 按整数范围划分
两者都可以容纳4000个分区,因此请明智地选择选项。
如果您的日期范围较大或预期大于4000天,则可能要按周/月进行分区。
对于整数范围,可以将unixtime用作整数,并且范围可以跨越10年以上,并且每个范围都将大于24小时。这是数学。
为分区表选择特定的列命名约定,例如:partitioned
或timestamp
。
ps。您可以应用其他4列来进一步对表进行聚类。
一个实际的例子是:
- 按时间戳划分,按国家划分
- 按每周时间戳记进行分区,按“天”列进行群集
- 按整数范围列划分,例如:unix时间,按事件,类别,语言聚类
,
所以我的很多数据每天都有很少的行数(最大1K到12K之间),但是它们包含很长一段时间的数据,所以基于一天对表进行分区是一个好主意?
这取决于要使用的查询涵盖的时间范围。
案例A。
例如,如果查询的最长持续时间为1周,那么就速度和成本而言,将分区划分为每日分区可能会非常有益,因为引擎不需要扫描整个表。它将仅选择7个每日分区。
示例:对于公共数据集bigquery-public-data.samples.github_timeline
,一个查询覆盖1天,由于进行表扫描,导致数据使用量约为数百兆字节。使用类似的每日分区表可以将1天查询产生的数据使用量减少到〜10 MB。
案例B。
另一方面,如果运行频率最高的查询涉及一到两年的时间范围(例如,按时间顺序排列表中的整个数据范围),则每天进行分区操作无济于事,引擎需要处理几乎所有内容反正桌子。因此,每天进行分区将无济于事。如果每日数据量小于最小群集大小,则群集可能会对数据使用产生不利影响,因为引擎最终将处理更多的磁盘空间。
如果记录了类似的考虑因素以及该信息是什么,则实际最小集群大小是多少,以及最小分区大小是什么(如果有),将很有帮助。如果这些数字是动态的,那么预期范围是什么?
有用的答案:
1
2
3
本文链接:https://www.f2er.com/2928770.html