我正在尝试扩展Esper文档中有关where
枚举方法的示例,并且遇到问题。这是有问题的示例:
select items.where(i => i.location.x = 0 and i.location.y = 0) as zeroloc
from LocationReport
我想做的事情似乎很简单。而不是选择与该表达式匹配的
items
:我想选择包含至少一个与表达式匹配的
LocationReport
的item
。在time_batch窗口上执行此操作(也可以使用强调的textnon-batched时间窗口)。
因此,每隔n秒,我将收到一个
LocationReport
集合,其中每个报告在其项目列表中至少包含一个零位置。作为参考,以下是Esper示例中使用的Java对象的结构:
公共类LocationReport {列出项目; ...
公共类Item {字符串assetId; //乘客或行李资产
id位置位置; //(x,y)位置布尔型行李箱; //
如果此项目是行李箱,则为true。String assetIdPassenger; //如果
该项目是行李,包含与旅客相关的...
公共课程位置{int x;诠释...
背景细节:假设
LocationReport
是我感兴趣的实际对象...使用上例中的EPL,where
逻辑有效,但是问题是,仅返回items
成员,我确实没有看到它来自的LocationReport
类,除了我的items
需要的UpdateListener
之外,它还包含其他属性。另外,可能不相关,但是就我而言,我收到的邮件率很高,其中许多LocationReports是重复的(或者足够接近以至于被视为重复),而我的where子句将需要做出确定,并且仅转发“ new”消息。
谢谢!
最佳答案
您可以将“ *”添加到选择项中,并在旁边添加事件对象。 select *, items.where(...) from LocationReport
您可以将“每N秒输出”添加到输出。在时间窗口中添加“ #time(...)”。
关于java - 尝试使用Esper Lambda表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43434410/