Esper的可选值

时间:2018-08-23 12:13:44

标签: scala option esper epl

Esper中是否支持带有可选值的属性?

我正在使用Scala使用Esper构建POC,并且我使用了EPL查询来处理非可选值。我有一个用于测试的简单对象:

case class EsperEvent(@BeanProperty id: Int, @BeanProperty eventtype: Int)

并可以通过以下查询获得我的预期结果:

select * from EsperEvent
 match_recognize (
   measures A as event1, B as event2
   pattern (A B)
   define
     A as A.eventtype = 2,
     B as B.eventtype = 3
 )

但是,当我将模型更改为以下模型时,我似乎无法从Esper获得任何输出:

case class EsperEvent(@BeanProperty id: Int, @BeanProperty eventtype: Option[Int])

我尝试了上述查询,还使用了如下的动态属性:

select * from EsperEvent
  match_recognize (
   measures A as event1, B as event2
   pattern (A B)
   define
     A as A.eventtype? = 2,
     B as B.eventtype? = 3
  )

1 个答案:

答案 0 :(得分:1)

如果我没有记错的话,属性的类型将是“ java.util.Optional”。您可以使用“ A.eventtype.get()”返回一个对象,并且需要强制转换,例如“ cast(A.eventtype.get(),int)”。如果将事件类型仅框为“ Integer”以表示可为空的值,则会更简单。 EPL遵循SQL92标准,并且肯定没有“可选”项。