Я пытаюсь создать новую кластеризованную таблицу db.new_table
, имеющую те же данные и схему, что и существующая таблица db.old_table
, в BigQuery.Существующая таблица имеет псевдостолбец _PARTITIONTIME
, и я хотел бы, чтобы новая таблица также имела этот псевдостолбец _PARTITIONTIME
.
Я попытался использовать DDL с запросом, подобным:
CREATE TABLE `db.new_table`
PARTITION BY DATE(_PARTITIONTIME)
CLUSTER BY field1, field2
AS SELECT * FROM `db.old_table`
WHERE _PARTITIONTIME > '1990-01-01'
Однако это не удалось, потому что мы не можем использовать PARTITION BY DATE(_PARTITIONTIME)
, за которым следует AS SELECT ...
.как указано в https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language
Есть ли способы сделать это?(создайте новую кластеризованную таблицу с той же точной схемой и данными из старой таблицы, разделенной псевдостолбцом _PARTITIONTIME)
Любой ответ и комментарий приветствуются, спасибо.
Примечания: Iможно создать аналогичную таблицу без _PARTITIONTIME с запросом, подобным следующему:
CREATE TABLE `db.new_table`
PARTITION BY partition_date
CLUSTER BY field1, field2
AS SELECT DATE(_PARTITIONTIME) AS partition_date, * FROM `db.old_table`
WHERE _PARTITIONTIME > '1990-01-01'
Однако, поскольку многое в системе зависит от db.old_table
, изменение поля раздела с _PARTITIONTIME
на partition_date
приведет кмного изменений запросов ... Поэтому было бы гораздо предпочтительнее, если бы мы могли создать кластеризованную таблицу с точно такой же схемой и данными.