原文链接:http://seroter.wordpress.com/2010/12/23/5-quick-steps-for-trying-out-streaminsight-with-linqpad/


有的时候我就想快速地试验一个技术想法,而不想因此去构建一个完整的解决方案。StreamInsight作为一个新产品,也有这样的问题。理想情况,我们应当可以试验一个产品,将其运行在某一个场景下并作出快速的评估。现在有了LINQPad,StreamInsight的快速试验变为了可能。这篇博文将一步步介绍如何安装组件和使用各种各样的数据源测试StreamInsight查询。如果你能坚持阅读下来,作为奖励,我会告诉你怎样使用OData数据,并在其上执行LINQ查询。

第一步:安装StreamInsight 1.1

你需要安装StreamInsight的第二个发布版本来使用LINQPad集成功能,从微软下载中心可以下载到StreamInsight 1.1。安装StreamInsight时,你可以选择评估版本,也可以使用SQL Server 2008 R2 许可密钥(可以在SQL Server安装媒介x86\DefaultSetup.ini中找到)来进行激活。

第二步:安装LINQPad 4.0

你可以选择LINQPad的免费版本(从这里下载),也可以选择具有内置智能感知功能的付费版本。

第三步:添加StreamInsight的LINQPad驱动

当运行LINQPad时,你可以看到一个叫做“Add connection”的选项。

之后你会看到一些内置的驱动,包括LINQ-to-SQL和OData等。

选择“View more drivers…”按钮,你会看到由微软创建的最新StreamInsight驱动。

这个驱动安装时间大约200毫秒,然后你就可以在LINQPad驱动列表中看到它了。

第四步:创建与StreamInsight驱动的新连接

如果窗口还处于打开状态选择驱动,否则回到LINQPad,选择“Add connection”,接下去在“Choose Data Context”向导页上点击Next按钮。现在你会看到一个标题为“StreamInsight Context Chooser”的弹出窗口,在其中你可以选择微软提供的数据集,也可以选择新的上下文。这里我选择Default Context

第五步:编写简单的查询

现在我们连接到了StreamInsight的上下文,在编写查询之前请确保“Language”值选择为“C# Statements”,且“Database”值为“StreamInsight: Default Context”。

由于默认上下文中并没有一个输入数据源,因此我们创建了一个简单的点事件集合,并将其转换为流进行处理。我们的第一个查询获取所有Count大于4的事件。

//define event collection
var source = new[]
{PointEvent.CreateInsert(new DateTime(2010, 12, 1), new { ID = "ABC", Type="Customer", Count=4 }),PointEvent.CreateInsert(new DateTime(2010, 12, 2), new { ID = "DEF", Type="Customer", Count=9 }),PointEvent.CreateInsert(new DateTime(2010, 12, 3), new { ID = "GHI", Type="Partner", Count=5 })
};
//convert to stream
var input = source.ToStream(Application,AdvanceTimeSettings.IncreasingStartTime);
var largeCount = from i in inputwhere i.Count > 4select i;
//emit results to LINQPad
largeCount.Dump();

输出结果如下,注意只有两条记录输出。

(译者注:StartTime是GMT时间,不同时区下结果会不一样)

为了更多地展示一些StreamInsight的能力,我创建了另外一个查询,该查询在三个事件(放在同一天以使得所有的点事件在同一个快照中)之上创建一个快照窗口,并对每一个类型计算Count值之和。

var source = new[]
{PointEvent.CreateInsert(new DateTime(2010, 12, 1), new { ID = "ABC", Type="Customer", Count=4 }),PointEvent.CreateInsert(new DateTime(2010, 12, 1), new { ID = "DEF", Type="Customer", Count=9 }),PointEvent.CreateInsert(new DateTime(2010, 12, 1), new { ID = "GHI", Type="Partner", Count=5 })
};var input = source.ToStream(Application, AdvanceTimeSettings.IncreasingStartTime);var custSum = from i in inputgroup i by i.Type into TypeGroupsfrom window in TypeGroups.SnapshotWindow(SnapshotWindowOutputPolicy.Clip)select new { Type = TypeGroups.Key, TypeSum = window.Sum(e => e.Count) };custSum.Dump();

这个查询同样得到两个消息,但是请注意新的TypeSum值是所有Type值相同事件的聚合。

通过上面5个步骤(花费大约8分钟的时间),我们安装了本机组件并且成功执行了一对StreamInsight查询。

其实现在我就可以停笔了,但是还是让我们尝试一下更有趣的事情吧。试想如何在一个已有的OData数据源执行一个查询?下面的另外三个步骤将进一步展示LINQPad和StreamInsight。

*第六步:编写Northwind条目的OData连接

点击LINQPad中的“Add connection”按钮,选择“WCF Data Services(OData)”驱动,接下去选择OData作为提供者,并在“URI”文本框中填入OData源

(http://services.odata.org/Northwind/Northwind.svc),点击OK。在LINQPad中你会看到Northwind OData源中包含的所有实体。

现在让我们执行一个非常简单的查询。这个查询遍历所有的员工(Employee)记录,最后输出每一个员工的ID,受雇日期和国家。

var emps = from e in Employeesorderby e.HireDate ascendingselect new{HireDate = (DateTime)e.HireDate,EmpId = e.EmployeeID,Country = e.Country};
emps.Dump();

输出结果如下:

*第七步:在Northwind数据之上增添StreamInsight查询能力

如果希望在一个特定窗口时间内,按照国家分类来查看员工的雇佣情况该怎么做呢?我们完全可以通过一个直接的LINQ查询做到,但是这样又有什么乐趣呢?言归正传,想想看在员工数据上使用实时分析能做出什么样的有趣事情,当然这个话题并不是这篇博文要谈的重点。

LINQPad仅允许一次使用一个数据上下文,因此想要同时使用OData源和StreamInsight查询,我们需要做一点变通。Mark Simms已经写了一篇颇有深度的文章来解释这个问题,这里我给出一个简短的版本。

右击包含OData查询的LINQPad查询选项卡,选择“Query Properties”,添加StreamInsight dll的引用。点击“Additional Reference”选项卡中的“Add”按钮,查找并选择Microsoft.ComplexEventProcessing.dllMicrosoft.ComplexEventProcessing.Observable.dll(如果看不到这两个dll的话,记得选中Show GAC Assemblies选项)。

切换到“Additional Namespace Imports”选项卡,手工输入查询所需要的命名空间。

现在我们准备在OData源上使用StreamInsight LINQ查询了。

*第八步:在Northwind数据之上增添StreamInsight查询能力

我把先前写好的查询拷贝过来,在此基础上进行后续工作。

查询下方,我实例化了一个StreamInsight “server”用来托管查询,并定义了一个StreamInsight 应用来包含查询。接下去,我将OData结果转换为了CEP流,并创建了一个使用Tumbling窗口的StreamInsight查询,用以输出每60天窗口中的每个国家的雇用人数,最后将结果输出到LINQPad中。

var emps = from e in Employeesorderby e.HireDate ascendingselect new{HireDate = (DateTime)e.HireDate,EmpId = e.EmployeeID,Country = e.Country};//define StreamInsight server
using (Server siServer = Server.Create("RSEROTERv2"))
{//create StreamInsight appApplication empApp = siServer.CreateApplication("demo");//map odata query to the StreamInsight input streamvar empStream = emps.ToPointStream(empApp, s => PointEvent.CreateInsert(s.HireDate, s), AdvanceTimeSettings.IncreasingStartTime);var counts = from f in empStreamgroup f by f.Country into CountryGroupfrom win in CountryGroup.TumblingWindow(TimeSpan.FromDays(60), HoppingWindowOutputPolicy.ClipToWindowEnd)select new { EmpCountry = CountryGroup.Key, Count = win.Count() };//turn results into enumerablevar sink = from g in counts.ToPointEnumerable()where g.EventKind == EventKind.Insertselect new { WinStart = g.StartTime, Country = g.Payload.EmpCountry, Count = g.Payload.Count };sink.Dump();
}

查询的结果如下图:

小结

现在你应该有所了解了!前面5个步骤大概可以在10分钟内完成,而剩下的星号步骤可以在另外5分钟内完成。

这是一个相当快速,低投资的方法来尝鲜一个强大产品。

转载于:https://www.cnblogs.com/StreamInsight/archive/2011/07/05/5-Quick-Steps-for-Trying-Out-StreamInsight-with-LINQPad.html

【翻译】五步快速使用LINQPad尝鲜StreamInsight相关推荐

  1. Cloud Computing:基于无影云电脑利用Python语言实现绘制“可爱小老虎”虎年快乐及无影云电脑简介、应用场景、使用体验(五步快速上手)分享图文教程之详细攻略

    Cloud Computing:基于无影云电脑利用Python语言实现绘制"可爱小老虎"虎年快乐及无影云电脑简介.应用场景.使用体验(五步快速上手)分享图文教程之详细攻略 目录 无 ...

  2. 使用HTML5/CSS3五步快速制作便签贴特效

    本篇文字将展示给你的是,如何利用HTML5/CSS3,仅用5步就可以制作便签贴效果的HTML页面,效果图如下: (注:图里的文字纯属杜撰,搞笑目的,如有雷同,纯属巧合,谢谢!) 注:该效果可以在Saf ...

  3. 使用HTML 5/CSS3五步快速制作便签贴特效

    注:该效果可以在Safari, Chrome,Firefox和Opera在看到效果,IE上由于对HTML5的支持不完全,所以看不出效果. 第一步:创建基本HTML和正方形 首先添加基本的HTML结构以 ...

  4. PC-飞起来!我的Windows XP——五步快速优化Windows XP

    虽然Microsoft的 Vista已经发售了快一年,但国内大部分系统用户仍使用着目前堪称完美的Windows XP.与以往的Windows操作系统一样,新安装的Windows XP可能还不在最佳状态 ...

  5. 五步快速安装android模拟器

    有时候我们不得不面临一些离开自己电脑,那么怎样才能在别人的电脑上快速安装android的模拟器呢,下面记载着自己快速安装android模拟器的步骤 一..首先准备的内容有 .jdk1.6        ...

  6. 无法远程xp服务器,五步快速处理在WinXP下IIS无法远程访问的问题

    IIS并非一个windows XP系统里常用的服务,但是对于专业技术人员来说却是不可或缺的.但是众所周知IIS的稳定性上比Apache要差,经常会遇到IIS无法启动.失效或者无法远程访问的问题.下面系 ...

  7. 国内Homebrew安装太慢 - 简单五步快速安装

    Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装.卸载.更新.查看.搜索等很多实用的功能.简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径的情况,十分方便快捷. 本文 ...

  8. Spring-Data-JPA尝鲜:快速搭建CRUD+分页后台实例

    戳蓝字"CSDN云计算"关注我们哦! 简书ID:@我没有三颗心脏   github:wmyskxz   欢迎关注公众微信号:wmyskxz 前言:由于之前没有接触过Hibernat ...

  9. centos7 如何安装部署k8s_五步教你如何使用k8s快速部署ES

    前言 今天小编打算用五步教大家如何使用k8s快速部署ES,有兴趣的小伙伴可以了解一下~ 由于是使用本地存储,所以需要先创建pv 1.创建存储类 local-elasticsearch.yaml kin ...

最新文章

  1. TypeScript方法的定义
  2. vsftpd的不同安装方式及服务控制脚本
  3. mysql 5.6 安装教程
  4. python运维开发培训_运维架构师-Python 自动化运维开发-014
  5. 递归算法1加到100_五种循环方法计算1加到100
  6. 蓝魔i11pro运行linux,不仅仅是变大了 蓝魔i11pro新玩法
  7. java由谁创建_透析Java本质-谁创建了对象,this是什么
  8. 2021年中国电子学习课程市场趋势报告、技术动态创新及2027年市场预测
  9. python ssh库paramiko学习
  10. ubuntu终止terminal中下载任务以及继续下载
  11. ios html 图片旋转了,解决移动端iOS下上传图片被旋转问题。
  12. java 外文参考文献_java英文参考文献
  13. 常规英文字体 电商_电商设计中常见的中英字体的应用
  14. USB、MiniUSB、MicroUSB接线
  15. docker之部署一个不中毒的浏览器
  16. RT Thread外设驱动添加-STH3x
  17. chmod 赋权所有_linux 命令 赋权 chmod
  18. linux中的批量删除和查找
  19. poj2187 旋转卡(qia)壳(ke)
  20. shell脚本实现通过ssh跳板机(动态密码)一键登陆服务器(相关问题与解决方案)

热门文章

  1. 半年工作经验今日头条和美团面试题面经分享
  2. sqlserver聚合索引(clustered index) / 非聚合索引(nonclustered index)的理解
  3. MS SQL SERVER 读取数据库中每个表的描述/注释以及表中字段/列的字段名,字段类型,字段描述/注释/说明等信息...
  4. 解决IIS数据库连接出错方法
  5. javaEE异常摘要——更换工作区相同tomcat当部署在同一个项目疑难解答
  6. VMware ESXI5.0的安装配置
  7. 10、Windows API 文件系统
  8. oracle分布式数据库中间件,分布式数据库中间件设想
  9. datagrip替换字_Datagrip 快捷键和常用插件持续更新一集一些使用技巧
  10. bootstrapt学习指南_bootstrap-知识点梳理-学习入门篇