Вы можете использовать технику, используемую BigQuery publi c таблица набора данных bigquery-public-data:crypto_bitcoin.blocks
, которая является таблицей с разделами DAY и использует первый день месяца в качестве столбца раздела timestamp_month
.
CREATE TEMP TABLE table_a (
column_1 STRING,
timestamp TIMESTAMP,
) as
select "string_1", TIMESTAMP "2018-01-01 00:00:00" UNION ALL
select "string_2", TIMESTAMP "2019-01-01 00:00:00";
CREATE TEMP TABLE table_b (
column_1 STRING,
timestamp TIMESTAMP,
timestamp_year DATE
) PARTITION BY timestamp_year;
INSERT INTO table_b
SELECT column_1,
timestamp,
DATE(EXTRACT(YEAR FROM DATE(timestamp)), 1, 1) timestamp_year
FROM table_a;
SELECT *
FROM table_b;
Вывод:
+----------+---------------------+----------------+
| column_1 | timestamp | timestamp_year |
+----------+---------------------+----------------+
| string_1 | 2018-01-01 00:00:00 | 2018-01-01 |
| string_2 | 2019-01-01 00:00:00 | 2019-01-01 |
+----------+---------------------+----------------+