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,而是考虑分组依据的样子。
假设我有一个简单的对象:
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,而是考虑分组依据的样子。