Запрос Сиддхи с условиями в нескольких случаях - PullRequest
0 голосов
/ 01 апреля 2020

Мы можем написать запрос Сиддхи с несколькими случаями возникновения событий с некоторыми условиями, такими как

Для 3 событий с customerId 'xyz' и источником в качестве 'log', мы можем использовать

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

Но нам нужно добавить условия между этими 3 событиями. Что-то вроде всех этих трех элементов должно иметь один и тот же источник, а не конкретное c значение.

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

Мы пробовали запрос с доступом к индексированным событиям в событиях, но, похоже, не запускают события хорошо.

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

Возможно ли это с помощью Siddhi Query? Если да, то как?

1 Ответ

0 голосов
/ 02 апреля 2020

На ваш вопрос, за одинаковое условие для всех событий. Вы также можете использовать разделы

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

, также посмотрите эту проблему - https://github.com/siddhi-io/siddhi/issues/1425

запрос будет быть как -

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;
...