2016-04-19 11 views
0

Я новичок, используя esper. Я не очень хорошо знаю о esper epl, так что у меня проблемы.Как сделать разделительную секцию esper epl и сравнить значение

Проблема в этом.

Пользователь определяет раздел значения.

For Example, 

Level1 : 1~3 
Level2 : 4~6 
Level3 : 7~9 

Поэтому, когда данные приходят первыми, проверьте раздел и выполните события. Но предыдущее значение и новое значение равны уровню (ex. prev value=1, next value=2 These are in same Level1).

Другими словами, когда данные приходят, проверьте предыдущее значение и уровень. Если у них разный уровень, сделайте что-нибудь.

Эспер Эпл может это сделать? Как я могу это сделать?

ответ

0

«предыдущий» и «предыдущий» оба дают вам доступ к событию перед данным событием. Стандарт SQL «case when then» - это стандарт if-then-else стандарта SQL. Вы могли бы сделать что-то вроде этого:

insert into CategorizedStream select 
case when value between 1 and 3 then 1 
    when value between 4 and 6 then 2 
    when value > 6 then 3 
end as level from SomeEvent; 

select * from CategorizedStream(prior(level) != level); 

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

+0

Спасибо за помощь! Я разработал правила вашего ответа! – masa