我有 32 年的数据想要放入分区表中。但是 BigQuery 说我超出了限制(4000 个分区)。
对于这样的查询:
CREATE TABLE `deleting.day_partition`
PARTITION BY FlightDate
AS
SELECT *
FROM `flights.original`
我收到如下错误:
查询产生的分区过多,允许 2000 个,查询至少产生 11384 个分区
我怎样才能突破这个限制?
您可以按周/月/年分区,而不是按天分区。
就我而言,每年的数据包含大约 3GB 的数据,因此如果我按年分区,我将从集群中获得最大的好处。
为此,我将创建一个year
日期列,并按其分区:
CREATE TABLE `fh-bigquery.flights.ontime_201903`
PARTITION BY FlightDate_year
CLUSTER BY Origin, Dest
AS
SELECT *, DATE_TRUNC(FlightDate, YEAR) FlightDate_year
FROM `fh-bigquery.flights.raw_load_fixed`
请注意,我创建了额外的列DATE_TRUNC(FlightDate, YEAR) AS FlightDate_year
正在进行中。
表统计:
![enter image description here](https://i.stack.imgur.com/LUhSE.png)
由于表是聚集的,我将获得分区的好处即使我不使用分区列(年份)作为过滤器:
SELECT *
FROM `fh-bigquery.flights.ontime_201903`
WHERE FlightDate BETWEEN '2008-01-01' AND '2008-01-10'
Predicted cost: 83.4 GB
Actual cost: 3.2 GB
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)