2019/11/04 04-时间窗口函数实现

在这里插入图片描述
产生的日志是有时间的,每隔多少时间去处理一次数据,就是滑动窗口在这里插入图片描述
日志都是按照时间顺序产生的,这时候用窗口来理解就是
一种事窗口的宽度,(有个窗户,你现在能看到的就是现在的数据,每隔多长时间卡一下)
窗口宽度是宽度,移动过多少时间,就是间隔多少

红色窗口,随着时间流逝向右跑,每滑动几秒就需要停下来,对框起来的数据进行一次计算,如果窗口宽度是大于间隔时间的话,
时间开始,框子这里面数据就是要计算的数据

在这里插入图片描述
处理完了继续走,向后看,然后窗口到了下一个地方,就是区域内的数据
在这里插入图片描述
统计学的时候,前面一部分数据要和后一部分数据需要有重叠计算,这样前后就产生某种关联
在这里插入图片描述
窗口宽,间隔短就出现了重叠的区域
在这里插入图片描述
这样时间间隔和框子是同步的,计算的时候就没有重叠的部分在这里插入图片描述在这里插入图片描述在这里插入图片描述
生成的数据都是和时间顺序相关的,一般按照时间顺序进行分析,怎么分析,就是一般按照滑动窗口来做在这里插入图片描述
现在做一个简单的程序,做一个数据源。,产生一个随机数

这样是死循环,不停地送入数据
在这里插入图片描述
拿到这个生成器对象
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起始也支持这样的窗口概念
攒一批数据,这个数据是不是属于时间窗口内的数据,如果是窗口内的数据,间隔多少秒一次

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值