在PARTITIONED BY中使用语句

问题描述

我正在将Flink sql流作业写入磁盘,并希望按年,月和日对数据进行分区。

给出以下表格定义:

CREATE TABLE `MyTable` (
    `timestamp` TIMESTAMP(3),`MachineID` STRING,`data` STRING
)

是否可以使用以下PARTITIONED BY语句,特别是以这种(或类似方式)使用EXTRACT:

PARTITIONED BY (EXTRACT(YEAR FROM `timestamp`),EXTRACT(MONTH FROM `timestamp`),EXTRACT(DAY FROM `timestamp`))
WITH (
  'connector' = 'filesystem','path' = '/path/to/datadir/','format' = 'parquet'
)

这样做会遇到

Caused by: org.apache.flink.sql.parser.impl.ParseException: Encountered "EXTRACT" at line 25,column 17.
Was expecting one of:
    <BRACKET_QUOTED_IDENTIFIER> ...
    <QUOTED_IDENTIFIER> ...
    <BACK_QUOTED_IDENTIFIER> ...
    <IDENTIFIER> ...
    <UNICODE_QUOTED_IDENTIFIER> ...

我已经设法通过预先创建年,月和日的列并将其添加到表定义中来完成这项工作,但这似乎有点冗长,因为我只需要它们用于分区。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)