如何使esper epl划分部分并比较值

How to make esper epl divide section and compare value

我是新手 esper。我不太了解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).

也就是说,当数据来的时候,查看之前的值和级别。 如果他们有不同的水平,做点什么。

Esper Epl能做到吗?我怎样才能做到?

"prior" 和 "prev" 都允许您在给定事件之前访问该事件。 SQL 标准 "case when then" 是 SQL 标准的 if-then-else。 你可以这样做:

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 语句中使用 prior 和 case-when 来执行此操作,但我认为通过使用两个语句它会变得更具可读性。