Вместо разделения по дням вы можете разделить по неделям / месяцам / годам.
В моем случае каждый год данных содержит около ~ 3 ГБ данных, поэтому я получу наибольшую выгоду от кластеризации, еслиЯ делю по годам.
Для этого я создам столбец даты 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
впроцесс.
Статистика таблицы:
Поскольку таблица кластеризована, я получу преимущества разбиения, даже если я не использую столбец разделения (год) в качестве фильтра:
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