法律状态公告日
法律状态信息
法律状态
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)随着数据量的增长,传统方法的处理耗时线性增长,而本发明方法基本保持不变。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。
机译: 计算飞机车轮轮胎着陆次数的方法,包括检测确定的轮胎旋转频率高于给定旋转频率,以及递增计数轮胎着陆次数的计数器
机译: 使用次数和存储设备的使用次数管理方法以及重写信息管理设备的次数和重写信息管理方法的次数
机译: 根据实际执行次数与预期次数累计次数的偏差来调整线程指令的发出次数