2016-08-11 6 views
0

allererst mich Beschreibung meine Anforderung lassen:Wie implementiert man Ausführungspläne mit Siddhi?

data.csv: Spalte eins ist id, Spalte zwei vlaue ist.

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 

hier ist mein Input und meine Output:

id int,value int 

data.csv fügt in Input von Event-Stream-Simulator verwenden.

Wenn fünf aufeinanderfolgende Werte> = 85 sind, würde ich die erste ID, Wert in OutPutStream aufzeichnen. Zum Beispiel werde ich ID = 4, Wert = 86, aber ID = 14 bis ID = 17 aufzeichnen, ich werde es ignorieren.

Also, wie kann ich Siddhi-Skript in Ausführungspläne schreiben, um es zu implementieren?

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

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 

Antwort

1

genau fünf aufeinanderfolgende Werte> = 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; 

Seit mehr als fünf aufeinanderfolgende Werte> = 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

Vielen Dank! Es klappt! – willxiang

+0

Hallo Grainier, ich benutze die zweite Siddhi-Abfrage (** für mehr als fünf aufeinanderfolgende Wert> = 85 **), weil ich nicht sicher bin, wann der Wert wird kleiner als 85 in der tatsächlichen Situation.Aber ich treffe ein anderes Problem: if Ich möchte Daten einfügen, wenn: ID = 8, Wert = 86 (ich bin nicht sicher, wann der Wert wird kleiner als 85, aber ich brauche einfügen, wenn fünf aufeinanderfolgende Werte> = 85 ...). – willxiang

+0

Also habe ich einige gefälschte Daten wie data2.scv gemacht und getestet, ich muss warten, bis die Daten ausgehen und dann in OutPutStream einfügen. Ich möchte, wenn ** 5 ** aufeinander folgenden Wert> = 85 (aber nicht genau fünf, könnte sein mehr als fünf), zum Beispiel von ID = 4, Wert = 86 bis ID = 8, Wert = 86 dann möchte ich einfügen ID = 8, Wert = 86 zu OutPutStream.Ich hoffe, Sie können verstehen, was ich sage, weil mein Englisch ist saugt . – willxiang

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

Sollte funktionieren !

+0

Hallo suho danke, aber es ist nicht ... Ich bin mit wso2das -3.1.0-SNAPSHOT – willxiang

Verwandte Themen