我希望能够添加事件流,因为我事先不知道事件具有什么样的属性。所以我以前不知道是否有整数ID,或者是否有日期时间戳,以及可能存在哪个有效负载。一旦我添加了这样一个未知事件,Esper应该检查流,并将流中包含的属性返回给我。
非常感谢。这对我帮助很大。但是,直接返回所有属性名称的函数并不存在,是吗?因此,我必须使用动态参数(试错(,直到我知道事件流中存在哪些参数。
谢谢你的帮助:(
请参阅类似的将传感器事件添加到CEP引擎并获取所有属性的列表
在没有部分或全部属性的情况下,可以添加不带任何属性的流,也可以添加已知事件具有的属性。以下是如何在事先不知道任何属性的情况下添加流:
@public @buseventtype create schema MyStream()
现在,您可以使用EPEventServive#sendEvent发送事件。
您可以通过各种方式使用此流。您可以简单地选择事件。
select * from MyStream
或者,您可以使用动态属性名称,即带有"?"的名称附加在他们身上的问号。这可以指代可能存在也可能不存在的属性。
select id? as id from MyStream
";id"返回Object类型值。您可以使用";铸造";例如,使其成为要相加的双类型值。
select id? as id, sum(cast(someNumericProperty?, double)) as total from MyStream where
当属性不存在时"表达式返回null。有一个";存在";函数,当作为动态属性的参数存在时返回true。
我认为在EPL尝试使用任何动态属性之前,Esper运行时实际上并不知道任何动态属性。运行时不会检查任何事件的实际属性。
您可以添加自己的用户定义函数,该函数确定特定事件基础的属性名称。因此,当底层是java.util.Map时,用户定义的函数可以返回";event.keySet((";。