【发布时间】:2026-01-30 21:05:02
【问题描述】:
从 Esper 示例中,我只是像这样编写简单的 EPL:
select symbol, avg(price) as avgprice,count(*) as count,
current_timestamp() as time from StockTick.win:time(0.4 sec)
group by symbol
每 100 毫秒,我将数据输入到 Esper,如下所示:
StockTick={symbol='YHOO', price=100}
t=t.plus(0.1 seconds)
StockTick={symbol='YHOO', price=65}
t=t.plus(0.1 seconds)
StockTick={symbol='YHOO', price=75}
t=t.plus(0.1 seconds)
StockTick={symbol='YHOO', price=65}
t=t.plus(0.1 seconds)
StockTick={symbol='YHOO', price=100}
t=t.plus(0.1 seconds)
StockTick={symbol='YHOO', price=15}
但是我收到的输出让我很困惑
Statement: AVGTABLE
Insert
AVGTABLE-output={symbol='YHOO', avgprice=76.25, count=4, time=300}
At: 1970-01-01 00:00:00.400
Statement: AVGTABLE
Insert
AVGTABLE-output={symbol='YHOO',avgprice=68.33333333333333, count=3,
time=400}
At: 1970-01-01 00:00:00.400
Statement: AVGTABLE
Insert
AVGTABLE-output={symbol='YHOO', avgprice=76.25, count=4, time=400}
At: 1970-01-01 00:00:00.500
Statement: AVGTABLE
Insert
AVGTABLE-output={symbol='YHOO', avgprice=80.0, count=3, time=500}
At: 1970-01-01 00:00:00.500
Statement: AVGTABLE
Insert
AVGTABLE-output={symbol='YHOO', avgprice=63.75, count=4, time=500}
At: 1970-01-01 00:00:00.600
Statement: AVGTABLE
Insert
AVGTABLE-output={symbol='YHOO', avgprice=60.0, count=3, time=600}
在时间 400 和 500,这里有 2 个输出,我猜它出现是由于 1 个事件离开窗口,然后另一个来。为什么它们出现在这里,因为我没有选择irstream,我如何在UpdateEventListener 中避免它?
【问题讨论】:
标签: event-handling esper sliding-window event-listener