Google bigquery 在群集时使用基于摄取时间的伪字段(_PARTITIONTIME)作为分区

Google bigquery 在群集时使用基于摄取时间的伪字段(_PARTITIONTIME)作为分区,google-bigquery,Google Bigquery,我想对摄取时间分区表进行集群,而不必更改用于更新它们的ETL脚本。我们所有的表都是在伪字段_PARTITIONTIME上分区的,现在当我尝试使用DML对表进行集群时,我得到以下错误: 无效的字段名“\u PARTITIONTIME”。字段名不允许以前缀(不区分大小写)_PARTITION、TABLE、FILE和_ROW_TIMESTAMP开头 以下是DML脚本的外观: CREATE TABLE `table_target` PARTITION BY DATE(_PARTITIONTIME) CL

我想对摄取时间分区表进行集群,而不必更改用于更新它们的ETL脚本。我们所有的表都是在伪字段_PARTITIONTIME上分区的,现在当我尝试使用DML对表进行集群时,我得到以下错误:

无效的字段名“\u PARTITIONTIME”。字段名不允许以前缀(不区分大小写)_PARTITION、TABLE、FILE和_ROW_TIMESTAMP开头

以下是DML脚本的外观:

CREATE TABLE `table_target`
PARTITION BY DATE(_PARTITIONTIME)
CLUSTER BY a, b, c
AS
SELECT
  *, _PARTITIONTIME
FROM
  `table_source`
我该怎么做?是否有一种方法可以保持与分区字段相同的伪字段,我是应该重新处理分区字段,还是在这里遗漏了什么?

问题在于:

无法从查询结果创建摄取时间分区表。相反,请使用CREATETABLEDDL语句创建表,然后使用INSERT DML语句将数据插入其中

在您的情况下,首先需要使用
CREATE TABLE
使用
CLUSTER BY
创建
target_TABLE
,然后将数据迁移到另一个表上