0

假设我有一个简单的对象:

public class StockTick{
    private String symbol;
    private decimal price;
    private Date date;
    private int unixTimestamp
}

我应该如何修改以下查询以使用 StockTick.date 或 StockTick.unixTimestamp 在 .win:time() 窗口内聚合?

select avg(price) from StockTick.win:time(30 sec) where symbol='IBM'
4

1 回答 1

1

如果事件已按 unix 时间戳排序,则无需修改查询。只需为每个事件执行此操作:

runtime.sendEvent(new CurrentTimeEvent(unixTimestamp));
runtime.sendEvent(stockTickEvent);

上面的代码使用外部时间,所以禁用默认的内部系统时间。对于完全无序或未分阶段的事件,根本不要使用时间窗口,而是考虑 group-by 的样子。

于 2015-03-06T21:05:00.637 回答