EPL Esper 查询使用存储在事件 属性 中的历史时间而不是发布时间

EPL Esper query use historical time stored in event's property instead of publish time

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

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

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

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

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

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

以上代码使用外部时间,因此禁用默认的内部系统时间。对于完全无序或未分阶段的事件,根本不要使用时间 window,而是考虑分组依据的样子。