我正在尝试构建类似于滑动窗口的窗口,并且:
窗口的参数为:
我尝试的想法涉及一个滑动窗口:
现在的问题是:如何过滤事件以忽略“延迟”之前的事件?我想到了:
如果事件TS在正确的边界之间,则聚合器仅对值求和。这是不可能的,因为Windows中的聚合器不能是RichAggregateFunction
,因此我无法访问窗口元数据。 这个假设是否正确?
预先聚合:
getRuntimeContext().getState()
因此无法使用。 这个假设是否正确? 我是否缺少任何替代方案或任何假设不正确?
答案 0 :(得分:1)
我可能在细节上有点迷失,但也许我看到了一个解决方案。
似乎你可以使用在延迟之前和之后两次触发的自定义Trigger。然后使用ProcessWindowFunction with incremental aggregation,并使用per-window state来保存第一次点火的计数(然后再减去)。
鉴于将所有这些放在一起的复杂性,基于ProcessFunction和托管状态的解决方案可能更简单。