深圳品牌建网站网络网站建设公司排名
news/
2025/9/22 23:23:06/
文章来源:
深圳品牌建网站,网络网站建设公司排名,东莞人才招聘网58,烟台网站排名优化公司上篇博文介绍了如何在LINQPad中输出StreamInsight查询结果。这篇文章将主要介绍StreamInsight基础查询操作中的过滤部分。 测试数据准备 为了方便测试查询#xff0c;我们首先准备一个静态的测试数据源#xff1a;var weatherData new[]
{new { Timestamp new DateTime(201… 上篇博文介绍了如何在LINQPad中输出StreamInsight查询结果。这篇文章将主要介绍StreamInsight基础查询操作中的过滤部分。 测试数据准备 为了方便测试查询我们首先准备一个静态的测试数据源var weatherData new[]
{new { Timestamp new DateTime(2010, 1, 1, 0, 00, 00), Temperature -9.0, StationCode 71395, WindSpeed 4}, new { Timestamp new DateTime(2010, 1, 1, 0, 30, 00), Temperature -4.5, StationCode 71801, WindSpeed 41},new { Timestamp new DateTime(2010, 1, 1, 1, 00, 00), Temperature -8.8, StationCode 71395, WindSpeed 6}, new { Timestamp new DateTime(2010, 1, 1, 1, 30, 00), Temperature -4.4, StationCode 71801, WindSpeed 39},new { Timestamp new DateTime(2010, 1, 1, 2, 00, 00), Temperature -9.7, StationCode 71395, WindSpeed 9}, new { Timestamp new DateTime(2010, 1, 1, 2, 30, 00), Temperature -4.6, StationCode 71801, WindSpeed 59},new { Timestamp new DateTime(2010, 1, 1, 3, 00, 00), Temperature -9.6, StationCode 71395, WindSpeed 9},
};weatherData代表了一系列的天气信息时间戳、温度、气象站编码以及风速。 接下去将weatherData转变为点类型复杂事件流var weatherStream weatherData.ToPointStream(Application,t PointEvent.CreateInsert(t.Timestamp, t),AdvanceTimeSettings.IncreasingStartTime);// 统计事件总数
weatherStream.ToPointEnumerable().Count().Dump(Total number of events);细心的读者会发现事件总数是15而不是weatherData的元素个数7。这是因为在使用AdvanceTimeSettings.IncreasingStartTime标志创建weatherStream后StreamInsight引擎会为每一个事件后紧跟一个相同时间戳的CTI事件因此事件个数为7*214。那么为什么总数变成了15呢那是因为AdvanceTimeSettings.IncreasingStartTime默认指定了AdvanceToInfinityOnShutdown为true即确定在关闭查询时应插入具有正无穷大的时间戳的最终CTI用来刷新所有剩余事件。因此加上这个正无穷大的CTI事件总的事件总数为15。感兴趣的读者可以调用weatherStream.ToPointEnumerable().Dump() 查看15个事件的具体内容。 基础过滤 问题1怎样过滤事件流以保留特定的事件 对weatherStream过滤可以使用LINQ中的where子句如保留那些温度高于零下5度的事件var filterQuery from e in weatherStreamwhere e.Temperature -5.0select e;接下去使用下述语句将filterQuery中的Insert事件导出到LINQPad输出窗口(from e in filterQuery.ToPointEnumerable()where e.EventKind EventKind.Insertselect e).Dump();最终的3个过滤事件结果如下 问题2怎样进行多条件过滤 StreamInsight支持多条件过滤只需要在where子句中指明多个过滤条件即可。问题1中我们过滤出了温度高于零下5度的所有事件那么如果我们想要过滤出不仅温度高于零下5度而且风速超过40的事件该怎么做呢很简单只需要在where子句中增加e.WindSpeed 40就可以了如下var filterQuery2 from e in weatherStreamwhere e.Temperature -5.0 e.WindSpeed 40select e;
(from e in filterQuery2.ToPointEnumerable()where e.EventKind EventKind.Insertselect e).Dump();最终过滤出的2个事件如下 下篇文章将介绍StreamInsight基础操作操作中的聚合部分。 转载于:https://www.cnblogs.com/StreamInsight/archive/2011/08/21/StreamInsight-Query-Series-Part3-Basic-Queries-Filters.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910728.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!