我正在开展一个项目,我有一个4天大小的窗口,步骤为1天
.timewindow(Time.days(4), Time.days(1))
我也有一个触发器
.trigger(new myTrigger)
onEventTime ---> Continue
onProccessingTime ---> Continue
clear ---> Purge
onElement---> (if element.isFinalTransaction) TriggerResult.FIRE_AND_PRUGE
isFinalTransaction是一个布尔值,当为true时,它调用FAP。 平均问题是如何让它返回true / false取决于元素是否是窗口中的最后一个
是否有任何方法可以告诉我们当前元素是否是窗口中的最后一个元素? 是否有任何方法可以告诉我们当前窗口是否完成(滑动前)?
答案 0 :(得分:0)
简短的回答是“否”。将为每个添加到窗格的元素调用onElement方法。添加元素后,就不可能知道它是否是最后一个元素,因为直到下一个元素出现(我们才能知道它是在此窗口中还是在下一个窗口中),该信息才为人所知。
但是,另一种方法是检查元素是否足够靠近窗口末端(因为onElement可以访问窗口,例如if(timestamp> window.getEnd-delta)...
但是,我想不出一个推荐使用的用例。如果需要访问窗口中的最后一个元素,则可能应该只使用WindowFunction并在apply方法中获取可迭代输入(input.last)的最后一个元素。