0

我正在尝试直接对事件类型使用时间间隔代数方法,根据文档,这应该是可能的。我首先尝试使用create schema语法定义一些事件类型,如下所示:

create schema BaseEvent as (time long, name String) starttimestamp time
create schema ExtendedEvent as (moreInfo String) inherits BaseEvent

如果我写这样的查询

select *
    from BaseEvent.std:lastevent() as a, ExtendedEvent.std:lastevent() as b
    where a.after(b)

它实际上编译没有错误。但是如果我尝试使用模式而不是连接,就像这样

select *
    from pattern [ every (a = BaseEvent and b = ExtendedEvent) ]
    where a.after(b)

它给了我一个错误:

Date-time enumeration method 'after' requires either a Calendar,
Date or long value as input or events of an event type that
declares a timestamp property

当我尝试使用派生自基本事件类型的 POJO 时出现相同的错误,该基本事件类型具有文档中描述的时间戳属性。虽然它在我实际使用基类型时有效,但在这种情况下,Esper 不使用继承的时间属性似乎很奇怪,而在其他情况下它确实使用了有关继承它的信息。

难道我做错了什么?这是一个错误吗?或者也许它只是按预期工作......

4

1 回答 1

0

它实际上是一种错误或“缺失”功能:

实际上有两个问题我在这里感到困惑。首先是Esper 中的继承不能以这种方式工作,即派生类型不会自动继承时间戳属性。另一个问题是,由模式产生的事件是所谓的片段,它不受日期时间方法的支持。

好消息是,随着即将发布的 Esper 版本 4.6.0,两个“问题”都将得到修复:ESPER-659ESPER-660

于 2012-04-20T00:14:56.157 回答