我有一个流式输入,比如股票价格数据(包括多只股票),我想每 1 分钟按价格进行一次排名。排名基于所有股票的最新价格,无论前1分钟是否更新,都需要对所有股票进行排序。我尝试在 flink 流 SQL 中使用 ORDER BY。
我未能实现我的逻辑,我对两个部分感到困惑:
为什么
ORDER BY
只能使用时间属性作为主要且仅支持ASC
?如何按价格等其他类型执行订单?下面的 SQL(来自 Flink 文档)是什么意思?没有窗口也没有窗口,所以我假设每个订单都会立即执行 SQL,在这种情况下,对一个元素进行排序看起来毫无意义。
[更新]:当我阅读 ProcimeSortProcessFunction.scala 的代码时,似乎 Flink 对接下来一毫秒内收到的元素进行了排序。
SELECT *
FROM Orders
ORDER BY orderTime
最后,有没有办法在 SQL 中实现我的逻辑?