在聚类时使用基于摄取时间的伪字段 (_PARTITIONTIME) 作为分区
Posted
技术标签:
【中文标题】在聚类时使用基于摄取时间的伪字段 (_PARTITIONTIME) 作为分区【英文标题】:Using ingestion-time based pseudo-field (_PARTITIONTIME) as partition while clustering 【发布时间】:2019-11-15 13:23:56 【问题描述】:我想对我们的摄取时间分区表进行集群,而不必更改我们用来更新它们的 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】:那是Known limitation:
无法根据查询结果创建摄取时间分区表。而是使用 CREATE TABLE DDL 语句创建表,然后使用 INSERT DML 语句将数据插入其中。
在您的情况下,您需要先使用CREATE TABLE
和CLUSTER BY
创建target_table
,然后再迁移数据。
【讨论】:
以上是关于在聚类时使用基于摄取时间的伪字段 (_PARTITIONTIME) 作为分区的主要内容,如果未能解决你的问题,请参考以下文章