2016-08-11 3 views
0

Прежде всего позвольте мне описание моего требования:Как реализовать планы выполнения с использованием сиддхи?

data.csv: колонка один идентификатор, колонка два является vlaue.

1,0 
2,0 
3,0 
4,86 
5,87 
6,88 
7,89 
8,86 
9,0 
10,0 
11,0 
12,0 
13,0 
14,86 
15,87 
16,88 
17,89 
18,0 
19,0 
20,0 

вот мой InputStream и мой OutputStream:

id int,value int 

data.csv вставит в InputStream с помощью событий Стрим Simulator.

Если есть пять последовательных значений> = 85, я бы записал первый идентификатор, значение в OutPutStream. Например, я буду записывать id = 4, значение = 86, но id = 14 - id = 17, я проигнорирую его.

Так как я могу написать скрипт сиддхи в планах выполнения для его реализации?

==================================================================================================================================== ============================

data2.csv:

1,0 
2,0 
3,0 
4,86 
5,87 
6,88 
7,89 
8,86 
9,87 
10,88 
11,89 
12,90 
13,91 
14,86 
15,87 
16,88 
17,89 
18,90 
19,90 
20,90 
21,0 
22,0, 
23,87 
24,85 
25,86 
26,0 
27,17 
... 
200,91 
201,0 

ответ

1

ровно на пять последовательных значений> = 85

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

более пяти последовательных значений> = 85

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

Большое вам спасибо! Оно работает! – willxiang

+0

Привет Grainier, я использую второй запрос сиддхи (** для более чем пяти последовательных значений> = 85 **), потому что я не уверен, в какое время значение будет меньше, чем 85 в реальной ситуации. Но я отвечаю на другую проблему: if Я хочу вставить данные, когда: id = 8, value = 86 (я не уверен, в какое время значение будет меньше, чем 85, но мне нужно вставить, когда пять последовательных значений> = 85 ...). – willxiang

+0

Итак, я сделал некоторые поддельные данные, такие как data2.scv и протестировал его, я должен подождать, пока закончится работа, а затем вставьте в OutPutStream. Я хочу, если есть ** 5 ** последовательное значение> = 85 (но не точно пять, может быть более пяти), например, от id = 4, value = 86 до id = 8, value = 86, тогда я хочу вставить id = 8, значение = 86 в OutPutStream. Надеюсь, вы поймете, что я говорю, потому что мой английский сосет , – willxiang

0
from every a1=InputStream[value>=85], a1=InputStream[value>=85]<4> 
select a1.id, a1.value 
insert into OutPutStream; 

Должно работать !

+0

Привет Сухо спасибо, но это не работает ... Я использую wso2das -3.1.0-SNAPSHOT – willxiang

Смежные вопросы