Aggregate functions cannot be used in the select right after the flatAggregate
代碼如下:
? ? ? ? Table groupByDistinctResult = orders.window(Tumble.over(lit(5).minutes())
? ? ? ? ? ? ? ? .on($("rowtime"))
? ? ? ? ? ? ? ? .as("w"))
? ? ? ? ? ? ? ? .groupBy($("user"),$("product"),$("amount"),$("w"))
? ? ? ? ? ? ? ? .flatAggregate(call("top2", $("a")).as("v", "rank"))
? ? ? ? ? ? ? ? .select($("user"),$("product"),$("amount").sum().distinct().as("d"));
完整報錯如下:
Exception in thread "main" org.apache.flink.table.api.ValidationException: Aggregate functions cannot be used in the select right after the flatAggregate.at org.apache.flink.table.api.internal.TableImpl$WindowFlatAggregateTableImpl.select(TableImpl.java:912)at GroupWindowFlatAggregate.main(GroupWindowFlatAggregate.java:65)Process finished with exit code 1原因(講人話):
flatAggregate后面不要再用sum這種算子了。
解決方案:
? ? ? Table groupByDistinctResult = orders.window(Tumble.over(lit(5).minutes())
? ? ? ? ? ? ? ? .on($("rowtime"))
? ? ? ? ? ? ? ? .as("w"))
? ? ? ? ? ? ? ? .groupBy($("user"),$("product"),$("amount"),$("w"))
? ? ? ? ? ? ? ? .flatAggregate(call("top2", $("a")).as("v", "rank"))
? ? ? ? ? ? ? ? .select($("user"),$("product"),$("amount"));
總結
以上是生活随笔為你收集整理的Aggregate functions cannot be used in the select right after the flatAggregate的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 曝谷歌Pixel 8新机将涨价!可能比P
- 下一篇: Flink中GroupWindow和Ov