何时在BigQuery中使用分区

我希望利用您在BigQuery中的经验来确定适合我的数据的最佳结构, 我在关系数据库(尤其是Oracle DB)方面拥有5年的经验,并且我熟悉在关系数据库中使用最佳实践来构建数据仓库,但是在涉及云解决方案时,我还是新手

我的问题是关于BigQuery中的分区表, 据我所知,BigQuery在一天中只有分区,

所以我的很多数据每天都有很少的行数(最大1K到12K之间),但是它们包含很长一段时间的数据,所以基于一天对表进行分区是一个好主意? 如果我每年将数据划分为表格,并创建一个代表所有表格的视图,这对您有帮助吗?还是BigQuery上还有其他解决方案。 以您的经验,当在BQ中使用分区有效时,每日数据应该是多少?

如果您有关于使用BQ进行DWH的最佳做法的参考或书籍,请提供给我。

wangjihong0407 回答:何时在BigQuery中使用分区

您在Bigquery中有两种分区模式

  1. 按日期划分
  2. 按整数范围划分

两者都可以容纳4000个分区,因此请明智地选择选项。

如果您的日期范围较大或预期大于4000天,则可能要按周/月进行分区。
对于整数范围,可以将unixtime用作整数,并且范围可以跨越10年以上,并且每个范围都将大于24小时。这是数学。

为分区表选择特定的列命名约定,例如:partitionedtimestamp

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

大家都在问