C# CEPStream延迟和on事件结束

C# CEPStream延迟和on事件结束,c#,streaminsight,C#,Streaminsight,假设我有一个已知结束时间的间隔事件,有没有办法在所述间隔事件到期之前触发另一个事件。这样做的目的是,在这一点上,我需要做一个聚合 或者,有没有一种方法可以进行查询(这不是我想要的,但我可能不得不求助于它) 如果我的理解完全错误,请建议一个更好的方法。首先,我们需要过滤源流以获得x1事件流 var x1Stream = from e in sourceStream where e.ItemId == "X1" select new {e.ItemId

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

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


如果我的理解完全错误,请建议一个更好的方法。

首先,我们需要过滤源流以获得x1事件流

var x1Stream = from e in sourceStream
            where e.ItemId == "X1"
            select new {e.ItemId, e.Timestamp}
var nonX1Stream = from e in sourceStream
            where e.ItemId != "X1"
            select e;
接下来,我们需要过滤源流以获得非x1事件流

var x1Stream = from e in sourceStream
            where e.ItemId == "X1"
            select new {e.ItemId, e.Timestamp}
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事件的计数将需要某种跳转窗口,以便能够在固定时间段内对流中的事件进行实际计数。您还可以调用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()};

首先,我们需要过滤源流以获得x1事件流

var x1Stream = from e in sourceStream
            where e.ItemId == "X1"
            select new {e.ItemId, e.Timestamp}
var nonX1Stream = from e in sourceStream
            where e.ItemId != "X1"
            select e;
接下来,我们需要过滤源流以获得非x1事件流

var x1Stream = from e in sourceStream
            where e.ItemId == "X1"
            select new {e.ItemId, e.Timestamp}
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事件的计数将需要某种跳转窗口,以便能够在固定时间段内对流中的事件进行实际计数。您还可以调用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()};