在Esper中计算带有燃烧期的递归EMA

问题描述 投票:0回答:1

[作为练习,我试图在EPL,Esper中计算带有燃烧期的递归EMA。它具有中等复杂的启动逻辑,我认为这对于评估Esper可以实现的目标是一个很好的测试。

假设以固定间隔的值流x1x2x3,我们要计算:

let p = 0.1
a = average(x1, x2, x3, x4, x5)    // Assume 5, in reality use a parameter
y1 = p * x1 + (p - 1) * a          // Recursive calculation initialized with look-ahead average
y2 = p * x2 + (p - 1) * y1
y3 = p * x3 + (p - 1) * y2
   ....

The final stream should only publish y5, y6, y7, ...

我正在玩弄一个上下文,该上下文会生成一个包含平均值a的事件,并且该事件会触发另一个上下文,该上下文开始递归计算。但是,当我尝试让第一个上下文一次又一次触发,以及第二个上下文以a和后续事件递归处理初始情况时,我最终陷入了混乱的逻辑纠结。

是否有直接解决此问题的方法?

((由于要进行学习,所以我忽略了使用自定义聚合器)

esper
1个回答
0
投票

这不能回答问题,但是可能有用-将其实现为自定义聚合函数,并通过esper 7.1.0测试。

© www.soinside.com 2019 - 2024. All rights reserved.