【原创】StreamInsight查询系列(三)——基本查询操作之过滤

上篇博文介绍了如何在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*2=14。那么为什么总数变成了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/462517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(转)基于svnserve的服务器,权限文件authz配置的常见问题及解答

最近在我用Subversion论坛(http://www.iUseSVN.com/bbs)经常有人提到这样的问题:为什么我的客户端没有写权限?为什么我的权限没有起作用?总结他们的配置,发现都是用svnserve作为服务器,都在svnserve.conf中使用了authz…

设计模式之四(抽象工厂模式第二回合)

前言 在第一回合中留下的问题,http://www.cnblogs.com/aehyok/archive/2013/05/19/3087497.html,现在就先处理一个简单的,只添加一个Department表。 第二回合 首先要建立部门类,假设只有两个字段部门ID,和部门名称。 p…

第一章-起步

1、安装python3环境 windows: 到python官网下载python3安装包,下载地址:https://www.python.org/ftp/python/3.7.3/python-3.7.3-amd64.exe 双击安装运行即可,注意:需要勾选add python 3.7 to path linux: …

js操作json数据的一些感受

最近在搞 json 数据传输,直接用的 javascript 对数据进行操作。json数据为: var json { "global":"200", "camera":[{"key2":"F5.6","key3":"35mm" }], "jam":[ {"Red"…

SVN1.6.5详细配置

提示大家:sc cretate命令后面带的参数比如[binPath ]的等号后面必须有个空格,没空格你怎么折腾都不行的,哈哈。微软还真搞笑啊,搞这么个功能迷惑人。同样,后面的其它参数比如group , displayname的等号后面都需要空格&…

ASP.NET 4.0升级至ASP.NET 4.5需要注意的地方

原文 http://www.cnblogs.com/dudu/archive/2013/05/20/3087791.html 原以为只要在Visual Studio 2012中将每个项目的Target framework设置为.NET Framewor 4.5进行编译,然后在web.config中设置compilation的targetFramework为4.5,就升级到了ASP.NET 4.5…

获取自动增涨列的表中添加完成后的数据

当我们向有自动增涨列的表中添加完数据后,想得到刚刚生成的自动增涨列的值,有两种方法:第一种方法:\cmd.CommandText “insert into class(cName,cDescription) output inserted.Id values(‘高三一班’,‘描述’)”;第二种方法在sql语句后加上; select identity:转载于:https:…

Linux关闭防火墙详述

1) 重启后永久性生效: 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后失效: 开启: service iptables start 关闭: service iptables stop 需要说…

DOM剪切板

我们常用到剪切板,在网页操作中,如,csdn 的网站,会有一个复制按钮,点击后,会在复制的内容下有一行内容,提示复制的内容来自csdn,并且下面会带有相关的连接。 在网页中有个对象clipboardData&…

学会自行车喽!

DD终于能骑着二轮自行车在院子里灵活地转圈了,我们迫不及待地把车骑到了森林里去。她在前面骑,我在后面跟着跑,可算好好锻炼了,回来腿都软了。这可是德国最热的天哪,最近雨多,天晴起来森林里闷热一片。转载…

#include 中的stat.h文件到底在哪个目录下面?

try "/usr/include/sys/satt.h", good luck! 网址:http://topic.csdn.net/u/20080919/23/98f5efe1-6613-4734-ba04-4ffd79d5ac3a.html

POJ3274Gold Balanced Lineup(哈希)

Gold Balanced LineupTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 10360 Accepted: 3086Description Farmer Johns N cows (1 ≤ N ≤ 100,000) share many similarities. In fact, FJ has been able to narrow down the list of features shared by his cows …

把一个数据库的数据插入到另外一个数据库

insert into t1 select * from shujuku1.dbo.t2; 原网址:http://topic.csdn.net/u/20080312/10/5c5ac5a3-32db-4693-ac70-99d8c62694d8.html

ubuntu 下mysql的常用命令

MySQL数据库的基本操作命令 一、mysql服务操作 0、查看数据库版本 sql-> status;1、net start mysql //启动mysql服务 2、net stop mysql //停止mysql服务  3、mysql -h主机地址 -u用户名 -p用户密码 //进入mysql数据库 4、quit //退出mysql操作 5、mysqladmin…

编写类-餐馆类

# Author Eric Zhao # -*- coding:utf-8 -*-class Restaurant(): """ 餐馆类 """ def __init__(self,restaurant_name,cuisine_type): """ 始化属性 restaurant,cuisine_type """ self.resta…

Dalvik虚拟机简要介绍和学习计划

出自:http://blog.csdn.net/luoshengyang/article/details/8852432 我们知道,Android应用程序是运行在Dalvik虚拟机里面的,并且每一个应用程序对应有一个单独的Dalvik虚拟机实例。除了指令集和类文件格式不同,Dalvik虚拟机与Java虚…

chrome扩展之3:一步步跟我学开发一个表单填写扩展

这节课实现的效果如下图所示: 我们先想一想,怎么样才可以在搜索框上输入内容呢,当然可以手动输入^_^,除了这个之外呢?如果您有这个页面的后台编辑权限就可以直接修改这个页面的内容。当然,这个页面是google的,我们没有…

硬盘快速格式化和格式化的区别

5楼的搞不懂不要瞎答啊,你说的Low level是低级格式化,High level是高级格式化,你讲的是这两者的区别,不要瞎copy,paste。人家问的是快速格式化和普通格式化。这两种都是高级格式化即High level Format,两者的区别在于快速格式化仅…

Oracle Class4. 数据库对象(同义词,序列,视图,索引,簇)

------------------------2013-5-9------------------------索引的建立情况:经常用于查询,排序和分组的列(即经常在where,order或group by子句中出现的列) 主键索引和复合索引。 desc student;create index i_stu_name on student…

PHPCMS V9爆出多个SQL注入漏洞

phpcms 使用sys_auth函数加解密cookie信息,系统中多个文件直接从cookie中获取变量进入程序流程。 由于sys_auth函数在设计和使用过程中存在缺陷,导致注册用户可以伪造cookie数据,触发SQL注入等多个二次攻击。 看sys_auth函数代码 //libs/functions/globa…