Return 最后 2 个事件中的随机事件
Return random event out of last 2 events
假设以下 Esper 事件 (Esper Tryout page):
StockTick={symbol='event1', price=1}
t=t.plus(10 seconds)
StockTick={symbol='event2', price=2}
t=t.plus(10 seconds)
StockTick={symbol='event3', price=3}
t=t.plus(10 seconds)
StockTick={symbol='event4', price=4}
我想每 3 秒从最后两个事件中 return 随机。
我从以下尝试开始,但它不起作用,因为随机变量一旦初始化就永远不会改变。
create schema StockTick(symbol string, price double);
create variable int size = 2;
create variable int rand = cast(Math.random()*size, int)+1;
@Name('Out')
select prevtail(price) from StockTick#length(rand) output every 3 seconds;
我很感激任何想法。
我能想到一堆可能的方法。
- 关闭缓存(http://esper.espertech.com/release-7.0.0/esper-reference/html_single/index.html#config-engine-expression-udfcache)
- 或者声明一个随机类型的变量
- 或使用 JavaScript 脚本
- 或具有user-defined功能
- 或使用自定义聚合函数
假设以下 Esper 事件 (Esper Tryout page):
StockTick={symbol='event1', price=1}
t=t.plus(10 seconds)
StockTick={symbol='event2', price=2}
t=t.plus(10 seconds)
StockTick={symbol='event3', price=3}
t=t.plus(10 seconds)
StockTick={symbol='event4', price=4}
我想每 3 秒从最后两个事件中 return 随机。
我从以下尝试开始,但它不起作用,因为随机变量一旦初始化就永远不会改变。
create schema StockTick(symbol string, price double);
create variable int size = 2;
create variable int rand = cast(Math.random()*size, int)+1;
@Name('Out')
select prevtail(price) from StockTick#length(rand) output every 3 seconds;
我很感激任何想法。
我能想到一堆可能的方法。
- 关闭缓存(http://esper.espertech.com/release-7.0.0/esper-reference/html_single/index.html#config-engine-expression-udfcache)
- 或者声明一个随机类型的变量
- 或使用 JavaScript 脚本
- 或具有user-defined功能
- 或使用自定义聚合函数