产生的日志是有时间的,每隔多少时间去处理一次数据,就是滑动窗口
日志都是按照时间顺序产生的,这时候用窗口来理解就是
一种事窗口的宽度,(有个窗户,你现在能看到的就是现在的数据,每隔多长时间卡一下)
窗口宽度是宽度,移动过多少时间,就是间隔多少
红色窗口,随着时间流逝向右跑,每滑动几秒就需要停下来,对框起来的数据进行一次计算,如果窗口宽度是大于间隔时间的话,
时间开始,框子这里面数据就是要计算的数据
处理完了继续走,向后看,然后窗口到了下一个地方,就是区域内的数据
统计学的时候,前面一部分数据要和后一部分数据需要有重叠计算,这样前后就产生某种关联
窗口宽,间隔短就出现了重叠的区域
这样时间间隔和框子是同步的,计算的时候就没有重叠的部分
生成的数据都是和时间顺序相关的,一般按照时间顺序进行分析,怎么分析,就是一般按照滑动窗口来做
现在做一个简单的程序,做一个数据源。,产生一个随机数
这样是死循环,不停地送入数据
拿到这个生成器对象
s= source()
现在就拿到三个数据,时间是在变化 的
现在想求个平均值
保留2位小数
攒一批数据交给handler处理即可
window该如何去写
这两个不能为none所以需要前面赋值,但是start这样是历史时间了
所以这两个都不适合从none开始,都需要进行修改,先试试调用一下window函数
窗口大小会超过时间
中间不要的删除
这样就出现问题了noyield,下面就没有出现时区 叫aware
一个有时区的时间和没有时区的时间是不能相减的
查看帮助,now里可以加东西
timezone是tzinfo的子类
时间差就是timedelta,把8小时补进去,现在就变成aware,刚才看帮助没写,但是datatime.timezone里写了帮助,tzinfo
这样就可以了
之前的时间没变,下面交换下就改变了
第一个数据一般不会影响趋势,但是也有例外,如果就这个算出1,其他都是0,也是影响太大
下面数据攒够了,就要把数据输出出去,求个平均,每隔5下计算一次,一下一秒
但是现在老的buffer数据就需要清除掉
但是与其部分清除,不如重建新的,
现在是判断谁满足条件就留下来
做的其实这个之前的都不要了
width=w,current=c,w-i
大于是留下来的,其他都是丢掉的
这个计算没有必要反复做,因为窗口函数定死了,这个值就是定死的
带时区为aware,不带时区为noinfo,两个都需要一致
日期起始靠最近的,后面就替换掉了
有这样的窗口函数就可以进行处理,不管是叠加还是不重叠的,
sqlserver起始也支持这样的窗口概念
攒一批数据,这个数据是不是属于时间窗口内的数据,如果是窗口内的数据,间隔多少秒一次