随笔分类 - 04. 心得分享
摘要:准备工作 StreamInsight查询系列(一)——准备工作 StreamInsight查询系列(二)——在LINQPad中输出查询结果 基本查询 StreamInsight查询系列(三)——基本查询操作之过滤 StreamInsight查询系列(四)——基本查询操作之聚合 StreamInsight查询系列(五)——基本查询操作之用户自定义聚合 StreamInsight查询系列(六)——基本查询操作之分组聚合 StreamInsight查询系列(七)——基本查询操作之基础排序 StreamInsight查询系列(八)——基本查询操作之分组排序 StreamInsight查询系列(九...
阅读全文
摘要:上篇文章介绍了查询模式中如何实现指数平滑法,这篇博文将介绍StreamInsight中如何实现模式匹配。 测试数据准备 为了方便测试查询,我们首先准备一个静态的测试数据源:var startTime = new DateTime(2011, 9, 28).ToLocalTime();var source = new[]{ PointEvent.CreateInsert(startTime.AddSeconds(0), 1), PointEvent.CreateInsert(startTime.AddSeconds(20), 2), PointEvent.CreateInser...
阅读全文
摘要:上篇文章介绍了查询模式中如何进行持续更新,这篇博文将介绍StreamInsight中如何实现指数平滑法。 概念介绍 在我们进行具体实现之前,让我们了解一下什么是指数平滑法? 概念介绍:指数平滑法是一个可以应用于时间序列上的计算方法,最初由Robert G..Brown提出。指数平滑法可以用来生成平滑数据以供展示之用,也可以用于预测未来趋势。它通常应用在金融市场和经济数据中,当然它本质上可以应用于任何不断重复的离散集合中。 我们通常将原始数据序列写作{xt},将指数平滑法的结果序列记为{st},用以估计下一个出现的x值。在t=0时刻,一个比较简单的指数平滑法公式可以写作: 其中α为平滑因子,它.
阅读全文
摘要:上篇文章介绍了查询模式中如何使用地理数据,这篇博文将介绍StreamInsight中如何进行持续更新。 测试数据准备 为了方便测试查询,我们首先准备一个静态的测试数据源:var sourceData = new []{ new { Value = 12, Status = 0, TimeStamp = DateTime.Parse("10/23/2009 9:00:00 AM") }, new { Value = 15, Status = 0, TimeStamp = DateTime.Parse("10/23/2009 10:10:00 AM") },
阅读全文
摘要:上篇文章介绍了查询模式中如何检测间隙事件,这篇博文将介绍StreamInsight中如何使用地理数据。 测试数据准备 为了方便测试查询,我们首先准备一个静态的测试数据源:// 创建包含地理位置的引用数据var assetData = new []{ new { AssetId = 1, AssetName = "My Stuff", Latitude = 47.64339, Longitude = -122.12840 }, new { AssetId = 2, AssetName = "My Other Stuff", Latitude = 47.64
阅读全文
摘要:上篇文章介绍了查询模式中如何检测异常事件,这篇博文将介绍StreamInsight中如何检测间隙事件。 测试数据准备 为了方便测试查询,我们首先准备一个静态的测试数据源:// 创建数据源,要注意的是4:16和4:30之间存在的事件间隙var sourceData = new []{ new { Status = 1, TimeStamp = new DateTime(2009, 10, 23, 4, 12, 0) }, new { Status = 0, TimeStamp = new DateTime(2009, 10, 23, 4, 13, 0) }, new { Sta...
阅读全文
摘要:上篇文章介绍了查询模式中如何发现趋势,这篇博文将介绍StreamInsight中如何检测异常。 测试数据准备 为了方便测试查询,我们首先准备一个静态的测试数据源:var now = DateTime.Parse("09/12/2011 8:57:00 PM");var input = new[]{ new { Time = now + TimeSpan.FromSeconds(1), Value = 20}, new { Time = now + TimeSpan.FromSeconds(2), Value = 30}, new { Time = now + TimeSpa
阅读全文
摘要:上篇文章介绍了查询模式中如何应对瞬变及报警泛滥,这篇博文将介绍StreamInsight中的趋势发现。 测试数据准备 为了方便测试查询,我们首先准备一个静态的测试数据源:var sourceData = new []{ new { SourceId = "A", Value = 22, Status = 1, TimeStamp = DateTime.Parse("10/23/2009 4:12:00 PM") }, new { SourceId = "A", Value = 24, Status = 0, TimeStamp = D
阅读全文
摘要:上篇文章介绍了查询模式中的左外联接部分,这篇博文将介绍StreamInsight中如何处理报警及瞬变。 瞬变 我们用一个例子来解释如何使用StreamInsight处理瞬变情形,例如: 设定一个特定事件的“报警值”,如果2分钟内没有新事件出现,则产生一个报警? 如下,我们希望为Status为1的事件发生后2分钟内没有没有新事件出现的瞬变进行报警。var sourceData = new[]{ new { Status = 1, TimeStamp = DateTime.Parse("10/23/2009 4:12:00 PM") }, new { Status = 0, T
阅读全文
摘要:上篇文章介绍了查询模式中窗口比率部分,这篇博文将介绍StreamInsight中的左外联接(Left Outer Join)。 测试数据准备 为了方便测试查询,我们首先准备一个静态的测试数据源:var time = DateTime.Parse("10/23/2011 09:37:00 PM");var inputEvents = new[]{ new { Timestamp = time+TimeSpan.FromMinutes(1), accountNo = "800001", branchName="43rd Street",
阅读全文
摘要:上篇文章介绍了查询模式中相异计数部分,这篇博文将介绍窗口比率,即找出某类事件占事件总数的百分比。 测试数据准备 为了方便测试查询,我们首先准备一个静态的测试数据源:var sourceData = new[]{ new { SourceId = "A", Value = 22, Status = "SUCCESS", TimeStamp = DateTime.Parse("10/23/2009 4:12:00 PM") }, new { SourceId = "A", Value = 24, Status = &q
阅读全文
摘要:上篇文章介绍了查询模式中基本模式部分,这篇博文将介绍相异计数,即在事件流中找出互不相同的事件并进行计数。 测试数据准备 为了方便测试查询,我们首先准备一个静态的测试数据源:var dataWithDups = new []{ new { EventType = 'A', OrderNumber = 101, Action = 'S', Price = 8.65, Shares = 2000 }, new { EventType = 'A', OrderNumber = 102, Action = 'S', Price = 8.60
阅读全文
摘要:上篇文章介绍了查询模式中事件对齐部分,这篇博文将介绍基本模式。 基本模式 问题1:怎样检查事件B是否位于事件A发生后的90秒内? 让我们用一个例子来回答这个问题,先准备一些测试数据:var sourceDataAB = new[]{ new { SourceId = "A", Value = 22, Status = 1, TimeStamp = DateTime.Parse("10/23/2009 4:12:00 PM") }, new { SourceId = "A", Value = 24, Status = 0, TimeSt
阅读全文
摘要:上篇文章介绍了查询模式中窗口对齐部分,这篇博文将介绍事件对齐。 测试数据准备 为了方便测试查询,我们首先准备一个静态的测试数据源:var sourceIntervalDataType = new []{ new { Id = "A", StartTime = DateTime.Parse("10/23/2009 11:59:01 PM"), EndTime = DateTime.Parse("10/23/2009 11:59:59 PM") }, new { Id = "A", StartTime = DateTi
阅读全文
摘要:前面部分介绍了StreamInsight的基础查询系列,从这篇文章开始,我会开始不断介绍StreamInsight中的查询模式。这篇博文作为查询模式的第1篇,主要介绍窗口对齐部分。 测试数据准备 为了方便测试查询,我们首先准备一个静态的测试数据源:var weatherData = new[]{ new { Timestamp = new DateTime(2010, 1, 1, 0, 00, 00, DateTimeKind.Utc), Temperature = -9.0, StationCode = 71395, WindSpeed = 4}, new { Timestam...
阅读全文
摘要:上篇博文介绍了StreamInsight基础查询操作中的决胜排序部分。这篇文章将主要介绍如何StreamInsight基本查询的最后一篇——联接。 测试数据准备 为了方便测试查询,我们首先准备一些静态的测试数据源。如下input1和input2是一个包含时间戳和[1,5]区间数字的复杂事件流:// 创建一个包含[1,5]区间连续数字的事件流var now = DateTime.Now;var input1 = Enumerable.Range(1, 5).ToPointStream(Application, e => PointEvent.CreateInsert(now.AddSeco
阅读全文
摘要:上篇博文介绍了StreamInsight基础查询操作中的分组排序部分。这篇文章将主要介绍如何StreamInsight查询中的决胜排序(Ranking and Tiebreaking)。 测试数据准备 为了方便测试查询,我们首先准备一个静态的测试数据源:var sourceData = new[]{ new { Name = "A", Count = 2, TieBreaker = 1 }, new { Name = "A", Count = 3, TieBreaker = 2 }, new { Name = "A", Count =
阅读全文
摘要:上篇博文介绍了StreamInsight基础查询操作中的基础排序部分。这篇文章将主要介绍如何StreamInsight查询中的分组排序(TopK)。 测试数据准备 为了方便测试查询,我们首先准备一个静态的测试数据源:var weatherData = new[]{ new { Timestamp = new DateTime(2010, 1, 1, 0, 00, 00, DateTimeKind.Utc), Temperature = -9.0, StationCode = 71395, WindSpeed = 4}, new { Timestamp = new DateTime...
阅读全文
摘要:上篇博文介绍了StreamInsight基础查询操作中的分组聚合部分。这篇文章将主要介绍如何StreamInsight查询中的基础排序(TopK)。 测试数据准备 为了方便测试查询,我们首先准备一个静态的测试数据源:var weatherData = new[]{ new { Timestamp = new DateTime(2010, 1, 1, 0, 00, 00, DateTimeKind.Utc), Temperature = -9.0, StationCode = 71395, WindSpeed = 4}, new { Timestamp = new DateTime...
阅读全文
摘要:上篇博文介绍了StreamInsight基础查询操作中的用户自定义聚合部分。这篇文章将主要介绍如何在StreamInsight查询中使用分组聚合。 测试数据准备 为了方便测试查询,我们首先准备一个静态的测试数据源:var weatherData = new[]{ new { Timestamp = new DateTime(2010, 1, 1, 0, 00, 00, DateTimeKind.Utc), Temperature = -9.0, StationCode = 71395, WindSpeed = 4}, new { Timestamp = new DateTime(...
阅读全文

浙公网安备 33010602011771号