Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在翻滚窗口中查找最长的事件_C#_Complex Event Processing_Streaminsight - Fatal编程技术网

C# 在翻滚窗口中查找最长的事件

C# 在翻滚窗口中查找最长的事件,c#,complex-event-processing,streaminsight,C#,Complex Event Processing,Streaminsight,如果我有一个点流,其中点数据来自几个“单元”,并用UnitId和开始日期标识: var input=CepStream.Create(“输入”,typeof(SQLPayloadInputAdapterFactory),inputConfig,EventShape.Point) 我把它转换成一个区间流: var信号=输入 .AlterEventDuration(e=>TimeSpan.MaxValue) .ClipEventDuration(输入,(e1,e2)=>(e1.UnitID==e2.

如果我有一个点流,其中点数据来自几个“单元”,并用UnitId和开始日期标识:

var input=CepStream.Create(“输入”,typeof(SQLPayloadInputAdapterFactory),inputConfig,EventShape.Point)

我把它转换成一个区间流:

var信号=输入
.AlterEventDuration(e=>TimeSpan.MaxValue)
.ClipEventDuration(输入,(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分钟并不重要)

您需要做的是获取事件的持续时间,然后在查询中使用它。不幸的是,你不能直接这么做。但这并不意味着它不可能做到。:-) 这里有一个选项:。 另一种选择是使用边缘UDSO,而不是主题。以下是相关文件:。虽然示例显示了PointStream操作符,但EdgeStream操作符的工作方式相同。如果你走这条路线,你会使用结束边缘来计算持续时间,然后返回结果。
在这两种方法中,EdgeStream算子可能更好;使用主题会创建一个您真正不需要的新流时间线(即使它与源完全同步),UDSO将更加高效

我创建了一个UDSO,跟踪事件1分钟,并返回该分钟内最长的事件,但返回的“最长”事件的事件开始时间具有UDSO处理的最后一个事件的开始时间,因此不是最长事件的事件时间-我相信这是出于设计。为了澄清我的要求,我需要返回每个日历分钟内发生的最长事件,带有与该分钟相关的时间戳。我从UDSO得到的是最长的事件:)带有最后一个事件的时间戳,通常在最长事件之后很久:(