CN109948007B - 一种查询时序数据统计最大连续递增次数与递减次数的处理方法 - Google Patents
一种查询时序数据统计最大连续递增次数与递减次数的处理方法 Download PDFInfo
- Publication number
- CN109948007B CN109948007B CN201910219682.8A CN201910219682A CN109948007B CN 109948007 B CN109948007 B CN 109948007B CN 201910219682 A CN201910219682 A CN 201910219682A CN 109948007 B CN109948007 B CN 109948007B
- Authority
- CN
- China
- Prior art keywords
- time
- tail
- head
- count
- new
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种查询时序数据统计最大连续递增次数与递减次数的处理方法,本发明预先对数据序列分组,然后计算每个分组的最大连续递增与递减次数、首元素、尾元素、从首元素开始的连续递增与递减次数、以尾元素为止的连续递增与递减次数及每个分组的元素个数,把中间结果存储在相应时间戳上,查询时根据指定时间戳快速得到计算结果;由于只存储计算后的中间结果,内存耗费降低,存储效率提高,因为提前计算好了中间结果,所以在查询时响应速度极快;最为重要的是,这部分结果跟着系统时间移动而不断变化,能够达到时间窗口平滑移动的目的。本发明适用于时序数据处理技术等数据分析领域,能够显著提升计算时序数据最大连续递增与递减次数的速度。
Description
技术领域
本发明是一种时序数据处理技术,根据时序数据中的时间戳,将指定区间的时序运算结果存于该区间对应时间戳上,从而提供时间窗口平行滑动处理的能力。主要适用于时序数据处理技术等数据分析领域。
背景技术
在时序数据分析处理领域,对于时间窗口滑动处理的方案很多,大多都是将某个实体上面的数据进行过滤保留原始数据,从而进行adhoc查询的方案。adhoc查询非常灵活,但是一旦实体过大(数据过于密集),每次需要处理的数据量变大,性能会十分低下。
假设有个账号具备如下序列,⑦⑤⑥②排布如图1所示。假设以当前时间作为基准,我们需要统计该账号过去6小时的交易金额的最大连续递增次数。按照adhoc处理的形式,需要根据当前时间(18:00:00),计算统计区间的起点(18-6=12:00:00),找到12点到18点的所有数据,然后对这些数据进行统计递增计算得到4这个答案。每次系统时间向前滑动,就需要重复上述计算步骤。因为每次都需要基于原始时间序列重复计算,整个计算过程复杂且效率低下,唯一的优势就是计算比较灵活。
发明内容
本发明的目的在于针对现有技术的不足,提供一种查询时序数据进行统计最大连续递增次数与递减次数的处理方法。
本发明的目的是通过以下技术方案来实现的:一种查询时序数据统计最大连续递增次数与递减次数的处理方法,对于一个时序数据集合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、Mx中从首元素head开始的连续递增序列的递增次数或连续递减序列的递减次数headCount、Mx中以尾元素tail为止的连续递增序列的递增次数或连续递减序列的递减次数tailCount、Mx元素的个数size,记为fx=(headx,tailx,sizex,countx,headCountx,tailCountx),所有的fx组成集合FV={f1,f2…fx};
(3)查询移动窗口中间结果集:根据指定时间戳T和时间切片个数TC,找到T对应的fx,那么集合Sx={fx-TC,fx–TC+1,…fx}就是该查询的中间结果集;
(4)计算移动窗口的递增次数或递减次数:对中间结果集Sx中的元素从前到后依次合并,相邻两个元素合并成一个新元素,假设合并后的新元素是fnew,合并前两个相邻的元素是fa和fb,其中fa在前,fb在后,那么,headnew=heada,tailnew=tailb,sizenew=sizea+sizeb;当计算递增次数且taila小于headb,或计算递减次数且taila大于headb时,countnew=Max(counta,countb,tailCounta+headCountb+1),否则countnew=Max(counta,countb);当计算递增次数且taila小于headb而且headCounta=sizea-1时,或计算递减次数且taila大于headb而且headCounta=sizea-1时,headCountnew=headCounta+1+headCountb,否则headCountnew=headCounta;当计算递增次数且taila小于headb而且tailCountb=sizeb-1时,或计算递减次数且taila大于headb而且tailCountb=sizeb-1时,tailCountnew=tailCountb+1+tailCounta,否则tailCountnew=tailCountb;这样依次合并后得到最终的一个元素,该元素的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,在Mx中可能会有很多连续递增的子序列,这些子序列的长度会有区别,将最长的子序列作为最大连续递增或递减序列,我们取最大连续递增序列的递增次数或递减序列的递减次数count、Mx的首元素head、Mx的尾元素tail,Mx中从首元素head开始的连续递增序列的递增次数或递减序列的递减次数headCount,Mx中以尾元素tail为止的连续递增序列的递增次数或递减序列的递减次数tailCount,Mx元素的个数size,记为fx=(headx,tailx,sizex,countx,headCountx,tailCountx),所有的fx组成集合FV={f1,f2…fx};
(3)查询移动窗口中间结果集:根据指定时间戳T和时间切片个数TC,找到T对应的fx,那么集合Sx={fx-TC,fx–TC+1,…fx}就是该查询的中间结果集;
(4)计算移动窗口的递增次数或递减次数:对中间结果集Sx中的元素从前到后依次合并,相邻两个元素合并成一个新元素,假设合并后的新元素是fnew,合并前两个相邻的元素是fa和fb,其中fa在前,fb在后,那么,headnew=heada,tailnew=tailb,sizenew=sizea+sizeb;当计算递增次数且taila小于headb,,或计算递减次数且taila大于headb时,也就是两个序列合并后连接处依然保持递增或递减,countnew=Max(counta,countb,tailCounta+headCountb+1),否则countnew=Max(counta,countb);当计算递增次数且taila小于headb而且headCounta=sizea-1时,或计算递减次数且taila大于headb而且headCounta=sizea-1时,也就是两个序列合并后连接处依然保持递增或递减而且fa是一个完全递增或递减的序列,headCountnew=headCounta+1+headCountb,否则headCountnew=headCounta;当计算递增次数且taila小于headb而且tailCountb=sizeb-1时,或计算递减次数且taila大于headb而且tailCountb=sizeb-1时,也就是两个序列合并后连接处依然保持递增或递减而且fb是一个完全递增或递减的序列,tailCountnew=tailCountb+1+tailCounta,否则tailCountnew=tailCountb;这样依次合并后得到最终的一个元素,该元素的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)属于第六个分组。
接下来计算每个分组的首元素head、尾元素tai、元素的个数size、最大连续递增序列的递增次数count、集合中从首元素head开始的连续递增序列的递增次数headCount、集合中以尾元素tail为止的连续递增序列的递增次数tailCount,每个分组都会得到一个六元组(head,tail,size,count,headCount,tailCount),具体计算结果如图2所示。
假设查询时,时间戳为18:00、时间切片数为6,也就是查询(12:00,18:00)内所有交易金额组成的序列的最长连续递增序列的大小。因此,得到了图2中显示的6个六元组。
最后,合并这6个六元组。相邻两个六元组合并后得到一个新的六元组,合并的规则如上文介绍,例如第一个六元组为(12,7,2,0,0,0),第二个六元组为(14,6,3,1,0,1),合并时新的head为12,tail为6,size为2+3=5,count为Max(0,1,1)=1,headCount=0,tailCount=1,得到新的六元组为(12,6,5,1,0,1)。逐个计算,最终可以得到过去6小时交易金额的最大连续递增次数为4。
实施例2
为了展示本发明方法的实际有益效果,我们做了一组实验。通过对比本发明方法和传统方法在处理同样的数据量时,本发明方法比传统方法使用更少的时间来展示本发明方法的效果。
实验场景为:生成随机的50万组测试数据,每组测试数据中包括一个时间戳和一个数字。时间戳代表数据的时序,数字代表系统在该时间点上的采集值。测试数据分布在连续的50个小时中,每个小时有1万组。每组数据的时间戳在该小时内均匀分布,采集值随机生成。
测试方法为:分别使用本发明方法和传统方法计算每1个、2个...50个小时的递增和递减次数,然后记录下每次测试的时间,最终绘制图表。
测试结果如图3所示。通过结果可以看出:
(1)传统方法的处理耗时远远大于本发明方法。
(2)随着数据量的增长,传统方法的处理耗时线性增长,而本发明方法基本保持不变。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。
Claims (2)
1.一种查询时序数据统计最大连续递增次数与递减次数的处理方法,利用计算机进行快速的数据查询;其特征在于,预先把计算好的中间结果存储在相应时间戳,查询时可根据指定的时间戳快速得到对应的计算结果;对于一个时序数据集合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;
(2)对于集合M中的每个元素Mx,计算其最大连续递增序列的递增次数或其最大连续递减序列的递减次数count、首元素head、尾元素tail、Mx中从首元素head开始的连续递增序列的递增次数或连续递减序列的递减次数headCount、Mx中以尾元素tail为止的连续递增序列的递增次数或连续递减序列的递减次数tailCount、Mx元素的个数size,记为fx=(headx,tailx,sizex,countx,headCountx,tailCountx),所有的fx组成集合FV={f1,f2…fx};
(3)查询移动窗口中间结果集:根据指定时间戳T和时间切片个数TC,找到T对应的fx,那么集合Sx={fx-TC,fx–TC+1,…fx}就是该查询的中间结果集;
(4)计算移动窗口的递增次数或递减次数:对中间结果集Sx中的元素从前到后依次合并,相邻两个元素合并成一个新元素,假设合并后的新元素是fnew,合并前两个相邻的元素是fa和fb,其中fa在前,fb在后,那么,headnew=heada,tailnew=tailb,sizenew=sizea+sizeb;当计算递增次数且taila小于headb,或计算递减次数且taila大于headb时,countnew=Max(counta,countb,tailCounta+headCountb+1),否则countnew=Max(counta,countb);当计算递增次数且taila小于headb而且headCounta=sizea-1时,或计算递减次数且taila大于headb而且headCounta=sizea-1时,headCountnew=headCounta+1+headCountb,否则headCountnew=headCounta;当计算递增次数且taila小于headb而且tailCountb=sizeb-1时,或计算递减次数且taila大于headb而且tailCountb=sizeb-1时,tailCountnew=tailCountb+1+tailCounta,否则tailCountnew=tailCountb;这样依次合并后得到最终的一个元素,该元素的count就是移动窗口的最大连续递增次数或递减次数。
2.根据权利要求1所述的一种查询时序数据统计最大连续递增次数与递减次数的处理方法,其特征在于,所述时间切片长度TS除支持毫秒、秒、分钟、小时、天、周、月、年以外,还支持任意时间切片长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910219682.8A CN109948007B (zh) | 2019-03-21 | 2019-03-21 | 一种查询时序数据统计最大连续递增次数与递减次数的处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910219682.8A CN109948007B (zh) | 2019-03-21 | 2019-03-21 | 一种查询时序数据统计最大连续递增次数与递减次数的处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109948007A CN109948007A (zh) | 2019-06-28 |
CN109948007B true CN109948007B (zh) | 2020-07-14 |
Family
ID=67011220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910219682.8A Active CN109948007B (zh) | 2019-03-21 | 2019-03-21 | 一种查询时序数据统计最大连续递增次数与递减次数的处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109948007B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111984860B (zh) * | 2020-07-30 | 2022-10-11 | 浙江邦盛科技股份有限公司 | 一种时序数据的事件上下文关联处理方法及系统 |
CN111984861B (zh) * | 2020-07-30 | 2022-10-11 | 浙江邦盛科技股份有限公司 | 一种时序数据的复杂事件处理方法及系统 |
CN112927068A (zh) * | 2021-03-30 | 2021-06-08 | 善诊(上海)信息技术有限公司 | 业务数据风险分类门限确定方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102340416A (zh) * | 2011-07-08 | 2012-02-01 | 东软集团股份有限公司 | 基于时间切片进行事件统计的方法及装置 |
CN104199942A (zh) * | 2014-09-09 | 2014-12-10 | 中国科学技术大学 | 一种Hadoop平台时序数据增量计算方法及系统 |
CN106202384A (zh) * | 2016-07-08 | 2016-12-07 | 清华大学 | 一种支持时序数据聚合函数的索引方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10489716B2 (en) * | 2016-07-08 | 2019-11-26 | Intellergy, Inc. | Method for performing automated analysis of sensor data time series |
-
2019
- 2019-03-21 CN CN201910219682.8A patent/CN109948007B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102340416A (zh) * | 2011-07-08 | 2012-02-01 | 东软集团股份有限公司 | 基于时间切片进行事件统计的方法及装置 |
CN104199942A (zh) * | 2014-09-09 | 2014-12-10 | 中国科学技术大学 | 一种Hadoop平台时序数据增量计算方法及系统 |
CN106202384A (zh) * | 2016-07-08 | 2016-12-07 | 清华大学 | 一种支持时序数据聚合函数的索引方法 |
Non-Patent Citations (1)
Title |
---|
"在流数据模式下计算最长递增子序列长度";倪晨宇;《计算机科学》;20051231;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109948007A (zh) | 2019-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109948007B (zh) | 一种查询时序数据统计最大连续递增次数与递减次数的处理方法 | |
CN109164980A (zh) | 一种时序数据的聚合优化处理方法 | |
CN107562865A (zh) | 基于Eclat的多元时间序列关联规则挖掘方法 | |
CN107748766A (zh) | 一种基于Presto和Elasticsearch的大数据快速查询方法 | |
CN100354864C (zh) | 数据挖掘中一种基于混合互信息的特征选择方法 | |
CN110008544B (zh) | 一种查询时序数据递增次数与递减次数的处理方法 | |
CN114185885A (zh) | 一种基于列存数据库的流式数据处理方法及系统 | |
CN106802787B (zh) | 基于GPU排序的MapReduce优化方法 | |
CN114238360A (zh) | 一种用户行为分析系统 | |
US20190258634A1 (en) | Data stream connection method and apparatus | |
JP2001282816A (ja) | 多次元データベース処理方法および処理システム | |
CN110515939B (zh) | 一种基于gpu的多列数据排序方法 | |
US8768938B2 (en) | Histogram processing by trend and pattern removal | |
CN116226086A (zh) | 一种数据迁移过程中分段数据的顺序维护与校验方法 | |
CN112988846B (zh) | 一种基于绝对的时间滑动窗口的流量实时统计方法及引擎 | |
CN107147947B (zh) | 关键帧识别方法及装置 | |
CN114185884A (zh) | 基于列存数据的流式数据处理方法及系统 | |
CN112685444A (zh) | 数据查询方法、装置、计算机设备和存储介质 | |
CN113660147A (zh) | 一种基于模糊熵的ip会话序列周期性评估方法 | |
CN112347098A (zh) | 数据库表拆分方法、系统、电子设备及存储介质 | |
CN110516796A (zh) | 一种面向嵌入式平台的分组卷积过程优化方法 | |
CN110309141A (zh) | 一种直播间数据量统计方法、存储介质、设备及系统 | |
CN110704515A (zh) | 基于MapReduce模型的两阶段在线化采样方法 | |
CN112527922B (zh) | 一种基于不变模型的数据仓库增量加工方法 | |
CN113761721B (zh) | 一种基于栅格数据快速识别极端高/低温事件的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: Room ABCD, 17th floor, building D, Paradise Software Park, No.3 xidoumen Road, Xihu District, Hangzhou City, Zhejiang Province, 310012 Patentee after: Zhejiang Bangsheng Technology Co.,Ltd. Address before: Room ABCD, 17th floor, building D, Paradise Software Park, No.3 xidoumen Road, Xihu District, Hangzhou City, Zhejiang Province, 310012 Patentee before: ZHEJIANG BANGSUN TECHNOLOGY Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |