Nils
Nils

Reputation: 806

Siddhi query with conditions within multiple occurrences

We can write Siddhi query with few occurrences of events with some condition like

For 3 events with customerId 'xyz' and source as 'log', we can use

from every (e1 = CargoStream[e1.customerId == 'xyz' AND e1.source = 'log']<3>)

But what we need to do is add conditions between these 3 events. Something like all these three elements should have the same source, not a specific value.

from every (e1 = CargoStream[e1.customerId == 'xyz' AND all these 3 events have same source does not matter the value]<3>)

We tried query with access to indexed events in occurrences but does not seem to be triggering events well.

from every (e1 = CargoStream[e1.customerId == 'xyz' AND (e1[0].source == e1[1].sourse AND e1[1].source == e1[2].source)]<3>)

Is this even possible with Siddhi Query? If yes, then how?

Upvotes: 0

Views: 291

Answers (1)

Pranjal shrivastava
Pranjal shrivastava

Reputation: 21

For your question, for having the same condition across the events. you can use partitions

https://siddhi.io/en/v5.1/docs/query-guide/#partition

also, look into this issue - https://github.com/siddhi-io/siddhi/issues/1425

the query would be like -

define stream AuthenticationStream (ip string, type string);
@purge(enable='true', interval='15 sec', idle.period='2 min') 
partition with (ip of AuthenticationStream) 
begin
   from every (e1=AuthenticationStream[type == 'FAILURE' ]<1:> -> 
        e2=AuthenticationStream[type == 'SUCCESS' ]) within  1 min 
        select e1[0].ip as ip, e1[3].ip as ip4
        having not(ip4 is null)
        insert into BreakIn 
end;

Upvotes: 0

Related Questions