Apache kafka 对于事件流中未知属性的事件,如何在Esper中使用match_Recognite进行模式匹配?

Apache kafka 对于事件流中未知属性的事件,如何在Esper中使用match_Recognite进行模式匹配?,apache-kafka,complex-event-processing,esper,match-recognize,Apache Kafka,Complex Event Processing,Esper,Match Recognize,我是Esper的新手,我正在尝试从具有多个高速事件的事件流中筛选事件属性 我使用Kafka将CSV逐行从生产者发送到消费者,在消费者,我将这些行转换为HashMap,并在运行时在Esper中创建事件 例如,下面列出了每1秒发生一次的事件 天气事件流: E1={hum=51.0,precipi=1,precipm=1,tempi=57.9,icon=clear,picku\u datetime=2016-09-26 02:51:00,tempm=14.4,thunder=0,windchilli=

我是Esper的新手,我正在尝试从具有多个高速事件的事件流中筛选事件属性

我使用Kafka将CSV逐行从生产者发送到消费者,在消费者,我将这些行转换为HashMap,并在运行时在Esper中创建事件

例如,下面列出了每1秒发生一次的事件

天气事件流:

E1={hum=51.0,precipi=1,precipm=1,tempi=57.9,icon=clear,picku\u datetime=2016-09-26 02:51:00,tempm=14.4,thunder=0,windchilli=,wgusti=,pressurei=30.18,windchillm=}

E2={hum=51.5,precipi=1,precipm=1,tempi=58.9,图标=clear,picku_datetime=2016-09-26 02:55:00,tempm=14.5,thunder=0,windchilli=,wgusti=,pressurei=31.18,windchillm=}

E3={hum=52,precipi=1,precipm=1,tempi=59.9,icon=clear,picku\u datetime=2016-09-26 02:59:00,tempm=14.6,thunder=0,windchilli=,wgusti=,pressurei=32.18,windchillm=}

其中E1、E2…EN是WeatherEvent中的多个事件

在上述事件中,我只想过滤掉hum、tempi、tempm和presssurei等属性,因为它们在4秒内随着时间的推移而变化,不想关心那些根本没有变化或变化非常缓慢的属性

使用下面的EPL查询,我能够过滤掉诸如temp、hum等属性

@从weatherEvent中选择*名称'Out'。赢:时间10秒 相配 按日期时间划分? 测量A.tempm?作为临时工,临时工?作为临时雇员 模式A B 定义 B作为数学B作为临时工A.tempm?>0

问题是,只有在模式匹配查询中指定tempm或hum时,我才能这样做

但由于数据来自CSV,并且具有高维度或高功能,所以我不知道之前事件的属性是什么

我希望Esper在运行时自动检测正在更改的功能/属性并将其过滤掉,而无需指定事件的属性


有什么办法吗?埃斯珀也能做到吗?如果没有,我可以使用其他CEP引擎,如Siddhi、OracleCEP吗?

您可以添加一个?到事件属性名称,以获取在定义事件类型时未知的属性的值。这称为动态属性,请参见。返回的类型是Object,因此您需要向下转换。

感谢您的响应,但我已经在使用?在事件属性名称之后。他们在文档中提到,对于动态属性,我们必须使用item?在查询中。但问题是我不知道什么是物品属性。我不知道任何事件属性的名称和类型,就像属性的名称一样?在查询中。是否有任何方法可以使任何EPL查询能够匹配match_Recognite中每个属性的模式,就像在事件流中的后续事件中获取所有属性之间的差异一样?如果您甚至不知道属性名称,则需要编写一个插件单行函数,用于查看事件的映射对象并通过键进行迭代。将事件本身传递给该函数。例如,该函数可以返回表示差异的对象。您好,谢谢您的帮助!实际上,我不想返回事件之间属性值的差异,而是想开发类似的东西,返回事件流中快速变化的属性,例如,我想检查事件A1、A2的P1、P2、P3…Pn中的属性P1、P3和P4,A3…事件内流S在特定时间段内改变非零差异,比如说5分钟,然后我将仅提取这些特征,即仅P1、P3和P4。我知道用单行函数是不可能的。我可以在ESPER中使用聚合多功能来解决这个问题吗?