You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Esper中基于首个事件时间戳创建固定时长的非滑动窗口?

解决方案

你需要的是批处理窗口(Batch Window),而非滑动窗口。Esper中的批处理窗口会在首个事件触发时启动固定时长的窗口,到时间后自动结束,不受后续新事件的影响。以下是具体实现方式:

1. 使用系统时间驱动的批处理窗口

如果窗口时间基准为系统时间,使用win:time_batch函数:

Select a,b
from Event.win:time_batch(120, start_first:true)
match_recognize(
    partition by sensor
    ...
)
  • 120 指定窗口持续时长(单位:秒)
  • start_first:true 确保窗口由该分区内的首个事件触发启动,而非固定时间点(比如整点)

2. 使用事件自带时间属性的批处理窗口

如果窗口时间基准是事件自身携带的时间字段(比如time.time),使用win:ext_timed_batch函数:

Select a,b
from Event.win:ext_timed_batch(time.time, 120, start_first:true)
match_recognize(
    partition by sensor
    ...
)
  • time.time 是事件中的时间属性,作为窗口的时间基准
  • 120 为窗口持续时长(秒)
  • start_first:true 保证窗口由分区内首个事件触发

关键区别说明

  • 你之前使用的win:time和win:ext_timed是滑动窗口:每有新事件到来,窗口会向前滑动,始终包含最近120秒内的所有事件。
  • 批处理窗口(time_batch/ext_timed_batch)是固定时间段窗口:首个事件触发后启动窗口,120秒后窗口关闭并输出结果;后续新事件会触发新的独立窗口,互不干扰。

内容的提问来源于stack exchange,提问作者user2360915

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 08:47:28