У меня есть потоковый ввод, например, данные о ценах акций (включая несколько акций), и я хочу выполнять ранжирование по их цене каждые 1 минуту. Рейтинг основан на последней цене всех акций и должен отсортировать их все, независимо от того, обновлялась ли она за предыдущую 1 минуту или нет. Я пытался использовать ORDER BY в потоке flink SQL.
Мне не удалось реализовать свою логику, и меня смущают две части:
Почему
ORDER BY
может использовать только атрибут времени в качестве основного и поддерживать толькоASC
? Как я могу реализовать заказ по другому типу, например по цене?Что означает приведенный ниже SQL (из документа Flink)? Нет ни окна, ни окна, поэтому я предполагаю, что SQL будет выполняться немедленно для каждого поступившего заказа, в этом случае сортировка одного элемента выглядит бессмысленной.
[Обновление]: когда я читаю код ProcimeSortProcessFunction.scala, мне кажется, что Flink сортирует элементы, полученные в течение следующей миллисекунды.
SELECT *
FROM Orders
ORDER BY orderTime
Наконец, есть ли способ реализовать мою логику на SQL?