如果我有一个点流,其中包含来自多个用 UnitId 和开始日期标识的“单元”的点数据:
var input = CepStream<EventPayload>.Create("input", typeof(SQLPayloadInputAdapterFactory), inputConfig, EventShape.Point);
我将其转换为间隔流:
var signal = input
.AlterEventDuration(e => TimeSpan.MaxValue)
.ClipEventDuration(input, (e1, e2) => (e1.UnitID == e2.UnitID));
当输出适配器读取时,我可以获得信号流中事件的持续时间,因为它可以看到事件对象并读取它的开始和结束值。
我需要做的是查询“信号”流以找到 1 分钟翻滚窗口中最长的事件
var groupWindowQuery = from e in signal
group e by e.UnitID into unitGroups
from window in unitGroups.TumblingWindow(
TimeSpan.FromSeconds(60),
HoppingWindowOutputPolicy.ClipToWindowEnd)
select new
{
id = unitGroups.Key,
count = window.Count(),
};
...给我一组带有计数等的单位,但我无法让事件的持续时间传递给其他查询,因为我只能在groupWindowQuery
.
如何查询事件属性以找到翻滚窗口中最长的事件?
或者是否可以在有效负载中设置值,以便在从点创建信号流时给我的点事件一个结束日期?
(对于跨越窗口的事件,持续时间为 1 分钟并不重要)