首页> 中国专利> 一种对时序数据统计递增次数与递减次数的处理方法

一种对时序数据统计递增次数与递减次数的处理方法

摘要

本发明公开了一种对时序数据统计递增次数与递减次数的处理方法,本发明预先对数据序列分组,然后计算每个分组的累计递增与递减次数、首元素、尾元素,把中间结果存储在相应时间戳上,查询时根据指定的时间戳快速得到计算结果;首先,中间结果的存储位置灵活多变,满足各种场景的需求;由于存储结果是计算后的中间结果,内存耗费降低,存储效率很高,因为已经提前计算好了中间结果,所以在获取对应的递增次数与递减次数时响应速度极快;最为重要的是,这部分结果跟着系统时间移动而不断变化,能够达到所需的递增次数与递减次数随时间窗口平滑移动的目的。本发明适用于时序数据处理技术等数据分析领域,能够显著提升统计递增次数与递减次数的速度。

著录项

  • 公开/公告号CN110008544A

    专利类型发明专利

  • 公开/公告日2019-07-12

    原文格式PDF

  • 申请/专利权人 浙江邦盛科技有限公司;

    申请/专利号CN201910219684.7

  • 发明设计人 王新宇;王新根;鲁萍;黄滔;王刚;

    申请日2019-03-21

  • 分类号

  • 代理机构杭州求是专利事务所有限公司;

  • 代理人刘静

  • 地址 310012 浙江省杭州市西湖区西斗门路3号天堂软件园D幢17层ABCD座

  • 入库时间 2024-02-19 12:04:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-03

    授权

    授权

  • 2019-08-06

    实质审查的生效 IPC(主分类):G06F17/50 申请日:20190321

    实质审查的生效

  • 2019-07-12

    公开

    公开

说明书

技术领域

本发明是一种时序数据处理技术,根据时序数据中的时间戳,将指定区间的时序运算结果存于该区间对应时间戳上,从而提供时间窗口平行滑动处理的能力。主要适用于时序数据处理技术等数据分析领域。

背景技术

在时序数据分析处理领域,对于时间窗口滑动处理的方案很多,大多都是将某个实体上面的数据进行过滤保留原始数据,从而进行adhoc查询的方案。adhoc查询非常灵活,但是一旦实体过大(数据过于密集),每次需要处理的数据量变大,性能会十分低下。

假设有个账号具备如下序列,排布如图1所示。假设以当前时间作为基准,我们需要统计该账号过去6小时的交易金额递增次数。按照adhoc处理的形式,需要根据当前时间(18:00:00),计算统计区间的起点(18-6=12:00:00),找到12点到18点的所有数据,然后对这些数据进行统计递增计算得到7这个答案。每次系统时间向前滑动,就需要重复上述计算步骤。因为每次都需要基于原始时间序列重复计算,整个计算过程复杂且效率低下,唯一的优势就是计算比较灵活。

发明内容

本发明的目的在于针对现有技术的不足,提供一种对时序数据进行统计递增次数与递减次数的处理方法。

本发明的目的是通过以下技术方案来实现的:一种对时序数据统计递增次数与递减次数的处理方法,对于一个时序数据集合P={(t1,v1),(t2,v2),(t3,v3),…,(tn,vn)},其中t代表不同事件时间,v代表对应时间上的一个事件;对该时间数据序列,计算其在任意时间区间内的递增(减)次数,具体处理步骤为:

(1)根据时间切片长度TS对数据集合进行分组,得到集合M={{(t1,v1),(t2,v2)…(tm1,vm1)},{(tm1+1,vm1+1),(tm2+2,vm2+2)…(tm2,vm2)}…{(tmi+1,vmi+1),(tmi+2,vmi+2)…(tn,vn)}}:对于集合P里的每个元素(t,v),都有(t,v)属于而且仅属于集合M的一个元素Mx,其中(t,v)与Mx的映射关系为t/TS+1=x。这样,M集合里的每个元素Mx代表时序数据集P中事件时间在TS*(x-1)与TS*x之间的元素组成的集合。

(2)对于集合M中的每个元素Mx,计算其累计递增(减)次数count、首元素head和尾元素tail,记为fx=(head,tail,count),所有的fx组成集合FV={f1,f2…fx}。

(3)查询移动窗口中间结果集:根据指定时间戳T(可以是任意时间)和时间切片个数TC,找到T对应的fx,那么集合Sx={fx-TC,fx–TC+1,…fx}就是该查询的中间结果集。

(4)计算移动窗口的递增(减)次数:对中间结果集Sx中的元素从前到后依次合并,相邻两个元素合并成一个新元素,新元素中首元素head是第一个元素的head,新元素的尾元素tail是第二个元素的tail,新元素的递增(减)次数count=第一个元素的count+第二个元素的count+X;当计算递增次数时,如果第一个元素的tail<第二个元素的head,X=1,否则X=0;当计算递减次数时,如果第一个元素的tail>第二个元素的head,X=1,否则X=0;这样依次合并后得到最终的一个元素,该元素的count就是移动窗口的递增(减)次数。

进一步地,所述时间切片长度TS除支持毫秒、秒、分钟、小时、天、周、月、年以外,还支持任意时间切片长度,比如3分钟,11秒等。

本发明的有益效果是:本发明预先把计算好的中间结果存储在相应时间戳,通过这样一种存储结构,可以根据指定的时间戳,快速得到对应的计算结果;首先,中间结果的存储位置灵活多变,满足各种场景的需求;另外,由于存储结果也是同样的数字,内存耗费没有增长,存储效率很高,而且因为已经提前计算好了中间结果,所以在查询时响应速度极快;最为重要的是,这部分结果是跟着系统时间移动而不断变化的,能够达到时间窗口平滑移动的目的。

附图说明

图1为一个实施例的账号交易序列示意图;

图2为本发明方法计算后的结果展示图;

图3为本发明方法与传统方法的实施效果对比图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步详细说明。

假设我们有一个时序数据集合P={(t1,v1),(t2,v2),(t3,v3),…,(tn,vn)},其中t代表不同事件时间,v代表对应时间上的一个事件;对该时间数据序列,计算其在任意时间区间内的递增(减)次数,具体处理步骤为:

(1)根据时间切片长度TS对数据集合进行分组,得到集合M={{(t1,v1),(t2,v2)…(tm1,vm1)},{(tm1+1,vm1+1),(tm2+2,vm2+2)…(tm2,vm2)}…{(tmi+1,vmi+1),(tmi+2,vmi+2)…(tn,vn)}}:对于集合P里的每个元素(t,v),都有(t,v)属于而且仅属于集合M的一个元素Mx,其中(t,v)与Mx的映射关系为t/TS+1=x。这样,M集合里的每个元素Mx代表时序数据集P中事件时间在TS*(x-1)与TS*x之间的元素组成的集合。

(2)对于集合M中的每个元素Mx,计算其累计递增(减)次数count、首元素head和尾元素tail,记为fx=(head,tail,count),所有的fx组成集合FV={f1,f2…fx}。这样计算后,无论Mx中有多少元素,都只会产生一个三元组,在存储时可以有效的节省空间。

(3)查询移动窗口中间结果集:根据指定时间戳T(可以是任意时间)和时间切片个数TC,找到T对应的fx,那么集合Sx={fx-TC,fx–TC+1,…fx}就是该查询的中间结果集。

(4)计算移动窗口的递增(减)次数:对中间结果集Sx中的元素从前到后依次合并,相邻两个元素合并成一个新元素,新元素中首元素head是第一个元素的head,新元素的尾元素tail是第二个元素的tail,新元素的递增(减)次数count=第一个元素的count+第二个元素的count+X;当计算递增次数时,如果第一个元素的tail<第二个元素的head,X=1,否则X=0;当计算递减次数时,如果第一个元素的tail>第二个元素的head,X=1,否则X=0;这样依次合并后最终只剩下一个元素,该元素的count就是移动窗口的递增(减)次数。

本发明方法在流式数据处理场景中效果更加明显,在该场景中数据在产生后不断流入流式数据处理系统中,同时要求流式数据处理系统迅速的给出计算结果(通常是毫秒级或微妙级)。如果采用传统的计算方式,需要先查询出关联的全部历史数据,然后计算累计递增(减)次数;计算所需的时间与历史数据量直接相关,时间极不可控,在大维度情况下计算所需时间会达到秒级甚至分钟级。采用本发明方法后,每流入一条数据,采用步骤(2)的方法将其合并到对应的fx中,因为只需要处理一条数据,所以计算速度很快。输出结果时,只需要合并少量(等于时间切片个数TC)的元素即可得到所需结果。

实施例1

在金融领域,每一笔交易都有交易时间和交易金额,同一张卡在一段时间内的交易序列就是一个时序数据集合P。如图1所示,假设有交易时序数据集合P={(12:10,12),(12:40,7),(13:10,14),(13:20,5),(13:45,6),(14:28,19),(15:10,23),(15:20,67),(15:40,11),(15:50,2),(16:20,98),(16:25,15),(17:20,56)}。

首先,假设当时间切片长度为1小时,(12:10,12),(12:40,7)属于第一个分组,(13:10,14),(13:20,5),(13:45,6)属于第二个分组…(17:20,56)属于第六个分组。

接下来计算每个分组的累计递增次数(count)和首(head)尾(tail)元素,每个分组都可以得到一个3元组(head,tail,count)。每个分组的计算结果如图2所示。

假设查询时,时间戳为18:00、时间切片数为6,也就是查询(12:00,18:00)内所有交易金额组成的序列的递增次数。因此,得到了图2中显示的6个三元组。

最后,合并这6个三元组。相邻两个三元组合后得到一个新的三元组,新的head是第一个元组的head,新的tail是后一个三元组的tail;新的count首先是把两个三元组的count相加,然后如果第一个三元组的tail大于后一个的head,新的count再加1。最终可以得到过去6小时交易金额递增次数之和为7。

实施例2

为了展示本发明方法的实际有益效果,我们做了一组实验。通过对比本发明方法和传统方法在处理同样的数据量时,本发明方法比传统方法使用更少的时间来展示本发明方法的效果。

实验场景为:生成随机的50万组测试数据,每组测试数据中包括一个时间戳和一个数字。时间戳代表数据的时序,数字代表系统在该时间点上的采集值。测试数据分布在连续的50个小时中,每个小时有1万组。每组数据的时间戳在该小时内均匀分布,采集值随机生成。

测试方法为:分别使用本发明方法和传统方法计算每1个、2个...50个小时的递增和递减次数,然后记录下每次测试的时间,最终绘制图表。

测试结果如图3所示。通过结果可以看出:

(1)传统方法的处理耗时远远大于本发明方法。

(2)随着数据量的增长,传统方法的处理耗时线性增长,而本发明方法基本保持不变。

上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号