聚类时使用基于摄取时间的伪字段(_PARTITIONTIME)作为分区

时间:2019-11-15 13:23:56

标签: google-bigquery

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

  

无效的字段名称“ _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`

我应该怎么做?有没有办法与分区字段保持相同的伪字段,我应该重新处理分区字段,还是在这里丢失某些内容?

1 个答案:

答案 0 :(得分:0)

Known limitation

  

无法根据查询结果创建提取时间分区表。而是使用CREATE TABLE DDL语句创建表,然后使用INSERT DML语句在表中插入数据。

对于您而言,您需要先使用CREATE TABLEtarget_table创建CLUSTER BY,然后再迁移数据。