2014-09-12 21 views
0

每當事件到達時都需要查詢來使用當前事件的值和上次事件的值計算新值並將其插入到新流中。 舉一個例子:Siddhi查詢使用當前事件的值和上次事件的值計算新值

event [1]    : speed = 0 timestamp = 1410513924817 Calculated value(Acceleration) : 0 
event [2]    : speed = 5 timestamp = 1410513924818 Calculated value(Acceleration) : (5 - 0)/1 = 5 
event [3]    : speed = 10 timestamp = 1410513924819 Calculated value(Acceleration) : (10- 5)/1 = 5 
event [4]    : speed = 13 timestamp = 1410513924820 Calculated value(Acceleration) : (13-10)/1 = 3 
event [5]    : speed = 14 timestamp = 1410513924821 Calculated value(Acceleration) : (14-13)/1 = 1 
event [6](current)  : speed = 15 timestamp = 1410513924822 Calculated value(Acceleration) : (15-14)/1 = 1 

當使用#window.lengthBatch(2)它允許一次計算加速度對於每兩個事件。不符合要求。 有什麼想法?

回答

1

你可以使用一個序列,我們指的是

E.g

from a=SpeedStream,b=SpeedStream 
select b.speed-a.speed as acceleration, b.speed as currentSpeed 
insert into AccelerationStream 
+0

速度值在同一個流中的兩個不同的事件。不在兩個不同的流中。我已經閱讀了如何在wso2cep文檔中使用序列,但是看不到使用它解決上述問題的方法。 – 2014-09-12 12:24:25

+1

這裏我們實際上是在「from a = SpeedStream,b = SpeedStream」中使用相同的流,其中事件「a」後面緊接着事件「b」,如果我們使用的是不同的話,它會看起來像「from a = SpeedStream1 ,b = SpeedStream2" 。 – suho 2014-09-12 17:14:54