HI,
我这边想要在滑动窗口之后做一个topN,于是就有下面的SQL:
-- 窗口聚合
create view window_v as
select
member_id,
category_id,
HOP_END(ts, INTERVAL '10' SECOND, INTERVAL '30' MINUTE) as `time`,
count(1) as c
from stream_t
group by member_id, category_id,
HOP(ts, INTERVAL '10' SECOND, INTERVAL '30' MINUTE);
-- 排序取top 20
SELECT
member_id,
category_id,
c,
row_number() over (PARTITION BY member_id ORDER BY c) AS rn
FROM window_v;
但是执行异常:
Caused by: org.apache.flink.table.api.TableException: OVER windows' ordering in
stream mode must be defined on a time attribute. at
org.apache.flink.table.planner.plan.nodes.physical.stream.StreamExecOverAggregate.translateToPlanInternal(StreamExecOverAggregate.scala:195)
at
org.apache.flink.table.planner.plan.nodes.physical.stream.StreamExecOverAggregate.translateToPlanInternal(StreamExecOverAggregate.scala:56)
at
org.apache.flink.table.planner.plan.nodes.exec.ExecNode$class.translateToPlan(ExecNode.scala:58)
我看官网的TOPN例子中,order by 后面也可以是long型。难道row_number不能作用在窗口结果上?
Best,Xinghalo