Hi, fengqi.
这看起来像是select语句中,不能直接使用非来源于window
agg的proctime或者event函数。目前不确定这是不是预期行为,方便的话可以在社区jira[1]上提一个bug看看。
快速绕过的话,可以试试下面的代码:
DataStream<Persion> flintstones = env.fromCollection(list); // Table select =
table.select($("name"), $("age"), $("addtime").proctime()); Table table =
tEnv.fromDataStream( flintstones, Schema.newBuilder() .column("name", "string")
.column("age", "int") .columnByExpression("addtime", "proctime()") .build());
Table select1 = // select.xxx
table.window(Tumble.over(lit(10).second()).on($("addtime")).as("w"))
.groupBy($("name"), $("w")) .select($("name"), $("age").sum());
select1.execute().print();
[1] https://issues.apache.org/jira/projects/FLINK/issues
--
Best!
Xuyang
At 2024-03-08 09:28:10, "[email protected]" <[email protected]> wrote:
>public static void main(String[] args) {
> StreamExecutionEnvironment env =
> StreamExecutionEnvironment.getExecutionEnvironment();
> StreamTableEnvironment tEnv = StreamTableEnvironment.create(env);
> List<Persion> list = new ArrayList<>();
> list.add(new Persion("Fred",35));
> list.add(new Persion("wilma",35));
> list.add(new Persion("Pebbles",2));
> DataStream<Persion> flintstones = env.fromCollection(list);
> Table table = tEnv.fromDataStream(flintstones);
> Table select = table.select($("name"), $("age"),
> $("addtime").proctime());
> Table select1 = select.window(
> Tumble.over(lit(10).second())
> .on($("addtime"))
> .as("w"))
> .groupBy($("name"), $("w"))
> .select($("name"), $("age").sum());
> select1.execute().print();
>
> }
>
> public static class Persion{
> public String name;
> public Integer age;
> public Persion(){}
> public Persion(String name,Integer age){
> this.name = name;
> this.age = age;
> }
> public String toString(){
> return this.name.toString()+":age "+this.age.toString();
> }
> }
>
>提示Exception in thread "main" org.apache.flink.table.api.ValidationException:
>Window properties can only be used on windowed tables
>是哪里错了?