CEPStream延迟和事件结束时



>假设我有一个已知结束时间的间隔事件,有没有办法在所述间隔事件到期之前触发另一个事件。这样做的目的是,在这一点上我需要做一个聚合。

或者有没有办法进行查询(这不是想要的,但我可能不得不求助于它)

(from input in inputStream
select input).AddDelay(input.EndTime - DateTime.UtcNow)

如果我的理解完全偏离,请提出更好的方法。

首先,我们需要过滤您的源流以获取 x1 事件流。

var x1Stream = from e in sourceStream
            where e.ItemId == "X1"
            select new {e.ItemId, e.Timestamp}

接下来,我们需要筛选源流以获取非 x1 事件流。

var nonX1Stream = from e in sourceStream
            where e.ItemId != "X1"
            select e;
现在,我们将 x1 事件流与非 x1 事件流联接,以获取在 x1 事件

期间发生的所有非 x1 事件的列表。

var x = from l in x1Stream
    from r in nonX1Stream
    select new {l.ItemId, l.Timestamp, r};
获取在 x1

事件期间发生的非 x1 事件的计数将需要某种 HoppingWindow 才能在固定时间段内实际计算流中的事件。您还可以调用 ToEnumerable() 以便能够在没有窗口的情况下进行分组。

var y = from e in x.ToEnumerable()
    group e by new {e.ItemId, e.Timestamp}
    into g
    select new {g.Key.ItemId, g.Key.Timestamp, Count = g.Count()};

最新更新