一种对层级数据进行去重的方法、装置及介质与流程

文档序号:19680428发布日期:2020-01-14 17:16阅读:208来源:国知局
一种对层级数据进行去重的方法、装置及介质与流程
本发明涉及计算机领域,特别是涉及一种对层级数据进行去重的方法、装置及介质。
背景技术
:随着信息化的发展,出现了越来越多的具有多个层级且各层级间具有关联关系的层级数据。例如表1即为一种层级数据,其每一列为一层,层级之间的关系为后一列数据存在对前一列数据的依赖,整体的表格呈现树形关系。后台一级类目后台二级类目后台三级类目后台四级类目农副产品粮食及其副产品稻大米农副产品粮食及其副产品稻糙米农副产品粮食及其副产品稻米粉农副产品粮食及其副产品稻稻副产品农副产品粮食及其副产品小麦小麦农副产品粮食及其副产品小麦小麦粉农副产品粮食及其副产品小麦小麦副产品农副产品粮食及其副产品玉米玉米农副产品粮食及其副产品玉米玉米糁/粉农副产品粮食及其副产品玉米其他玉米及副产品农副产品粮食及其副产品大豆黄豆农副产品粮食及其副产品大豆青豆农副产品粮食及其副产品大豆黑豆农副产品粮食及其副产品大豆其他大豆农副产品粮食及其副产品薯类马铃薯农副产品粮食及其副产品薯类甘薯农副产品粮食及其副产品薯类木薯农副产品粮食及其副产品薯类其他薯类(粮食)表1为了便于对层级数据进行处理,需要对层级数据进行去重,现有的去重方法为:通过双重遍历的方法(双重for循环)先遍历‘层’,然后遍历‘层中的每个数据’,然后在遍历过程中用到了map<level,object>进行数据去重处理。以表2的层级数据场景为例,利用现有的去重方法,去重结果为“植物”和“西红柿”都被去重过滤掉,但是西红柿不应该进行过滤处理,原本是允许重复的,它们与上层数据具有不同的层级关系,是不同的数据。后台一级类目后台二级类目后台三级类目植物水果西红柿植物蔬菜西红柿表2应用现有技术对层级数据去重会丢失部分必要数据,使去重后的层级数据之间的层级关系不完整。技术实现要素:本发明的目的是提供一种对层级数据进行去重的方法、装置及介质,通过为层级数据的各节点数据增加标识码确保节点数据的唯一性,避免通过双重遍历和map去重时丢失必要数据,克服现有技术对层级数据去重会丢失部分必要数据,使去重后的层级数据之间的层级关系不完整的缺点。为实现上述目的,本发明提供一种对层级数据进行去重的方法,包括:接收规范化的层级数据,所述层级数据的最小粒度为节点数据;为各所述节点数据增加标识码,所述标识码是当前节点数据的名称与父节点数据的名称直至根节点数据的名称连接成的一个链式串;按照层级关系依次遍历所述层级数据中每个层级所对应的节点数据,判断当前遍历的节点数据的标识码是否与map记录的节点数据的标识码相同;如果是,则所述map不记录所述节点数据;如果否,则所述map记录所述节点数据。优选地,还包括:根据当前节点的标识码中的父节点数据的名称直至根节点数据的名称的链式串,寻址当前节点的上一层级的数据。优选地,还包括:为各所述节点数据增加排序字段,以便于根据所述排序字段的值调整各所述节点数据之间的排列顺序。优选地,还包括:将所述map中记录的节点数据导入数据库。优选地,还包括:依据预设规则校验导入数据库的层级数据。优选地,还包括:返回校验异常的信息。为实现上述目的,本发明还提供一种对层级数据进行去重的装置,包括:接收模块,用于接收规范化的层级数据,所述层级数据的最小粒度为节点数据;添加模块,用于为各所述节点数据增加标识码,所述标识码是当前节点数据的名称与父节点数据的名称直至根节点数据的名称连接成的一个链式串;遍历模块,用于按照层级关系依次遍历所述层级数据中每个层级所对应的节点数据,判断当前遍历的节点数据的标识码是否与map记录的节点数据的标识码相同;如果是,则所述map不记录所述节点数据;如果否,则所述map记录所述节点数据。为实现上述目的,本发明还提供一种对层级数据进行去重的装置,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述任一项所述的对层级数据进行去重的方法的步骤。为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的对层级数据进行去重的方法的步骤。本发明所提供的对层级数据进行去重的方法,包括:接收规范化的层级数据,其中,层级数据的最小粒度为节点数据,即层级数据包括有至少一个节点数据。为每个节点数据添加标识码,以当前节点数据为例,可以由当前节点数据的名称与父节点数据的名称直至根节点数据的名称连接成的一个链式串作为当前节点数据的标识码。按照层级关系依次遍历层级数据中每个层级所对应的节点数据,并判断当前遍历的节点数据的标识码是否与map记录的节点数据的标识码相同,如果当前遍历的节点数据的标识码与map记录的节点数据的标识码相同,则说明当前遍历的节点数据与map记录的节点数据相同,则map不记录当前遍历的节点数据,如果当前遍历的节点数据的标识码与map记录的节点数据的标识码不相同,则说明当前遍历的节点数据与map记录的节点数据不相同,则map记录当前遍历的节点数据。本发明通过为层级数据的各节点数据增加标识码确保节点数据的唯一性,避免通过双重遍历和map去重时丢失必要数据,克服现有技术对层级数据去重会丢失部分必要数据,使去重后的层级数据之间的层级关系不完整的缺点。本发明提供的对层级数据进行去重的装置及介质也具有对层级数据进行去重的方法同样的有益效果,在此不再赘述。附图说明为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种对层级数据进行去重的方法的流程图;图2为本发明实施例提供的一种层级数据的节点数据的排列顺序图;图3为本发明实施例提供的一种层级数据保存在数据库中的示意图图4为本发明实施例提供的一种对层级数据进行去重的装置的结构图;图5为本发明实施例提供的另一种对层级数据进行去重的装置的结构图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。本发明的核心是提供一种对层级数据进行去重的方法、装置及介质,通过为层级数据的各节点数据增加标识码确保节点数据的唯一性以区分不同的节点数据,避免去重时丢失部分必要数据,通过双重遍历和map完成数据去重,克服现有技术对层级数据去重会丢失部分必要数据,使去重后的层级数据之间的层级关系不完整的缺点。为了使本
技术领域
的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。图1为本发明实施例提供的一种对层级数据进行去重的方法的流程图,如图1所示,对层级数据进行去重的方法包括:s10:接收规范化的层级数据,层级数据的最小粒度为节点数据。需要说明的是层级数据,是指具有多个层级并且各层级具有关联关系的数据,如表1所示。在具体实施中,对于步骤s10来说,接收规范化的层级数据以便于后续对规范化的层级数据进行统一处理。由于层级数据的表现形式不同,可能是excel格式的数据、也可能是text等其他格式的数据,为了对格式不同的层级数据进行去重处理,需要将其转换成规范化的层级数据。需要说明的是规范化的层级数据是指用嵌套的列表对象list<list<sting>>保存的层级数据,其最小粒度是节点数据,以表1的层级数据为例,节点数据即指每个单元格的数据。作为优选的实施方式,将原始层级数据转换成规范化的层级数据的过程中包括用剪枝法来去除原始层级数据的空行。s20:为各节点数据增加标识码,标识码是当前节点数据的名称与父节点数据的名称直至根节点数据的名称连接成的一个链式串。对于步骤s20来说,为各节点数据增加标识码,标识码是当前节点数据的名称与父节点数据的名称直至根节点数据的名称连接成的一个链式串。在具体实施中,每个节点数据用(uniquekey,object)来表示,其中,uniquekey表示一个唯一的标识码,object表示当前节点的数据。以表1中的第三行第五列的糙米为例,它的uniquekey为“糙米-稻-粮食及其副产品-农产副品”,它的object为糙米,糙米的节点数据表示为(糙米-稻-粮食及其副产品-农产副品,糙米)。s30:按照层级关系依次遍历层级数据中每个层级所对应的节点数据,判断当前遍历的节点数据的标识码是否与map记录的节点数据的标识码相同,如果是,则进入步骤s40,如果否,则入步骤s50。对于步骤s30来说,按照层级关系依次遍历层级数据中每个层级所对应的节点数据,判断当前遍历的节点数据的标识码是否与map记录的节点数据的标识码相同。需要说明的是map,map的数据结构为map<uniquekey,object>,在本发明中充当“备忘录”。还要说明的是按照层级关系依次遍历层级数据中每个层级所对应的节点数据的遍历方法也叫做双重遍历,先按照层级关系依次遍历层级数据,然后遍历各层级中的每个节点数据。如果当前遍历的节点数据的标识码与map记录的节点数据的标识码相同,则说明当前遍历的节点数据与map记录的节点数据相同,进入步骤s40,如果当前遍历的节点数据的标识码与map记录的节点数据的标识码不相同,则说明当前遍历的节点数据与map记录的节点数据不相同,进入步骤s50。s40:map不记录节点数据。s50:map记录节点数据。本发明所提供的对层级数据进行去重的方法,包括:接收规范化的层级数据,其中,层级数据的最小粒度为节点数据,即层级数据包括有至少一个节点数据。为每个节点数据添加标识码,以当前节点数据为例,可以由当前节点数据的名称与父节点数据的名称直至根节点数据的名称连接成的一个链式串作为当前节点数据的标识码。按照层级关系依次遍历层级数据中每个层级所对应的节点数据,并判断当前遍历的节点数据的标识码是否与map记录的节点数据的标识码相同,如果当前遍历的节点数据的标识码与map记录的节点数据的标识码相同,则说明当前遍历的节点数据与map记录的节点数据相同,则map不记录当前遍历的节点数据,如果当前遍历的节点数据的标识码与map记录的节点数据的标识码不相同,则说明当前遍历的节点数据与map记录的节点数据不相同,则map记录当前遍历的节点数据。本发明通过为层级数据的各节点数据增加标识码确保节点数据的唯一性,避免通过双重遍历和map去重时丢失必要数据,克服现有技术对层级数据去重会丢失部分必要数据,使去重后的层级数据之间的层级关系不完整的缺点。在上一实施例的基础上,作为优选的实施方式,还包括:根据当前节点的标识码中的父节点数据的名称直至根节点数据的名称的链式串,寻址当前节点的上一层级的数据。通过map中的标识码能找到对应上一层级的数据,方法是删除当前节点数据的标识码中的当前节点的名称得到上一级数据的标识码,从而找出上一层级的数据,保证了层级关系的正确性。在上一实施例的基础上,作为优选的实施方式,还包括:为各所述节点数据增加排序字段,以便于根据所述排序字段的值调整各所述节点数据之间的排列顺序。需要说明的是排序字段,是指存储节点数据的排列顺序的字段。调整排序字段的值时,节点数据的排列顺序也会改变,如图2所示,调整办公用品的排序字段,相应的办公用品的排列顺序也会相应改变。本实施例为各节点数据增加排序字段以便于用户根据需求调整各节点数据之间的排列顺序。在上一实施例的基础上,作为优选的实施方式,还包括:将map中记录的节点数据导入数据库以实现对层级数据的记录。本实施保存在数据库中的层级数据如图3所述,其中图3中的id是指节点数据的指针,pid是指对应的id的父亲节点的id,name是指节点数据的名称,level是指节点数据所在的层级,status是导入的指节点数据的有效性,has_children是指此节点数据是否有后代,tags是指层级数据的业务类别,leaf_flag是指标识码。其中,pid为0对应的节点数据是根节点数据,status的取值为1或-1,1为有效,-1为无效,has_children的取值范围为0或1,0代表无后代,1代表有后代。上述实施例将嵌套的列表对象中每一个节点数据被处理为vo对象,其中的层级之间的关联关系使用字段pid表示。在上一实施例的基础上,作为优选的实施方式,还包括:依据预设规则校验导入数据库的层级数据。需要说明的是预设规则即为根据用户的需求预先设置校验规则,本发明不对预设规则做限定。本实施例的预设规则为判断导入数据库的层级数据中是否包含特殊字符“-”,判断导入数据库的层级数据的类目条数是否超过1500条,以及判断节点数据的名称是否重复,如果导入数据库的层级数据具有下列任一情况都属于不符合预设规则:包含特殊字符“-”或类目条数超过1500条或其节点数据的名称重复。本实施例通过预设规则校验导入数据库的层级数据,以确认层级数据可以按照用户的需求导入数据库。在上一实施例的基础上,作为优选的实施方式,还包括:返回校验异常的信息,以提示工作人员及时对校验异常的信息进行处理。图4为本发明实施例提供的一种对层级数据进行去重的装置的结构图,如图4所述,本发明还提供一种的结构图,如图4所述,本装置包括:接收模块10,用于接收规范化的层级数据,层级数据的最小粒度为节点数据;添加模块20,用于为各节点数据增加标识码,标识码是当前节点数据的名称与父节点数据的名称直至根节点数据的名称连接成的一个链式串;遍历模块30,用于按照层级关系依次遍历层级数据中每个层级所对应的节点数据,判断当前遍历的节点数据的标识码是否与map记录的节点数据的标识码相同;如果是,则map不记录节点数据;如果否,则map记录节点数据。本发明所提供的对层级数据进行去重的装置,包括:接收规范化的层级数据,其中,层级数据的最小粒度为节点数据,即层级数据包括有至少一个节点数据。为每个节点数据添加标识码,以当前节点数据为例,可以由当前节点数据的名称与父节点数据的名称直至根节点数据的名称连接成的一个链式串作为当前节点数据的标识码。按照层级关系依次遍历层级数据中每个层级所对应的节点数据,并判断当前遍历的节点数据的标识码是否与map记录的节点数据的标识码相同,如果当前遍历的节点数据的标识码与map记录的节点数据的标识码相同,则说明当前遍历的节点数据与map记录的节点数据相同,则map不记录当前遍历的节点数据,如果当前遍历的节点数据的标识码与map记录的节点数据的标识码不相同,则说明当前遍历的节点数据与map记录的节点数据不相同,则map记录当前遍历的节点数据。本发明通过为层级数据的各节点数据增加标识码确保节点数据的唯一性,避免通过双重遍历和map去重时丢失必要数据,克服现有技术对层级数据去重会丢失部分必要数据,使去重后的层级数据之间的层级关系不完整的缺点。本发明还提供一种对层级数据进行去重的装置。图5为本发明实施例提供的另一种对层级数据进行去重的装置的结构图,如图5所示,该装置包括:存储器50,用于存储计算机程序;处理器51,用于执行计算机程序时实现如上述任一实施例的对层级数据进行去重的方法的步骤。其中,处理器51可以包括一个或多个处理核心,比如5核心处理器、8核心处理器等。处理器51可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器51也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器51可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器51还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。存储器50可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器50还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器50至少用于存储以下计算机程序501,其中,该计算机程序被处理器51加载并执行之后,能够实现前述任一实施例公开的对层级数据进行去重的方法中的相关步骤。另外,存储器50所存储的资源还可以包括操作系统502和数据503等,存储方式可以是短暂存储或者永久存储。其中,操作系统502可以为windows。数据503可以包括但不限于上述方法所涉及到的数据。在一些实施例中,对层级数据进行去重的装置还可包括有显示屏52、输入输出接口53、通信接口54、电源55以及通信总线56。本领域技术人员可以理解,图5中示出的结构并不构成对层级数据进行去重的装置的限定,可以包括比图示更多或更少的组件。本申请实施例提供的对层级数据进行去重的装置,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如上所述的获取对层级数据进行去重的方法,效果同上。本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述任一实施例的对层级数据进行去重的方法的步骤。可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。本实施例中提供的计算机可读存储介质所包含的计算机程序能够在被处理器执行时实现如上所述的对层级数据进行去重的步骤,效果同上。以上对本发明所提供的对层级数据进行去重的方法、装置及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1