먼저 소스 스트림을 필터링하여 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};
HoppingWindow의 어떤 필요 것 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()};
감사 – Alwyn