INT类型字段(10位的时间戳,数据如1698040389)能作为表达式分区(原称自动创建分区)的分区键吗

【详述】
创建表时,将INT类型的event_time字段(10位的时间戳,数据如1698040389),作为表达式分区(原称自动创建分区)的分区键,按天分区,会出现报错。

【建表语句】
CREATE TABLE test_db.test_table(
event_time INT NOT NULL,
site_id INT NOT NULL
)
DUPLICATE KEY(event_time,site_id)
PARTITION BY date_trunc(“day”,FROM_UNIXTIME(event_time))
DISTRIBUTED BY HASH(site_id)
PROPERTIES(
“replication_num” = “1”
);

【报错信息】
ERROR 1064 (HY000): Getting syntax error from line 6, column 13 to line 6, column 55. Detail message: Unsupported expr ‘date_trunc(‘day’, from_unixtime(event_time))’ in PARTITION BY clause.

【问题】
创建表时,INT类型的字段作为表达式分区(原称自动创建分区)的分区键,按天分区,如何写才是正确的?

目前表达式分区里date_trunc函数内还不支持from_unixtime嵌套,可以考虑在导入时对event_time使用from_unixtime转换成datetime类型

感谢您的回复,也就是说要使用表达式分区(原称自动创建分区)和date_trunc函数进行按天分区,只能是日期类型(DATE 或 DATETIME)的字段作为分区列对吗?
如果字段还是INT类型,要使用表达式分区进行按天分区,不用date_trunc函数的话,还有其他的办法吗?

是的,当前只能是日期类型(DATE 或 DATETIME)的字段作为分区列。
时间戳字段如果要使用表达式分区进行按天分区的话,又需要原数据保留成时间戳int类型的话,可以考虑表里多建一列,导入的时候使用from_unixtime转换成date字段,使用这个冗余的字段来作为分区字段

ok,感谢您的回复