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

Я новичок в NESPER, и у меня есть приложение, которое работает с StateEvent (строка id, ts long, State int). Приложение основано на значениях, предоставленных ts(Timestamp) StateEvent. Значения свойства состояния StateEvent могут быть изменены в зависимости от некоторых условий, если у меня есть 3 минуты применения (-2, - 1, 0) и имеется хотя бы одно состояние = 80 в каждую минуту, то все состояния минута -1, должно быть изменено на другое значение: 80

Я определил

CREATE  SCHEMA  State_Evnt_Strm     (id string, ts long, state integer, tsMin_0 long, tsMin_1 long) ;
CREATE  SCHEMA  State_Strm          (id string, ts long, state integer, tsMin_0 long, tsMin_1 long) ;

CREATE window   wnd_3m_State.win:ext_timed(tsMin_0, 3 min) AS State38_a_Wnd ; 

UPDATE istream  wnd_3m_State 
    SET tsMin_0 = ts.roundFloor('min'), tsMin_1 = ts.roundFloor('min') - 60000;

ON State38_a_Strm  p 
    INSERT INTO wnd_3m_State (id , state, ts, tsMin_0 , tsMin_1 ) 
    SELECT  id
        ,   state
        ,   ts
        ,   tsMin_0
        ,   tsMin_1 ;

ON PATTERN  [every  a=wnd_3m_State (state = 80)
                ->  b=wnd_3m_State (state = 80, b.tsMin_1 = a.tsMin_0) 
                ->  c=wnd_3m_State (state = 80, c.tsMin_1 = b.tsMin_0  )]
    MERGE   wnd_3m_Driving  w 
    WHERE   b.id = w.id 
    WHEN    MATCHED     and tsMin_0 = b.tsMin_0 and state <> 80
    THEN    UPDATE      SET state   = 80


    SELECT  rstream
            id
        ,   state
        ,   ts
        ,   tsMin_0
    FROM    wnd_3m_State p
    ORDER BY tsMin_0, ts    ;

В последнем пункте мне нужно отфильтровать, чтобы выбрать только те состояния, срок действия которых истек в окне, а не измененные слиянием (удаление / вставка), возможно ли это? Я не знаю, есть ли другой способ получить просроченные элементы из окна, кроме использования rstream, но этого недостаточно.

Буду признателен, если вы поможете мне.

1 ответ

Вы можете установить некоторое значение в самом событии потока вставки во время слияния, используя функцию, которая получает событие и устанавливает для него некоторый флаг, указывающий, что оно было объединено.

Другие вопросы по тегам