Esper 的可选值

Optional values with Esper

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
  )

如果我没记错的话,属性 的类型应该是 "java.util.Optional"。您可以使用 "A.eventtype.get()",其中 returns 是一个对象,需要强制转换,例如 "cast(A.eventtype.get(), int)"。如果事件类型只是装箱 "Integer" 可空值,那会更简单。 EPL 遵守 SQL92 标准,他们肯定没有 "optional".