Говоря в общем, есть два способа, которыми вы можете подойти к этому:
- какое-то настраиваемое оконное управление
- использовать вместо него ProcessFunction
УчитываяСпособ разработки оконного API, я не вижу никакого способа сделать это при использовании предварительной агрегации (то есть, уменьшить или агрегировать), но я думаю, что вы могли бы сделать что-то с ProcessWindowFunction и пользовательским Evictor, или используяglobalState в ProcessWindowFunction.Context для сохранения состояния между одним окном и следующим.
Одна из проблем, с которой вы можете столкнуться, заключается в том, что, если, например, нет событий, приходящихся на час, с 13:00 до 14:00, то нетокно будет создано или оценено.Если это проблема, тогда необходима дальнейшая настройка.
В большинстве случаев, связанных с нестандартным оконным управлением, более просто и более эффективно использовать ProcessFunction.Таким образом, у вас есть прямой контроль над тем, какое состояние сохранять, и логику запуска окна обычно не очень сложно воссоздать.