You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by yanyunpeng <ya...@rockontrol.com> on 2021/08/04 06:30:02 UTC
flink table over 窗口报错
代码如下:
EnvironmentSettings bbSettings = EnvironmentSettings.newInstance().useBlinkPlanner().inBatchMode().build();
TableEnvironment tableEnv = TableEnvironment.create(bbSettings);
tableEnv.executeSql("CREATE TABLE t_yyp_test (\n" +
" f_id INT,\n" +
" f_h STRING,\n" +
" f_l STRING,\n" +
" f_j STRING,\n" +
" f_value DOUBLE,\n" +
" f_time TIMESTAMP(3)\n, " +
" f_time_bak TIMESTAMP(3)\n, " +
" PRIMARY KEY (f_id) NOT ENFORCED,\n" +
" WATERMARK FOR f_time AS f_time \n" +
") WITH (\n" +
" 'connector' = 'jdbc',\n" +
" 'url' = 'jdbc:mysql://***',\n" +
" 'table-name' = '123',\n" +
" 'username' = '123',\n" +
" 'password' = '123'\n" +
")");
tableEnv.registerFunction("GaussianFunction", new GaussianFunction());
Table table = tableEnv
.from("t_yyp_test")
.window(Over.partitionBy($("f_h"), $("f_l"), $("f_j"))
.orderBy($("f_time_bak"))
.preceding("unbounded_range")
.following(CURRENT_RANGE)
.as("w"))
.select($("f_h"),
$("f_l"),
$("f_j"),
$("f_value").avg().over($("w")),
$("f_value").varPop().over($("w")),
$("f_value").stddevPop().over($("w")));
已经定义了eventTime 使用eventTIme或者别的时间字段排序都报错
Exception in thread "main" org.apache.flink.table.api.ValidationException: Ordering must be defined on a time attribute.
请问这是什么原因