如何在BQ中使用分区表

时间:2018-05-22 18:43:24

标签: google-bigquery

我之前从未使用过分区表。我刚刚创建了一个示例,以确定我是否正确理解了分区表。 例如,

create table myfirstdataset.newtable(transaction_id int64,transaction_date date) partition by transaction_date

并且该表包含以下行

Row transaction_id  transaction_date     
1   1               2017-01-15   
2   2               2017-01-15   
3   3               2017-01-15   
4   4               2017-01-15   
5   1               2017-01-16   
6   1               2017-01-17   
7   1               2017-01-18   
8   1               2017-01-19   
9   3               2017-01-20   
10  4               2017-01-20   
11  6               2017-01-20   
12  5               2017-01-20

这里的表由transaction_date列和 有6个分区叫 2017-01-15 2017-01-16 2017-01-17 2017-01 -18 2017-01-19 2017-01-20

分区 2017-01-15 2017-01-20 包含4行,而其他分区只包含一行。我是对的吗?

1 个答案:

答案 0 :(得分:1)

您完全正确,可以通过transaction_date对表进行分区。请注意,BigQuery中只有两种类型的表分区:

按摄取时间分区的表:根据数据的摄取(加载)日期或到达日期进行分区的表。 分区表:基于TIMESTAMP或DATE列分区的表。

因此,您无法考虑其他列进行分区。

有关详细信息,请参阅Link 1Link 2Link 3

作为分区表的替代方法,您可以使用基于时间的命名方法(例如[PREFIX] _YYYYMMDD)对表进行分片。这称为创建日期分片表。分片是一种特定的分区类型,即水平分区。