2016-08-18 165 views
0

例如挑选出从事件的连续的值的值,即数据:我怎样才能使用神功

1,1470732420000,0 
2,1470732421000,0 
3,1470732422000,0 
4,1470732423000,86 
5,1470732424000,87 
6,1470732425000,88 
7,1470732426000,84 
8,1470732427000,0 
9,1470732428000,0 
10,1470732429000,0 
11,1470732430000,89 
12,1470732431000,89 
13,1470732432000,87 
14,1470732433000,89 
15,1470732434000,85 
16,1470732435000,89 
17,1470732436000,89 
18,1470732437000,87 
19,1470732438000,86 
20,1470732439000,88 
21,1470732440000,0 
22,1470732441000,0 
23,1470732442000,0 
24,1470732443000,87 
25,1470732444000,85 
26,1470732445000,86 
27,1470732446000,0 
28,1470732447000,0 
29,1470732448000,0 
30,1470732449000,0 

列中的一个是ID,柱2是时间戳,列三是,时间戳之间的间隔为1秒。我想要监视事件的值,如果我发现值> = 85(例如id = 4),我将开始计数,如果下两个连续值> = 85(例如id = 5/id = 6) ),然后我将第三个值的事件OutputStream。(例如id = 6,值= 88,时间戳= 1470732425000)

在同一时间我清除计数和等待值低于85(例如ID = 7,value = 84),然后我会再次监测,当我发现值大于等于85(例如id = 11,值= 89)时,我将开始计数,如果接下来的两个连续值> = 85(例如id = 12 (id = 13,value = 87,timestamp = 1470732432000)...

这一切都是我想要做的,befo我重新张贴此问,我有在this post一个答案,我试过这段代码:

from every a1=InputStream[value>=85], a2=InputStream[value>=85]+, a3=InputStream[value<85] 
select a2[1].id, a2[1].value 
having (not (a2[1] is null)) 
insert into OutPutStream; 

和它的作品,但我发现它的价值后该值插入的OutputStream < = 85 ,我想要的是如果我有三个连续值> = 85然后我插入到值立即(我不想等待,如果下一个值> = 85所有时间) 其实,我只是想录制三秒钟内连续三秒钟的值(> = 85)。 我正在使用wso2das-3.1.0-SNAPSHOT。

+0

你想每次监测3个连续的事件吗?或者这会有所不同吗? –

+0

查询取决于你想从中得到什么样的输出。你能否指定你想要得到的答案?无论您是想要将ID 6,13和26作为输出(由于您指定的值为<85的中间事件)或其他内容。 –

回答

3

尽管DAS(Siddhi)支持序列/模式处理,但对于您的需求,您可能需要编写自定义扩展。我已经编写了一个样例窗口处理器扩展来满足您的需求(source code)。下载并在<das_home>/repository/components/lib/目录中放置siddhi-extension-condition-window-1.0.jar并重新启动服务器。请参阅test case以了解扩展的用法。