我创建了一个存储最新财务报价的表,我想在更新报价表后立即自动选择并计算满足某些条件的某些报价。
Esper中有什么方法可以满足此要求?
感谢user650839。我按照他的指示写了一个演示。该演示使用命名窗口而不是表。
此处定义了财务滴答事件:
public class Tick {
private String symbol;
private double bid;
private double ask;
private String datetime;
// Constructor
......
// getter / setter
......
}
下面显示了从命名窗口自动更新并选择的EPL语句:
// create the named window
create window tickWin#unique(symbol) as select * from Tick
// on-merge clause
on Tick as nt
merge tickWin as wt
where wt.symbol = nt.symbol
when not matched
then insert select *
when matched
then update set wt.bid = nt.bid, wt.ask = nt.ask, wt.datetime = nt.datetime
then insert into UpdatedTick select *
// the output stream
select * from UpdatedTick
此处显示了侦听器,将此侦听器添加到上述输出流中,只需打印出更新的tick事件。
public class TickListener implements UpdateListener {
@Override
public void update(EventBean[] newEvents, EventBean[] oldEvents) {
if (newEvents == null || newEvents.length ==0) return;
System.out.println(newEvents[0]);
}
}
答案 0 :(得分:0)
您可以使用合并。它有多个动作
on <something>
merge <some named window or table>
where <some correlation>
when matched then
update set <some value>
insert into OutputStream select <some values>