我正试图从time_length_batch获取最后一个事件,但我不知道WRT如何做到这一点。
例如......有一个库存事件,并希望从每个可用的产品获取最新更新。以下查询主要提供了所需内容:
resources :pedidos do
get :detalhes, on: :member, as: 'detalhes'
end
除了在窗口内我得到最后一分钟或2个事件中的每个事件。我对该窗口的最后一个事件感兴趣。 (使用2来轻松测试结果。)
因此,在UpdateListener中,我需要从数组输出最后一个事件。但由于我不需要这些事件,并且最终想切换到订阅者,我希望得到最后一个事件。此外,订阅者的表现要高得多,而不是:
SELECT product, inventory FROM
InventoryEvents.std:groupwin(name).win:time_length_batch(1 min, 2);
只是
public static class EveryListener implements UpdateListener {
public void update(EventBean[] newData, EventBean[] oldData) {
out.println("* Window received: " + " " +
newData.length + " " + newData[newData.length - 1].getUnderlying());
}
}
但结果是......
public void update(String product, int inventory) {
out.println("** Explicit event received: " + " " + product + " " + inventory);
}
我试过了
* Window received: 2 {product=A, inventory=-10}
** Explicit event received: A 20
** Explicit event received: A -10
但这并没有给出预期的结果。
如何获取分组窗口的最后一个事件?
答案 0 :(得分:0)
有“最后”聚合功能。由于它是聚合函数,因此group-by子句必须指定分组。
所以查询是....
SELECT last(inventory) FROM
InventoryEvents.std:groupwin(name).win:time_length_batch(1 min, 2)
group by name
还有“prev”功能可以为您提供您正在寻找的结果,而且不需要“分组依据”。