Hi,
I am looking to implement a window that sends out updates for each new
event it receives and also when an expiration timer fires and purges
the window (the expiration time can be determined from a timestamp in
the first event). 

I can't figure out a way to do this that does not require preserving
all events in the window. It seems I would either need to be able to
check the current watermark when an aggregation or its window function
is evaluated to be able to fire the final update when the timer fires,
or I would need the WindowProcessFunction (where I do have access to
the time) to not preserve all elements in the window.

The only way I've come up with to implement this is to use a
WindowProcessFunction that keeps state to only send out updates for
new elements in the elements iterable. The WindowProcessFunction then
also sends out an update when the first element timestamp meets the
expiration condition, or if the elements iterable parameter does not
contain any new elements (deducing that the processing must have been
triggered by a timer invocation and not a new element). Is there a
better way to do this?

Thanks,
William

Reply via email to