esper检测事件值的变化

esper detect change in value of Event

嘿! 我的 esper 代码有一个小问题。输入是这样的:

t=t.plus(1 seconds)
CondiA ={varible ='Temp', value =1}
t=t.plus(1 seconds)
CondiA ={varible ='Press', value =1}
t=t.plus(1 seconds)
CondiA ={varible ='Speed', value =1}
t=t.plus(1 seconds)
CondiA ={varible ='Temp', value =2}
t=t.plus(1 seconds)
CondiA ={varible ='Press', value =2}

t=t.plus(1 seconds)
CondiA ={varible ='Speed', value =2}
t=t.plus(1 seconds)
CondiA ={varible ='Press', value =1}
t=t.plus(1 seconds)
CondiA ={varible ='Press', value =1}
t=t.plus(1 seconds)
CondiA ={varible ='Temp', value =3}
t=t.plus(1 seconds)
CondiA ={varible ='Press', value =1}

我有一种事件类型,它有一个变量名和一个值。 我想检测一个特定变量值的变化。 所以我需要一个 select 语句,它在 :

处给我数据

我用 priorprev 尝试了不同的东西,但没有任何效果。 这是我做的最合理的一个,但它没有给我想要的结果。我用一个模式试了一下,但是我得到了@SuppressOverlappingMatches 的内存过载。

select value as x from CondiA#unique(varible) as A where  prior(1, A.value) != A.value AND varible = (select varible from CondiA()#lastevent);

如果我对要求的理解正确,每个 "varible" 分区都是独立的,并且在每个值 "varible" 中您需要 "prior"?

您可以使用这样的上下文来执行此操作

create context PerVarible partition by varible from CondiA;
context PerVarible select value as x from CondiA where prior(1, A.value) != A.value;

注释,

  • 无需数据window,"prior"无需数据即可运行
  • "prev" 可以代替 "prior" 和 grouped-window 一起使用,请参阅文档,在这种情况下您不需要分区