Esper: Select一个List中所有对象的指定属性
Esper: Select a specified attribute of all objects in a List
我是 Esper 的新手,所以如果以下问题听起来很愚蠢,请不要开枪。
我正在向 esper 实例发送 POJO 事件。这个POJOS有一些属性,如下:
MyEventPOJO {
final String sourceIP;
final String destIP;
final Calendar transmissionTime;
final List<WorkingDay> WorkingDays;
List<WorkingDay>
包含一个工作日列表,指示允许主机在哪个时间做某些事情。 WorkingDay
中的每一个都有一个独特的 dayName
(参见下面的 class 描述)。
一旦 sourceIP
的主机 activity 被发现,事件 MyEventPOJO
就会被发送到 esper。该事件是在软件的另一部分创建的。在该部分中,查询数据库以获取主机的 WorkingDays
。此信息被放入 List<WorkingDay>
,然后与 transmissionTime
相关联。传输时间表示主机activity被跟踪到的时间(activity的日期和时间。
关联的结果应该是主机在 List<WorkingDay>
指定的允许时间之外处于活动状态的所有 MyEventPOJO
一个工作日是这样的:
public class WorkingDay {
final String dayName;
final Calendar startTimeOfDay;
final Calendar endTimeOfDay;
.
.
.
我想创建一个过滤掉事件的语句,其中满足以下条件:
MyEventPOJO.tramissionTime
与 WorkingDay.dayName
具有相同的日期名称
MyEventPOJO.tramissionTime
的时间超出了 WorkingDay.startTimeOfDay
和 WorkingDay.endTimeOfDay
的范围
编辑:该语句应使用 10 分钟长度的 time_batch window 收集所有与上述表达式匹配的 MyEventPOJO
。
感谢您给我的任何建议。提前致谢。
祝你周末愉快,希望我能在你的帮助下解决这个问题。
我使用脚本从日历中获取日期名称。
expression string getCalendarDayName(ts) [
getCalendarDayName(ts);
function getCalendarDayName(ts) {
return new java.text.SimpleDateFormat("EEEE").format(ts.getTime());
}
]
select * from MyEventPOJO(
workingDays.allOf(v => dayName = getCalendarDayName(transmissionTime))
and
workingDays.allOf(v => transmissionTime.before(startTimeOfDay) or transmissionTime.after(endTimeOfDay))
)
我是 Esper 的新手,所以如果以下问题听起来很愚蠢,请不要开枪。
我正在向 esper 实例发送 POJO 事件。这个POJOS有一些属性,如下:
MyEventPOJO {
final String sourceIP;
final String destIP;
final Calendar transmissionTime;
final List<WorkingDay> WorkingDays;
List<WorkingDay>
包含一个工作日列表,指示允许主机在哪个时间做某些事情。 WorkingDay
中的每一个都有一个独特的 dayName
(参见下面的 class 描述)。
一旦 sourceIP
的主机 activity 被发现,事件 MyEventPOJO
就会被发送到 esper。该事件是在软件的另一部分创建的。在该部分中,查询数据库以获取主机的 WorkingDays
。此信息被放入 List<WorkingDay>
,然后与 transmissionTime
相关联。传输时间表示主机activity被跟踪到的时间(activity的日期和时间。
关联的结果应该是主机在 List<WorkingDay>
MyEventPOJO
一个工作日是这样的:
public class WorkingDay {
final String dayName;
final Calendar startTimeOfDay;
final Calendar endTimeOfDay;
.
.
.
我想创建一个过滤掉事件的语句,其中满足以下条件:
MyEventPOJO.tramissionTime
与WorkingDay.dayName
具有相同的日期名称
MyEventPOJO.tramissionTime
的时间超出了WorkingDay.startTimeOfDay
和WorkingDay.endTimeOfDay
的范围
编辑:该语句应使用 10 分钟长度的 time_batch window 收集所有与上述表达式匹配的 MyEventPOJO
。
感谢您给我的任何建议。提前致谢。
祝你周末愉快,希望我能在你的帮助下解决这个问题。
我使用脚本从日历中获取日期名称。
expression string getCalendarDayName(ts) [
getCalendarDayName(ts);
function getCalendarDayName(ts) {
return new java.text.SimpleDateFormat("EEEE").format(ts.getTime());
}
]
select * from MyEventPOJO(
workingDays.allOf(v => dayName = getCalendarDayName(transmissionTime))
and
workingDays.allOf(v => transmissionTime.before(startTimeOfDay) or transmissionTime.after(endTimeOfDay))
)