目前确实不支持。将来可以结合 FLIP-145 window TVF 语法来支持 [1]。
[1]: https://cwiki.apache.org/confluence/display/FLINK/FLIP-145%3A+Support+SQL+windowing+table-valued+function Best, Jark On Fri, 23 Oct 2020 at 00:35, hailongwang <18868816...@163.com> wrote: > Hi Roc, > 这边涉及到 order by 和 limit 一起使用时如何执行的问题。 > 1. 只对找到 limit n 的数据后,然后进行 order by,并不是对所有的数据; > 2. 对所有的数据进行 order by 后,再 limit; > 目前看 flink 对 `StreamExecSortLimit` 只保证输出 limit n,但是不保证输出的 limit n 是排序的。 > 如果业务允许的话,可以在 limit 后面加个 offset,这样可以使用 `emitRecordsWithRowNumber`,保证 limit > n 最后是 order by 的。 > 个人觉得 应该将 `StreamExecSortLimit` 的 `outputRankNumber` 设置为true。 > 不知道理解的对不对,CC @Jark @ godfrey > > > Best, > Hailong Wang > > > 在 2020-10-22 10:09:09,"Roc Marshal" <flin...@126.com> 写道: > >Hi, > > > > > > > > > >SELECT > > > >TUMBLE_START(ts, INTERVAL '1' day) as window_start, > > > >TUMBLE_END(ts, INTERVAL '1' day) as window_end, > > > >c1, > > > >sum(c2) as sc2 > > > >FROM sourcetable > > > >GROUP BY TUMBLE(ts, INTERVAL '1' day), c1 > > > >ORDER BY window_start, sc2 desc limit 10 > > > > > >这个sql希望能够以一天为窗口(翻滚)进行计算窗口 > >按照c1分组,并对c2列求和(sc2)后对sc2进行窗口内排序。但是结果看起来,结果集中窗口内的数据列sc2并没有有序(降序/或者升序)排列。 > >能不能根据我的需求和sql的写法诊断一下问题出在哪里?或者说给一下建议,好让我定位到自己对flinksql使用的误区在哪? > > > > > >谢谢! > > > > > >Best Roc. > > > > > >