筛选信息的方法、设备和计算机设备的制作技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图片简介:
本申请揭示了筛选信息的方法,包括:从源数据中筛选满足大小要求的第一数据,按照预设排序依次存入预设链表中形成第一链表;从多个第一链表中选择数据属性相同的两个第一链表并进行头部数据大小比较,将较大的头部数据存入第二链表,并将较大的头部数据从原第一链表中删除,使排序在较大的头部数据后面的数据成为新的头部数据,再进行头部数据比较,直到将两个数据属性相同的第一链表中满足要求的数据全部提取到第二链表,并根据两个第一链表的数据比较和提取过程,将所有数据属性相同的数据全部提取至第二链表;从第二链表中获取指定任务对应的TOP值;锁定并展示指定任务对应的TOP值,以及指定任务对应的TOP值对应的关联信息,简化比较,提高效率。

技术要求
1.一种筛选信息的方法,其特征在于,包括:
从源数据中筛选满足大小要求的第一数据,按照预设排序依次存入预设链表中形成第一
链表,其中,所述第一数据为所述源数据中的任一数据;
从多个所述第一链表中选择数据属性相同的两个所述第一链表并进行头部数据大小比
较,将较大的头部数据存入第二链表,并将所述较大的头部数据从原第一链表中删除,
使排序在所述较大的头部数据后面的数据成为新的头部数据,再进行头部数据比较,直
到将两个数据属性相同的所述第一链表中满足要求的数据全部提取到第二链表,并根据
两个所述第一链表的数据比较和提取过程,将所有数据属性相同的数据全部提取至第二
链表;
从所述第二链表中获取指定任务对应的TOP值,其中,所述指定任务属于任务列表中的任一任务,所述指定任务对应的TOP值关联对应的关联信息;
锁定并展示所述指定任务对应的TOP值,以及所述指定任务对应的TOP值对应的关联信息。

2.根据权利要求1所述的筛选信息的方法,其特征在于,所述第一链表包括链表结构和按照预设排序填充在链表中的元组数,所述预设排序为降序排列,所述从源数据中筛选满足大小要求的第一数据,按照预设排序依次存入预设链表中形成第一链表的步骤,包括:
获取位于所述第一链表开始表格的第一元组数;
判断所述第一数据是否大于或等于所述第一元组数;
若是,则在所述开始表格的降序排序之前添加第一新表格,使所述第一新表格成为开始表格;
将所述第一数据填充至所述第一新表格,使所述第一数据成为新的第一元组数,并按照所述第一新表格的添加过程以及所述第一新表格中的数据填充过程,完成所述第一链表中所有数据的录入。

3.根据权利要求2所述的筛选信息的方法,其特征在于,判断所述第一数据是否大于或等于所述第一元组数的步骤之后,包括:
若否,则获取与所述开始表格相邻且位于所述开始表格排序之后的第二元组数;
判断所述第一数据是否大于或等于所述第二元组数;
若是,则在所述第二元组数之前添加第二新表格;
将所述第一数据填充至所述第二新表格,并按照所述第一新表格、第二新表格的添加过程,以及所述第一新表格、第二新表格中的数据填充过程,完成所述第一链表中所有数据的录入。

4.根据权利要求3所述的筛选信息的方法,其特征在于,判断所述第一数据是否大于或等于所述第二元组数的步骤之后,包括:
若否,依次获取降序排列中排布于所述第二元组数之后的第三元素组,直至降序排序的末尾数;
判断所述第一数据是否大于或等于所述末尾数;
若否,则在降序排序中的所述末尾数之后,添加第三新表格;
将所述第三元组数填充至所述第三新表格,并根据所述第一新表格、第二新表格和第三新表格的添加过程,以及所述第一新表格、第二新表格和第三新表格中数据填充过程,完成所述第一链表中所有数据的录入。

5.根据权利要求2-4中任一项所述的筛选信息的方法,其特征在于,所述完成所述第一链表中所有数据的录入的步骤之后,包括:
判断添加完所有数据的第一链表的链表长度是否大于第一预设量;
若是,则将排布于所述第一链表的指定数量的末尾表格剔除,同时删除填充在所述指定数量的末尾表格的元组数,使所述第一链表的链表长度保持在小于或等于所述第一预设量。

6.根据权利要求1所述的筛选信息的方法,其特征在于,从源数据中筛选满足大小要求的第一数据,按照预设排序依次存入预设链表中形成第一链表的步骤之前,包括:
判断所述第一链表中的元组数的数量是否大于第二预设量;
若是,则终止从所述源数据中筛选数据,终止向所述第一链表中填充数据。

7.根据权利要求1所述的筛选信息的方法,其特征在于,所述从多个所述第一链表中选择数据属性相同的两个所述第一链表并进行头部数据大小比较,将较大的头部数据存入第二链表,并将所述较大的头部数据从原第一链表中删除,使排序在所述较大的头部数据后面的数据成为新的头部数据,再进行头部数据比较,直到将两个数据属性相同的所述第一链表中满足要求的数据全部提取到第二链表,并根据两个所述第一链表的数据比较和提取过程,将所有数据属性相同的数据全部提取至第二链表的步骤,包括:
比较第一指定链表的头部元组数与第二指定链表的头部元组数,其中,所述第一指定链表和所述第二指定链表,属于所有第一链表中具有相同数据属性以及排序规律的两个链表,所述排布规律包括降序排列;
若所述第一指定链表的头部元组数大于或等于第二指定链表的头部元组数,则将所述第一指定链表的头部元组数提取至所述第二链表,并剔除所述第一指定链表的头部元组数,将与所述第一指定链表的头部元组数相邻,且位于降序排序中所述第一指定链表的头部元组数之后的元组数,变更为新头部元组数;
将所述第一指定链表的新头部元组数与所述第二指定链表的头部元组数比较大小;
若所述第一指定链表的新头部元组数小于所述第二指定链表的头部元组数,则将所述第二指定链表的头部元组数提取至所述第二链表,并排列于所述第一指定链表的头部元组数之后形成降序排布,且剔除所述第二指定链表的头部元组数,将与所述第二指定链表的头部元组数相邻,且位于降序排序中所述第二指定链表的头部元组数之后的元组数,变更为新头部元组数;
按照所述第一指定链表的头部元组数与第二指定链表的头部元组数的比较过程,以及所述第一指定链表的新头部元组数与所述第二指定链表的头部元组数比较过程,继续比较所述第一指定链表与所述第二指定链表中的剩余元组数,至所述第二链表中的数据数量达到预设条件,完成所述第二链表中所有数据的录入。

8.一种筛选信息的装置,其特征在于,包括:
筛选模块,用于从源数据中筛选满足大小要求的第一数据,按照预设排序依次存入预设链表中形成第一链表,其中,所述第一数据为所述源数据中的任一数据;
比较模块,用于从多个所述第一链表中选择数据属性相同的两个所述第一链表并进行头部数据大小比较,将较大的头部数据存入第二链表,并将所述较大的头部数据从原第一链表中删除,使排序在所述较大的头部数据后面的数据成为新的头部数据,再进行头部数据比较,直到将两个数据属性相同的所述第一链表中满足要求的数据全部提取到第二链表,并根据两个所述第一链表的数据比较和提取过程,将所有数据属性相同的数据全部提取至第二链表;
获取模块,用于从所述第二链表中获取指定任务对应的TOP值,其中,所述指定任务属于任务列表中的任一任务,所述指定任务对应的TOP值关联对应的关联信息;
锁定模块,用于锁定并展示所述指定任务对应的TOP值,以及所述指定任务对应的TOP值对应的关联信息。

9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。

技术说明书
筛选信息的方法、装置和计算机设备
技术领域
本申请涉及到计算机领域,特别是涉及到筛选信息的方法、装置和计算机设备。

背景技术
Hadoop做数据仓库时,常用hive做离线数据处理,hive做离线数据处理时,需要用到分组排序获取第一条数据的情况。

传统的方式是使用“row_number”加上“distributeby”指定对应的分组字段,然后“sortby”指定需要排序的字段并定义为字段“rn”,最后将计算的数据作为子查询,然后再增加筛选条件“rn=1”,就能挑选出分组排序的第一条记录,但是这样需要将一个分组中的所有数据先汇总再全部排序,消耗的资源也很大。

而且数据架构中只保存筛选出的一个结果数据,不利于数据应用的拓展。

技术内容
本申请的主要目的为提供筛选信息的方法,旨在解决现有数据分组排序中耗费的资源大的技术问题。

本申请提出一种筛选信息的方法,包括:
从源数据中筛选满足大小要求的第一数据,按照预设排序依次存入预设链表中形成第一链表,其中,所述第一数据为所述源数据中的任一数据;
从多个所述第一链表中选择数据属性相同的两个所述第一链表并进行头部数据大小比较,将较大的头部数据存入第二链表,并将所述较大的头部数据从原第一链表中删除,使排序在所述较大的头部数据后面的数据成为新的头部数据,再进行头部数据比较,直到将两个数据属性相同的所述第一链表中满足要求的数据全部提取到第二链表,并根据两个所述第一链表的数据比较和提取过程,将所有数据属性相同的数据全部提取至第二链表;
从所述第二链表中获取指定任务对应的TOP值,其中,所述指定任务属于任务列表中的任一任务,所述指定任务对应的TOP值关联对应的关联信息;
锁定并展示所述指定任务对应的TOP值,以及所述指定任务对应的TOP值对应的关联信息。

优选地,所述第一链表包括链表结构和按照预设排序填充在链表中的元组数,所述预设排序为降序排列,所述从源数据中筛选满足大小要求的第一数据,按照预设排序依次存入预设链表中形成第一链表的步骤,包括:
获取位于所述第一链表开始表格的第一元组数;
判断所述第一数据是否大于或等于所述第一元组数;
若是,则在所述开始表格的降序排序之前添加第一新表格,使所述第一新表格成为开始表格;
将所述第一数据填充至所述第一新表格,使所述第一数据成为新的第一元组数,并按照所述第一新表格的添加过程以及所述第一新表格中的数据填充过程,完成所述第一链表中所有数据的录入。

优选地,判断所述第一数据是否大于或等于所述第一元组数的步骤之后,包括:
若否,则获取与所述开始表格相邻且位于所述开始表格排序之后的第二元组数;
判断所述第一数据是否大于或等于所述第二元组数;
若是,则在所述第二元组数之前添加第二新表格;
将所述第一数据填充至所述第二新表格,并按照所述第一新表格、第二新表格的添加过程,以及所述第一新表格、第二新表格中的数据填充过程,完成所述第一链表中所有数据的录入。

优选地,判断所述第一数据是否大于或等于所述第二元组数的步骤之后,包括:
若否,依次获取降序排列中排布于所述第二元组数之后的第三元素组,直至降序排序的末尾数;
判断所述第一数据是否大于或等于所述末尾数;
若否,则在降序排序中的所述末尾数之后,添加第三新表格;
将所述第三元组数填充至所述第三新表格,并根据所述第一新表格、第二新表格和第三新表格的添加过程,以及所述第一新表格、第二新表格和第三新表格中数据填充过程,完成所述第一链表中所有数据的录入。

优选地,所述完成所述第一链表中所有数据的录入的步骤之后,包括:
判断添加完所有数据的第一链表的链表长度是否大于第一预设量;
若是,则将排布于所述第一链表的指定数量的末尾表格剔除,同时删除填充在所述指定数量的末尾表格的元组数,使所述第一链表的链表长度保持在小于或等于所述第一预设量。

优选地,从源数据中筛选满足大小要求的第一数据,按照预设排序依次存入预设链表中形成第一链表的步骤之前,包括:
判断所述第一链表中的元组数的数量是否大于第二预设量;
若是,则终止从所述源数据中筛选数据,终止向所述第一链表中填充数据。

优选地,所述从多个所述第一链表中选择数据属性相同的两个所述第一链表并进行头部数据大小比较,将较大的头部数据存入第二链表,并将所述较大的头部数据从原第一链表中删除,使排序在所述较大的头部数据后面的数据成为新的头部数据,再进行头部数据比较,直到将两个数据属性相同的所述第一链表中满足要求的数据全部提取到第二链表,并根据两个所述第一链表的数据比较和提取过程,将所有数据属性相同的数据全部提取至第二链表的步骤,包括:
比较第一指定链表的头部元组数与第二指定链表的头部元组数,其中,所述第一指定链表和所述第二指定链表,属于所有第一链表中具有相同数据属性以及排序规律的两个链表,所述排布规律包括降序排列;
若所述第一指定链表的头部元组数大于或等于第二指定链表的头部元组数,则将所述第一指定链表的头部元组数提取至所述第二链表,并剔除所述第一指定链表的头部元组数,将与所述第一指定链表的头部元组数相邻,且位于降序排序中所述第一指定链表的头部元组数之后的元组数,变更为新头部元组数;
将所述第一指定链表的新头部元组数与所述第二指定链表的头部元组数比较大小;
若所述第一指定链表的新头部元组数小于所述第二指定链表的头部元组数,则将所述第二指定链表的头部元组数提取至所述第二链表,并排列于所述第一指定链表的头部元组数之后形成降序排布,且剔除所述第二指定链表的头部元组数,将与所述第二指定链表的头部元组数相邻,且位于降序排序中所述第二指定链表的头部元组数之后的元组数,变更为新头部元组数;
按照所述第一指定链表的头部元组数与第二指定链表的头部元组数的比较过程,以及所述第一指定链表的新头部元组数与所述第二指定链表的头部元组数比较过程,继续比较所述第一指定链表与所述第二指定链表中的剩余元组数,至所述第二链表中的数据数量达到预设条件,完成所述第二链表中所有数据的录入。

本申请还提供了一种筛选信息的装置,包括:
筛选模块,用于从源数据中筛选满足大小要求的第一数据,按照预设排序依次存入预设链表中形成第一链表,其中,所述第一数据为所述源数据中的任一数据;
比较模块,用于从多个所述第一链表中选择数据属性相同的两个所述第一链表并进行头部数据大小比较,将较大的头部数据存入第二链表,并将所述较大的头部数据从原第一链表中删除,使排序在所述较大的头部数据后面的数据成为新的头部数据,再进行头部数据比较,直到将两个数据属性相同的所述第一链表中满足要求的数据全部提取到第二链表,并根据两个所述第一链表的数据比较和提取过程,将所有数据属性相同的数据全部提取至第二链表;
获取模块,用于从所述第二链表中获取指定任务对应的TOP值,其中,所述指定任务属于任务列表中的任一任务,所述指定任务对应的TOP值关联对应的关联信息;
锁定模块,用于锁定并展示所述指定任务对应的TOP值,以及所述指定任务对应的TOP值对应的关联信息。

本申请还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。

本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法的步骤。

本申请通过改变数据存储结构,使中间存储数据可存储多个元组数,方便需要不同数据类型的top值的数据应用,且基于改进的数据存储结构优化了排序获取top值的筛选方法,简化了比较取值过程,提高数据处理效率。

附图说明
图1本申请一实施例的筛选信息的方法流程示意图;
图2本申请一实施例的筛选信息的装置结构示意图;
图3本申请一实施例的计算机设备内部结构示意图。

具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。

应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

参照图1,本申请一实施例的筛选信息的方法,包括:
S1:从源数据中筛选满足大小要求的第一数据,按照预设排序依次存入预设链表中形成第一链表,其中,所述第一数据为所述源数据中的任一数据;
S2:从多个所述第一链表中选择数据属性相同的两个所述第一链表并进行头部数据大小比较,将较大的头部数据存入第二链表,并将所述较大的头部数据从原第一链表中删除,使排序在所述较大的头部数据后面的数据成为新的头部数据,再进行头部数据比较,直到将两个数据属性相同的所述第一链表中满足要求的数据全部提取到第二链表,并根据两个所述第一链表的数据比较和提取过程,将所有数据属性相同的数据全部提取至第二链表;
S3:从所述第二链表中获取指定任务对应的TOP值,其中,所述指定任务属于任务列表中的任一任务,所述指定任务对应的TOP值关联对应的关联信息;
S4:锁定并展示所述指定任务对应的TOP值,以及所述指定任务对应的TOP值对应的关联信息。

本申请实施例中,上述源数据包括系统中通过汇集浏览日志等使用系统过程中形成的历史数据,或者通过统计上述使用过程中的历史数据形成的结论数据。

比如源数据包括:浏览总次数、浏览频次、购买数据等使用系统过程中的历史数据,还包括分析浏览总次数、浏览频次、购买数据等形成的喜爱度、需求度等结论数据。

本申请通过更改上述第一链表的数据结构,并通过更改筛选函数,使第一链表中可同时存在多个按顺序排布的元组数,上述顺序比如包括降序排列或升序排列。

摒弃了ROW_NUMBER()函数排序,也避免了执行ROW_NUMBER()函数需要对所有数据进行全排列后再取满足任务要求的Top N。

本实施例通过自定义函数,在从源数据中筛选数据的过程中,就开始了比较筛选和排序,无需ROW_NUMBER()函数对所有数据进行全排列后再筛选,降低了计算量以及排序复杂度。

上述的自定义函数为运用Hive的udaf特性设计的聚合函数,包括maxList、minList。

上述的第二链表的个数与上述聚合函数中设计的map数量相同,即数据属性的类别数量。

本申请的筛选信息的方法,可根据需要随时改变需要的TOP值的数量,满足不同数据分析的信息需求。

通过改变数据存储结构,使中间存储数据可存储多个元组数,方便需要不同数据类型的top值的数据应用,且基于改进的数据存储结构优化了排序获取top 值的筛选方法,简化了比较取值过程,提高数据处理效率。

进一步地,所述第一链表包括链表结构和按照预设排序填充在链表中的元组数,所述预设排序为降序排列,所述从源数据中筛选满足大小要求的第一数据,按照预设排序依次存入预设链表中形成第一链表的步骤S1,包括:
S11:获取位于所述第一链表开始表格的第一元组数;
S12:判断所述第一数据是否大于或等于所述第一元组数;
S13:若是,则在所述开始表格的降序排序之前添加第一新表格,使所述第一新表格成为开始表格;
S14:将所述第一数据填充至所述第一新表格,使所述第一数据成为新的第一元组数,并按照所述第一新表格的添加过程以及所述第一新表格中的数据填充过程,完成所述第一链表中所有数据的录入。

本实施例中,元组数的第一个元素存的是需要对比的字段,其他的元素存在其他字段。

上述预设链表为自定义的链表,用于存储元素组,预设链表中包含空白链表结构和链表当前填充的元组数。

从源数据中每获取一条第一数据,就从预设链表的开始表格开始比对,如果大于或者等于第一元组数,就把第一数据插入到原第一元组数的前面,使原第一元组数将为第二元组数,上述第一元组数为排在首位,填充在开始表格的数据,第二元组数为填充在开始表格之后的表格内的数据。

本实施例的方位表述“排序之前、排序之后”均以降序排序为例,即位于排序之前的数据大于位于排序之后的数据。

升序排序中,筛选信息的过程与降序过程相反,原理相近,不赘述。

举例:保单批改信息的最新一条记录,字段:保单号、更新时间、保单状态;Select保单号,rs[0]as更新时间,rs[1]as保单状态;From{Select保单号maxList[array(更新时间,保单状态)]rs from保单批改表group by保单号}tmp。

运用udaf的特性,可以在map阶段就作对比,即一个分组可能有100条记录,但是如果要取max,其实不需要拿到所有的记录,只需要拿到两个数据就能先对比出最大的那条数据,对比之后剩余数据中的最大数据再跟其他的数据继续对比即可,不用把所有的数据汇总到一起再整体进行排序,即无需调用ROW_NUMBER()函数对所有数据进行全排列后再计算排序。

进一步地,判断所述第一数据是否大于或等于所述第一元组数的步骤S12之后,包括:
S15:若否,则获取与所述开始表格相邻且位于所述开始表格排序之后的第二元组数;
S16:判断所述第一数据是否大于或等于所述第二元组数;
S13:若是,则在所述第二元组数之前添加第二新表格;
S14:将所述第一数据填充至所述第二新表格,并按照所述第一新表格、第二新表格的添加过程,以及所述第一新表格、第二新表格中的数据填充过程,完成所述第一链表中所有数据的录入。

本实施例中,可根据第一数据的大小选择合适的插入位置,以便完成所述第一链表中所有的数据录入后,第一链表中的所有数据均从开始表格起呈降序排列。

上述的“第一”、“第二”等用语,除了和元组数一起使用带有排序的限制,比如第一元组数和第二元组数表示排序第一和排序第二,其他处的“第一”、“第二”等类似用语仅用于区别,不用于限定。

相关文档
最新文档