bandik

 

HoppingWindow的alignment

用HoppingWindow分析数据的时候,如果用下面的代码:

 

View Code
var newSourceData = new []
{
new { S=DateTime.Parse("2009-10-23 17:00:00.0000000"),E=DateTime.Parse("2009-10-23 18:10:00.0000000"),V=12},
new { S=DateTime.Parse("2009-10-23 18:10:00.0000000"),E=DateTime.Parse("2009-10-23 19:12:00.0000000"),V=27},
new { S=DateTime.Parse("2009-10-23 19:12:00.0000000"),E=DateTime.Parse("2009-10-23 20:13:00.0000000"),V=29}
};
var myInputStream = newSourceData.ToIntervalStream(Application,ev => IntervalEvent.CreateInsert(ev.S.ToLocalTime(),ev.E.ToLocalTime(),ev),AdvanceTimeSettings.StrictlyIncreasingStartTime);
var myStream = from win in myInputStream.HoppingWindow(
  TimeSpan.FromTicks(1), TimeSpan.FromHours(2),
  HoppingWindowOutputPolicy.ClipToWindowEnd)
   select new
 {
  // 窗口仅用来显示每2小时候的一个事件点
  CountSoFar = win.Sum(e => e.V)
 };
 myStream.Dump();

得到的数据如下:

根据hoppingWindow的特点,这里应该是从2009/10/23 17:00开始,但是为什么这里会是2009/10/23 18:00 呢,

这是因为如果不指定默认的alignment时间,默认的值是UTC的DateTime.MinValue,依照这个值进行对齐就会

和2009/10/23 17:00相差一个小时,然后根据算法,向前偏移HopSize大小就是2009/10/23 18:00 。

将代码改成这样:

 

View Code
var newSourceData = new []
{
new { S=DateTime.Parse("2009-10-23 17:00:00.0000000"),E=DateTime.Parse("2009-10-23 18:10:00.0000000"),V=12},
new { S=DateTime.Parse("2009-10-23 18:10:00.0000000"),E=DateTime.Parse("2009-10-23 19:12:00.0000000"),V=27},
new { S=DateTime.Parse("2009-10-23 19:12:00.0000000"),E=DateTime.Parse("2009-10-23 20:13:00.0000000"),V=29}
};
var myInputStream = newSourceData.ToIntervalStream(Application,ev => IntervalEvent.CreateInsert(ev.S.ToLocalTime(),ev.E.ToLocalTime(),ev),AdvanceTimeSettings.StrictlyIncreasingStartTime);
var myStream = from win in myInputStream.HoppingWindow(
     TimeSpan.FromTicks(1), TimeSpan.FromHours(2),
     DateTime.Parse("2009-10-23 17:00:00.0000000").ToUniversalTime(),
     HoppingWindowOutputPolicy.ClipToWindowEnd)
      select new
 {
     // 窗口仅用来显示每2小时候的一个事件点
     CountSoFar = win.Sum(e => e.V)
 };
 myStream.Dump();

结果就会是期望的结果了:

posted on 2011-10-13 20:23  五洋  阅读(193)  评论(0编辑  收藏  举报

导航