掌桥专利:专业的专利平台
掌桥专利
首页

数据匹配方法、装置、计算机设备和存储介质

文献发布时间:2023-06-19 10:27:30


数据匹配方法、装置、计算机设备和存储介质

技术领域

本申请涉及人工智能技术领域,具体涉及一种数据匹配方法、装置、计算机设备和存储介质。

背景技术

在Excel中对不同数据进行数据匹配是当下比较常见的业务场景。当具有将待检测数据与目标数据集合中的数据进行数据匹配的需求时,现有的数据匹配方式通常是由业务人员使用Excel自带的vlookup等函数进行数据匹配,这需要业务人员有一定的Excel函数知识,并自行进行函数编写,对业务人员有一定的技能要求。另外,这种基于函数的数据匹配方式的逻辑通常是将待检测数据与目标数据集合中的每一个数据进行逐一循环检查,以判别在目标数据集合中是否存在与该待检测数据匹配的数据。然而当需要进行数据匹配的目标数据集合的数量级较大时,例如超过十万数量级时,在Excel中采用基于函数的数据匹配方式需要花费较长的时间来进行数据匹配,处理效率低下。

发明内容

本申请的主要目的为提供一种数据匹配方法、装置、计算机设备和存储介质,旨在解决现有的在Excel中采用基于函数的数据匹配方式需要花费较长的时间来进行数据匹配,处理效率低下的技术问题。

本申请提出一种数据匹配方法,所述方法包括步骤:

获取导入至Excel文档中的待检测数据以及目标数据集合;

判断是否接收到用户触发的数据匹配指令;

若接收到用户触发的数据匹配指令,则读取预设的VBA代码,并基于所述数据匹配指令,生成与所述待检测数据及所述目标数据集合对应的VBA任务;

基于所述VBA任务的执行逻辑,将所述待检测数据与所述目标数据集合拷贝至内存中;

基于预设的哈希算法,分别计算处于内存中的所述目标数据集合包含的每一个目标数据的第一哈希值,以及计算处于内存中的所述待检测数据的指定哈希值;

基于所述第一哈希值与所述目标数据,生成与所述目标数据集合对应的哈希链表;

使用所述哈希链表对所述指定哈希值进行数据匹配处理,生成与所述待检测数据对应的数据匹配结果。

可选地,所述基于所述第一哈希值与所述目标数据,生成与所述目标数据集合对应的哈希链表的步骤,包括:

获取所述目标数据集合中包含的每一个目标数据的第一哈希值;

对所有所述第一哈希值进行数值大小比较处理,筛选出在所有所述第一哈希值中数值最大的第二哈希值;

将所述第二哈希值对应的数值作为长度值;

根据各所述第一哈希值,确定出与各所述目标数据对应的放置位置信息;

基于所述放置位置信息、所述目标数据、以及所述长度值构建对应的哈希链表,其中,所述哈希链表内包含与所述长度值的数量相同的多个数组,每个所述数组包括链表,链表内存储有与数组匹配的放置位置信息所对应的目标数据。

可选地,所述使用所述哈希链表对所述指定哈希值进行数据匹配处理,生成与所述待检测数据对应的数据匹配结果的步骤,包括:

基于预设的哈希值与放置位置的对应关系,确定出所述指定哈希值在所述哈希链表中的指定放置位置信息;

根据所述指定放置位置信息,从所述哈希链表中查询出与所述指定放置位置信息对应的指定数组;

判断所述指定数组内是否存储有数据;

若所述指定数组内存储有数据,则判断所述指定数组中存储的所有数据中是否存在与所述待检测数据相匹配的指定数据;

若所述指定数组中存储的所有数据中存在所述指定数据,则生成所述目标数据集合中存在与所述待检测数据相匹配的数据的第一匹配结果;

若所述指定数组中存储的所有数据中不存在所述指定数据,则生成所述目标数据集合中不存在与所述待检测数据匹配的数据的第二匹配结果。

可选地,所述判断所述指定数组中存储的所有数据中是否存在与所述待检测数据相匹配的指定数据的步骤,包括:

判断所述指定数据中包含的数据的个数是否为1;

若所述指定数据中包含的数据的个数不为1,则基于并行比较指令比较所述待检测数据是否与所述指定数组中的任意一个数据相同;

若所述待检测数据与所述指定数组中的任意一个数据相同,则判定所述指定数组中包含的所有数据中存在与所述待检测数据相匹配的指定数据;

若所述待检测数据与所述指定数组中的任意一个数据均不相同,则判定所述指定数组中包含的所有数据中不存在与所述待检测数据相匹配的指定数据。

可选地,所述基于所述VBA任务的执行逻辑,将所述待检测数据与所述目标数据集合拷贝至内存中的步骤之前,包括:

获取所述内存当前的内存占用值,以及获取预设的内存使用占比阈值;

基于所述内存占用值,计算当前的内存可用值;

判断所述内存可用值是否大于所述内存使用占比阈值;

若所述内存可用值大于所述内存使用占比阈值,则生成将所述待检测数据与所述目标数据集合拷贝至内存中的拷贝指令。

可选地,所述获取当前的内存占用值,以及获取预设的内存使用占比阈值的步骤之前,包括:

调用预设的任务数据库,其中,所述任务数据库中存储有历史数据匹配任务,各所述历史数据匹配任务中包含的数据集合的数量值,以及各所述历史数据匹配任务在正常运作下的内存使用占比值;

获取所述目标数据集合包含的数据量的第一数量值;

使用所述任务数据库进行查询处理,查询出与所述第一数量值具有特定匹配关系的第二数量值,其中,所述特定匹配关系是指所述第二数量值与所述第一数量值之间的差值的绝对值处于预设数值范围内;

从所述任务数据库内筛选出与所述第二数量值对应的指定历史数据匹配任务,以及查找出与各所述指定历史任务分别对应的指定内存使用占比值;

计算所有所述指定内存使用占比值的平均值;

将所述平均值作为所述内存使用占比阈值。

可选地,所述使用所述哈希链表对所述指定哈希值进行数据匹配处理,生成与所述待检测数据对应的数据匹配结果的步骤之后,包括:

获取当前时间,并判断所述当前时间是否处于预设时间范围内;

若所述当前时间处于预设时间范围内,则获取预设的邮件登录信息,以及获取与指定用户对应的指定邮件地址;

根据所述邮件登录信息登录至对应的邮件服务器;

通过所述邮件服务器将所述数据匹配结果发送至所述指定邮件地址。

本申请还提供一种数据匹配装置,包括:

第一获取模块,用于获取导入至Excel文档中的待检测数据以及目标数据集合;

第一判断模块,用于判断是否接收到用户触发的数据匹配指令;

第一生成模块,用于若接收到用户触发的数据匹配指令,则读取预设的VBA代码,并基于所述数据匹配指令,生成与所述待检测数据及所述目标数据集合对应的VBA任务;

拷贝模块,用于基于所述VBA任务的执行逻辑,将所述待检测数据与所述目标数据集合拷贝至内存中;

第一计算模块,用于基于预设的哈希算法,分别计算处于内存中的所述目标数据集合包含的每一个目标数据的第一哈希值,以及计算处于内存中的所述待检测数据的指定哈希值;

第二生成模块,用于基于所述第一哈希值与所述目标数据,生成与所述目标数据集合对应的哈希链表;

匹配模块,用于使用所述哈希链表对所述指定哈希值进行数据匹配处理,生成与所述待检测数据对应的数据匹配结果。

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

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

本申请中提供的数据匹配方法、装置、计算机设备和存储介质,具有以下有益效果:

本申请中提供的数据匹配方法、装置、计算机设备和存储介质,在用户将待检测数据以及目标数据集合导入至Excel文档并触发数据匹配指令之后,会智能地读取预设的VBA代码以生成相应的VBA任务。之后基于所述VBA任务的执行逻辑,将待检测数据与目标数据集合拷贝至内存中,进而在内存中利用哈希方法对待检测数据与目标数据集合进行数据匹配处理,以实现快速地生成与该待检测数据对应的数据匹配结果,有效地提高了数据匹配的处理效率。本申请通过使用基于VBA代码开发的VBA工具执行Excel中的数据匹配对比处理,不需要安装其他软件或数据库等成本较高的方式,直接在Excel中完成相关数据的拷贝后就可以基于哈希方法执行相应的数据匹配处理,有效的保证了数据的安全性与便携性。另外,基于VBA工具实现数据匹配的过程操作简单,对于绝大多数普通业务操作人员来说,运用非常便捷,不需要经过复杂的培训,只需要进行数据拷贝并且点击相应的触发按钮就能迅速完成他们以前要学习Excel函数等才能完成的数据匹配任务,有效地提高了用户使用体验,以及提高了数据匹配的处理效率。

附图说明

图1是本申请一实施例的数据匹配方法的流程示意图;

图2是本申请一实施例的数据匹配装置的结构示意图;

图3是本申请一实施例的计算机设备的结构示意图。

本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

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

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。

参照图1,本申请一实施例的数据匹配方法,包括:

S1:获取导入至Excel文档中的待检测数据以及目标数据集合;

S2:判断是否接收到用户触发的数据匹配指令;

S3:若接收到用户触发的数据匹配指令,则读取预设的VBA代码,并基于所述数据匹配指令,生成与所述待检测数据及所述目标数据集合对应的VBA任务;

S4:基于所述VBA任务的执行逻辑,将所述待检测数据与所述目标数据集合拷贝至内存中;

S5:基于预设的哈希算法,分别计算处于内存中的所述目标数据集合包含的每一个目标数据的第一哈希值,以及计算处于内存中的所述待检测数据的指定哈希值;

S6:基于所述第一哈希值与所述目标数据,生成与所述目标数据集合对应的哈希链表;

S7:使用所述哈希链表对所述指定哈希值进行数据匹配处理,生成与所述待检测数据对应的数据匹配结果。

如上述步骤S1至S7所述,本方法实施例的执行主体为一种数据匹配装置。在实际应用中,上述数据匹配装置可以通过虚拟装置,例如软件代码实现,也可以通过写入或集成有相关执行代码的实体装置实现,且可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。本实施例中的数据匹配装置,通过基于哈希方法对待检测数据与目标数据集合进行数据匹配处理,进而实现快速地生成与待检测数据对应的数据匹配结果。具体地,首先获取导入至Excel文档中的待检测数据以及目标数据集合。其中,上述待检测数据为需要与上述目标数据集合进行数据匹配处理的数据,上述目标数据集合可为包含有大数据量的数据集合,例如可为十万级数据量、百万级数据量等。然后判断是否接收到用户触发的数据匹配指令。其中,对于上述数据匹配指令的触发方式不作具体限定,例如可通过用户点击或按压预设的功能按钮来实现,或者可通过用户输入相关的语音数据或文字数据来实现,等等。如果接收到用户触发的数据匹配指令,则读取预设的VBA代码,并基于上述数据匹配指令,生成与上述待检测数据及上述目标数据集合对应的VBA任务。其中,VBA是Visual Basic For Application的简称,为Visual Basic的一种宏语言,是建立在Office中的一种应用程序开发工具,可以用于对Excel进行二次开发,以自定义和扩展Excel的功能。在用户将上述待检测数据以及上述目标数据集合导入至Excel文档并触发相应的数据匹配指令之后,数据匹配装置会读取预先设定的VBA代码,生成指定的VBA任务,即生成与上述待检测数据及上述目标数据集合对应的VBA任务,上述VBA代码可为编程人员根据数据匹配需求预先编写生成的代码数据。上述VBA任务是指使用上述目标数据集合对上述待检测数据进行数据匹配处理的任务,包括:自动执行上述VBA任务中的数据匹配程序,以完成对于上述目标数据集合及待检测数据之间的数据匹配处理。或者基于用户在上述Excel文档输入的数据匹配指令,执行与上述数据匹配指令对应的VBA任务,以完成对于上述目标数据集合及待检测数据之间的数据匹配处理。在生成了上述VBA任务后,再基于上述VBA任务的执行逻辑,将上述待检测数据与上述目标数据集合拷贝至内存中,以实现在内存中进行对于上述待检测数据与上述目标数据集合的数据匹配处理。其中,通过将上述待检测数据与上述目标数据集合读入内存中,使得后续在内存中进行相应的数据匹配处理,从而能够提升对于数据的处理速度,提高数据匹配的效率。之后基于预设的哈希算法,分别计算处于内存中的上述目标数据集合包含的每一个目标数据的第一哈希值,以及计算处于内存中的上述待检测数据的指定哈希值。其中,对于待检测数据与目标数据集合中的目标数据采用相同的哈希算法来求取出各自的哈希值,以确保后续数据匹配的准确性。可将上述待检测数据输入至预设的哈希算法,来计算得到对应的指定哈希值。上述哈希算法可以是任意的哈希函数,例如可以包括但不限于直接定址法、平方取中法、除留余数法、随机数法等对应的函数,本实施例对此不进行具体限定。优选采用除留余数法作为上述哈希算法,举例地,上述哈希算法包括:H(key)=key mod p,mod为取余运算,p为正整数,优选为质数。同理可参考上述指定哈希值的计算方式,来计算出处于内存中的上述目标数据集合包含的每一个目标数据的第一哈希值。在得到了上述第一哈希值与上述目标数据后,再基于上述第一哈希值与上述目标数据,生成与上述目标数据集合对应的哈希链表。其中,可先从所有上述第一哈希值中筛选出数值最大的第二哈希值用作长度值;再基于该第一哈希值确定出与各上述目标数据对应的放置位置信息;后续再依据上述放置位置信息、上述目标数据、以及上述长度值来构建出对应的哈希链表。具体的,上述哈希链表内包含有与上述长度值的数量相同的多个数组,每个上述数组包括链表,链表内存储有与数组匹配的放置位置信息所对应的目标数据。最后使用上述哈希链表对上述指定哈希值进行数据匹配处理,生成与上述待检测数据对应的数据匹配结果。其中,可先基于预设的哈希值与放置位置的对应关系,确定出上述指定哈希值在上述哈希链表中的指定放置位置信息;再根据上述指定放置位置信息,从上述哈希链表中查询出与上述指定放置位置信息对应的指定数组;如果在上述指定数组中存储的所有数据内存在与上述待检测数据相匹配的指定数据,则会生成上述目标数据集合中存在与上述待检测数据相匹配的数据的第一匹配结果,否则生成上述目标数据集合中不存在与上述待检测数据相匹配的数据的第二匹配结果。本实施例在用户将上述待检测数据以及上述目标数据集合导入至Excel文档并触发数据匹配指令之后,会智能地读取预设的VBA代码以生成相应的VBA任务。之后基于上述VBA任务的执行逻辑,将待检测数据与目标数据集合拷贝至内存中,进而在内存中利用哈希方法对待检测数据与目标数据集合进行数据匹配处理,以实现快速地生成与该待检测数据对应的数据匹配结果,有效地提高了数据匹配的处理效率。本实施例通过使用基于VBA代码开发的VBA工具执行Excel中的数据匹配对比处理,不需要安装其他软件或数据库等成本较高的方式,直接在Excel中完成相关数据的拷贝后就可以基于哈希方法执行相应的数据匹配处理,有效的保证了数据的安全性与便携性。另外,基于VBA工具实现数据匹配的过程操作简单,对于绝大多数普通业务操作人员来说,运用非常便捷,不需要经过复杂的培训,只需要进行数据拷贝并且点击相应的触发按钮就能迅速完成他们以前要学习Excel函数等才能完成的数据匹配任务,有效地提高了用户使用体验,以及提高了数据匹配的处理效率。

进一步地,本申请一实施例中,上述步骤S6,包括:

S600:获取所述目标数据集合中包含的每一个目标数据的第一哈希值;

S601:对所有所述第一哈希值进行数值大小比较处理,筛选出在所有所述第一哈希值中数值最大的第二哈希值;

S602:将所述第二哈希值对应的数值作为长度值;

S603:根据各所述第一哈希值,确定出与各所述目标数据对应的放置位置信息;

S604:基于所述放置位置信息、所述目标数据、以及所述长度值构建对应的哈希链表,其中,所述哈希链表内包含与所述长度值的数量相同的多个数组,每个所述数组包括链表,链表内存储有与数组匹配的放置位置信息所对应的目标数据。

如上述步骤S600至S604所述,上述基于上述第一哈希值与上述目标数据,生成与上述目标数据集合对应的哈希链表的步骤,具体可包括:首先获取上述目标数据集合中包含的每一个目标数据的第一哈希值。其中,可基于上述哈希算法来分别计算上述目标数据集合中包含的每一个目标数据的第一哈希值。具体可将每一个目标数据分别输入至上述哈希算法,来计算得到一一对应的第一哈希值。另外,上述哈希算法可以是任意的哈希函数,例如可以包括但不限于直接定址法、平方取中法、除留余数法、随机数法等对应的函数,本实施例对此不进行具体限定,只需保证采用相同的哈希算法对目标数据集合中包含的目标数据以及上述待检测数据进行哈希值的计算即可。在得到了上述第一哈希值后,再对所有上述第一哈希值进行数值大小比较处理,筛选出在所有上述第一哈希值中数值最大的第二哈希值。然后将上述第二哈希值对应的数值作为长度值。其中,通过对计算得到的所有上述第一哈希值进行数值大小比较处理后,将在所有上述第一哈希值中数值最大的第二哈希值作为构建的哈希链表的长度值,从而能够保证尽可能均匀分配哈希链表中用于存储目标数据的存储位置。之后根据各上述第一哈希值,确定出与各上述目标数据对应的放置位置信息。其中,哈希值与放置位置具有数值相同的对应关系,即对于任意一个哈希值a,则与该哈希值a对应的放置位置信息为数组a。最后基于上述放置位置信息、上述目标数据、以及上述长度值构建对应的哈希链表,其中,上述哈希链表内包含与上述长度值的数量相同的多个数组,每个上述数组包括链表,链表内存储有与数组匹配的放置位置信息所对应的目标数据。其中,如果上述长度值为m,则哈希链表中会包括m个数组(数组0,数组1,…,数组m-1),且按照从数组的数值从小到大的顺序依次排列每一个数组,可理解为哈希链表是一个由m个指针分量组成的一维数组ST[m],只要哈希值为i的数据元素都会插入到头指针为ST[i]的链表中。举例地,如果哈希值a对应的目标数据为12,则进一步会在该数组a包括的链表中填充该目标数据12。而如果哈希值a对应的目标数据为12,28,则在数组a中插入了目标数据12后,会再在数组a的填充有12的链表的最后链结点插入目标数据28,依此雷翠,依据上述数据处理方式即可根据上述放置位置信息、上述目标数据、以及上述长度值创建出上述哈希链表。通过本实施例能够基于上述第一哈希值与上述目标数据,快速生成与上述目标数据集合对应的哈希链表,使得后续能够使用上述哈希链表来便捷地对上述指定哈希值进行数据匹配处理,进而实现快速地生成与上述待检测数据对应的数据匹配结果,有效地提高了数据匹配的处理效率。

进一步地,本申请一实施例中,上述步骤S7,包括:

S700:基于预设的哈希值与放置位置的对应关系,确定出所述指定哈希值在所述哈希链表中的指定放置位置信息;

S701:根据所述指定放置位置信息,从所述哈希链表中查询出与所述指定放置位置信息对应的指定数组;

S702:判断所述指定数组内是否存储有数据;

S703:若所述指定数组内存储有数据,则判断所述指定数组中存储的所有数据中是否存在与所述待检测数据相匹配的指定数据;

S704:若所述指定数组中存储的所有数据中存在所述指定数据,则生成所述目标数据集合中存在与所述待检测数据相匹配的数据的第一匹配结果;

S705:若所述指定数组中存储的所有数据中不存在所述指定数据,则生成所述目标数据集合中不存在与所述待检测数据匹配的数据的第二匹配结果。

如上述步骤S700至S705所述,上述使用上述哈希链表对上述指定哈希值进行数据匹配处理,生成与上述待检测数据对应的数据匹配结果的步骤,具体可包括:首先基于预设的哈希值与放置位置的对应关系,确定出上述指定哈希值在上述哈希链表中的指定放置位置信息。其中,上述哈希值与放置位置的对应关系为两者的数值相同。举例地,对于指定哈希值为b,则与该指定哈希值b对应的指定放置位置信息为数组b。在得到了上述指定放置位置信息后,再根据上述指定放置位置信息,从上述哈希链表中查询出与上述指定放置位置信息对应的指定数组。然后判断上述指定数组内是否存储有数据。其中,如果上述指定数组内未存储有数据,则直接生成上述目标数据集合中不存在与上述待检测数据匹配的数据的匹配结果。而如果上述指定数组内存储有数据,则进一步判断上述指定数组中存储的所有数据中是否存在与上述待检测数据相匹配的指定数据。其中,可采用并行比较指令来同时并行地执行上述待检测数据与上述指定数组中存储的每一个数据的数据比较处理,以有效提高该数据比较处理的速率。如果上述指定数组中存储的所有数据中存在上述指定数据,则生成上述目标数据集合中存在与上述待检测数据相匹配的数据的第一匹配结果。而如果上述指定数组中存储的所有数据中不存在上述指定数据,则生成上述目标数据集合中不存在与上述待检测数据匹配的数据的第二匹配结果。本实施例通过使用基于哈希方法创建生成的与目标数据集合对应的哈希链表,即通过根据目标数据集合中各目标数据的哈希值特征(即第一哈希值)把每一个目标数据分配到哈希链表中对应的数组进行存储,从而后续也可根据待检测数据的哈希值特征(即指定哈希值)来快速从哈希链表内找到正确的数组,进而再从该正确的数组的链表中来查询出是否存在与该指定哈希值相同的目标数据,这样的数据匹配方式有效地减少了数据查询的次数,提高了数据匹配的处理效率,避免了对于目标数据集合的全量匹配,比使用目标数据集合中每一个目标数据与待检测进行数据匹配的初级匹配方式大幅提高了查询概率,比按顺序查找的方式会呈几何级别的提高,且运用哈希链表的方式进行查找匹配的效率提升会随着数据量的越多而提升越明显。

进一步地,本申请一实施例中,上述步骤S703,包括:

S7030:判断所述指定数据中包含的数据的个数是否为1;

S7031:若所述指定数据中包含的数据的个数不为1,则基于并行比较指令比较所述待检测数据是否与所述指定数组中的任意一个数据相同;

S7032:若所述待检测数据与所述指定数组中的任意一个数据相同,则判定所述指定数组中包含的所有数据中存在与所述待检测数据相匹配的指定数据;

S7033:若所述待检测数据与所述指定数组中的任意一个数据均不相同,则判定所述指定数组中包含的所有数据中不存在与所述待检测数据相匹配的指定数据。

如上述步骤S7030至S7033所述,上述断上述指定数组中存储的所有数据中是否存在与上述待检测数据相匹配的指定数据的步骤,具体可包括:首先判断上述指定数据中包含的数据的个数是否为1。如果上述指定数据中包含的数据的个数不为1,则基于并行比较指令比较上述待检测数据是否与上述指定数组中的任意一个数据相同。其中,如果上述指定数据中包含的数据的个数不为1,则表明上述指定数据中包含的数据的个数至少大于等于2。另外,上述并行比较指令具体可为单指令流多数据流(single instruction multipledata,SIMD)指令。如果上述待检测数据与上述指定数组中的任意一个数据相同,则判定上述指定数组中包含的所有数据中存在与上述待检测数据相匹配的指定数据。而如果上述待检测数据与上述指定数组中的任意一个数据均不相同,则判定上述指定数组中包含的所有数据中不存在与上述待检测数据相匹配的指定数据。本实施例当指定数据中包含的数据的个数大于1的时候,在判断上述指定数组中存储的所有数据中是否存在与上述待检测数据相匹配的指定数据的过程中,通过利用并行比较指令的并行计算能力来同时进行该待检测数据与指定数组中的每一个数据的数据匹配处理,有助于进一步提高数据匹配的处理速率,以及提高生成数据匹配结果的生成速度。

进一步地,本申请一实施例中,上述步骤S4之前,包括:

S400:获取所述内存当前的内存占用值,以及获取预设的内存使用占比阈值;

S401:基于所述内存占用值,计算当前的内存可用值;

S402:判断所述内存可用值是否大于所述内存使用占比阈值;

S403:若所述内存可用值大于所述内存使用占比阈值,则生成将所述待检测数据与所述目标数据集合拷贝至内存中的拷贝指令。

如上述步骤S400至S403所述,在执行基于上述VBA任务的执行逻辑,将上述待检测数据与上述目标数据集合拷贝至内存中的过程之前,还可进行计算当前的内存可用值的计算流程,之后再基于计算结果来决定是否直接将上述待检测数据与上述目标数据集合拷贝至内存中。具体地,上述基于上述VBA任务的执行逻辑,将上述待检测数据与上述目标数据集合拷贝至内存中的步骤之前还可包括:首先获取上述内存当前的内存占用值,以及获取预设的内存使用占比阈值。其中,可通过在任务管理器中查询出上述内存占用值。另外,上述内存使用占比阈值可根据对以往的历史任务中的相关数据进行统计分析后生成。然后基于上述内存占用值,计算当前的内存可用值。其中,上述内存占用值一般为百分数形式,可采用1-内存占用值的计算公式计算出当前的内存可用值。之后判断上述内存可用值是否大于上述内存使用占比阈值。如果上述内存可用值大于上述内存使用占比阈值,则生成将上述待检测数据与上述目标数据集合拷贝至内存中的拷贝指令。本实施例在将上述待检测数据与上述目标数据集合拷贝至内存中,以使用内存对内部拷贝的数据进行匹配处理之前,会先智能地获取当前的内存可用值,只有当该内存可用值大于上述内存使用占比阈值时,后续才会进行将上述待检测数据与上述目标数据集合拷贝至内存中的数据拷贝处理,有效地避免出现在当前的内存可用值不能满足进行数据匹配处理的需求时依旧进行了数据匹配流程而导致数据匹配工作效率低下,且系统出现卡顿甚至卡死的情况。进一步地,如果上述内存可用值小于上述内存使用占比阈值,则计算上述预测数值与上述内存占用值之间的差值,再根据上述差值进行与上述差值对应的内存资源的追加处理。其中,上述追加的内存资源的数值至少大于上述差值。通过在当前的内存可用值不能满足进行数据匹配处理的需求时,通过执行相应的内存追加处理,使得后续能够在经过内存资源的追加处理的内存中流畅地进行数据匹配处理工作,有利于保证数据匹配处理的正常运作。

进一步地,本申请一实施例中,上述步骤S400之前,包括:

S4000:调用预设的任务数据库,其中,所述任务数据库中存储有历史数据匹配任务,各所述历史数据匹配任务中包含的数据集合的数量值,以及各所述历史数据匹配任务在正常运作下的内存使用占比值;

S4001:获取所述目标数据集合包含的数据量的第一数量值;

S4002:使用所述任务数据库进行查询处理,查询出与所述第一数量值具有特定匹配关系的第二数量值,其中,所述特定匹配关系是指所述第二数量值与所述第一数量值之间的差值的绝对值处于预设数值范围内;

S4003:从所述任务数据库内筛选出与所述第二数量值对应的指定历史数据匹配任务,以及查找出与各所述指定历史任务分别对应的指定内存使用占比值;

S4004:计算所有所述指定内存使用占比值的平均值;

S4005:将所述平均值作为所述内存使用占比阈值。

如上述步骤S4000至S4005所述,在执行获取预设的内存使用占比阈值的获取过程之前,还可包括生成该内存使用占比阈值的生成过程。具体地,上述获取当前的内存占用值,以及获取预设的内存使用占比阈值的步骤之前还可包括:首先调用预设的任务数据库,其中,上述任务数据库中存储有历史数据匹配任务,各上述历史数据匹配任务中包含的数据集合的数量值,以及各上述历史数据匹配任务在正常运作下的内存使用占比值。然后获取上述目标数据集合包含的数据量的第一数量值。举例地,如果目标数据集合包含有50万数据量,则其对应的第一数量值为50万。在得到了上述第一数量值后,再使用上述任务数据库进行查询处理,查询出与上述第一数量值具有特定匹配关系的第二数量值,其中,上述特定匹配关系是指上述第二数量值与上述第一数量值之间的差值的绝对值处于预设数值范围内。另外,对于上述预设数值范围不作具体限定,可根据实际使用需求进行设置,例如可设置为2万。之后从上述任务数据库内筛选出与上述第二数量值对应的指定历史数据匹配任务,以及查找出与各上述指定历史任务分别对应的指定内存使用占比值。最后计算所有上述指定内存使用占比值的平均值,并将上述平均值作为上述内存使用占比阈值。本实施例通过基于历史数据匹配任务中的实际数据进行统计分析,进而智能地确定出上述内存使用占比阈值的数值,以便于后续能够根据该内存使用占比阈值来智能地判别当前是否适合进行对于待检测数据以及目标数据集合之间的数据匹配处理,有效提高了处理数据匹配任务过程中的执行智能性。

进一步地,本申请一实施例中,上述步骤S7之后,包括:

S710:获取当前时间,并判断所述当前时间是否处于预设时间范围内;

S711:若所述当前时间处于预设时间范围内,则获取预设的邮件登录信息,以及获取与指定用户对应的指定邮件地址;

S712:根据所述邮件登录信息登录至对应的邮件服务器;

S713:通过所述邮件服务器将所述数据匹配结果发送至所述指定邮件地址。

如上述步骤S710至S713所述,上述使用上述哈希链表对上述指定哈希值进行数据匹配处理,生成与上述待检测数据对应的数据匹配结果的步骤之后,还可包括:获取当前时间,并判断上述当前时间是否处于预设时间范围内。其中,上述预设时间范围指代的是工作时间段所处的时间范围,对于该预设时间范围的具体数值不作限定,可根据实际需求进行选取,例如可设为9:00-21:00。如果上述当前时间处于预设时间范围内,则获取预设的邮件登录信息,以及获取与指定用户对应的指定邮件地址。然后根据上述邮件登录信息登录至对应的邮件服务器。最后通过上述邮件服务器将上述数据匹配结果发送至上述指定邮件地址。本实施例在生成与上述待检测数据对应的数据匹配结果后,通过使用邮件服务器将该匹配结果发送至指定邮件地址,以使得指定用户能够及时了解到本次数据匹配的最终匹配结果。另外,只有在当前时间处于预设时间范围内才会发送该数据匹配结果至指定邮件地址,能够避免在休息时间段对指定用户造成不良干扰,有效的提高了邮件发送的智能性。

本申请实施例中的数据匹配方法还可以应用于区块链领域,如将上述哈希链表等数据存储于区块链上。通过使用区块链来对上述哈希链表进行存储和管理,能够有效地保证上述哈希链表的安全性与不可篡改性。

上述区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。

区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。

参照图2,本申请一实施例中还提供了一种数据匹配装置,包括:

第一获取模块1,用于获取导入至Excel文档中的待检测数据以及目标数据集合;

第一判断模块2,用于判断是否接收到用户触发的数据匹配指令;

第一生成模块3,用于若接收到用户触发的数据匹配指令,则读取预设的VBA代码,并基于所述数据匹配指令,生成与所述待检测数据及所述目标数据集合对应的VBA任务;

拷贝模块4,用于基于所述VBA任务的执行逻辑,将所述待检测数据与所述目标数据集合拷贝至内存中;

第一计算模块5,用于基于预设的哈希算法,分别计算处于内存中的所述目标数据集合包含的每一个目标数据的第一哈希值,以及计算处于内存中的所述待检测数据的指定哈希值;

第二生成模块6,用于基于所述第一哈希值与所述目标数据,生成与所述目标数据集合对应的哈希链表;

匹配模块7,用于使用所述哈希链表对所述指定哈希值进行数据匹配处理,生成与所述待检测数据对应的数据匹配结果。

本实施例中,上述数据匹配装置中的第一获取模块、第一判断模块、第一生成模块、拷贝模块、第一计算模块、第二生成模块与匹配模块的功能和作用的实现过程具体详见上述数据匹配方法中对应步骤S1至S7的实现过程,在此不再赘述。

进一步地,本申请一实施例中,上述第二生成模块,包括:

第一获取单元,用于获取所述目标数据集合中包含的每一个目标数据的第一哈希值;

比较单元,用于对所有所述第一哈希值进行数值大小比较处理,筛选出在所有所述第一哈希值中数值最大的第二哈希值;

第一确定单元,用于将所述第二哈希值对应的数值作为长度值;

第二确定单元,用于根据各所述第一哈希值,确定出与各所述目标数据对应的放置位置信息;

构建单元,用于基于所述放置位置信息、所述目标数据、以及所述长度值构建对应的哈希链表,其中,所述哈希链表内包含与所述长度值的数量相同的多个数组,每个所述数组包括链表,链表内存储有与数组匹配的放置位置信息所对应的目标数据。

本实施例中,上述数据匹配装置中的第一获取单元、比较单元、第一确定单元、第二确定单元与构建单元的功能和作用的实现过程具体详见上述数据匹配方法中对应步骤S600至S604的实现过程,在此不再赘述。

进一步地,本申请一实施例中,上述匹配模块,包括:

第三确定单元,用于基于预设的哈希值与放置位置的对应关系,确定出所述指定哈希值在所述哈希链表中的指定放置位置信息;

查询单元,用于根据所述指定放置位置信息,从所述哈希链表中查询出与所述指定放置位置信息对应的指定数组;

第一判断单元,用于判断所述指定数组内是否存储有数据;

第二判断单元,用于若所述指定数组内存储有数据,则判断所述指定数组中存储的所有数据中是否存在与所述待检测数据相匹配的指定数据;

第一生成单元,用于若所述指定数组中存储的所有数据中存在所述指定数据,则生成所述目标数据集合中存在与所述待检测数据相匹配的数据的第一匹配结果;

第二生成单元,用于若所述指定数组中存储的所有数据中不存在所述指定数据,则生成所述目标数据集合中不存在与所述待检测数据匹配的数据的第二匹配结果。

本实施例中,上述数据匹配装置中的第三确定单元、查询单元、第一判断单元、第二判断单元、第一生成单元与第二生成单元的功能和作用的实现过程具体详见上述数据匹配方法中对应步骤S700至S705的实现过程,在此不再赘述。

进一步地,本申请一实施例中,上述第二判断单元,包括:

判断子单元,用于判断所述指定数据中包含的数据的个数是否为1;

比较子单元,用于若所述指定数据中包含的数据的个数不为1,则基于并行比较指令比较所述待检测数据是否与所述指定数组中的任意一个数据相同;

第一判定子单元,用于若所述待检测数据与所述指定数组中的任意一个数据相同,则判定所述指定数组中包含的所有数据中存在与所述待检测数据相匹配的指定数据;

第二判定子单元,用于若所述待检测数据与所述指定数组中的任意一个数据均不相同,则判定所述指定数组中包含的所有数据中不存在与所述待检测数据相匹配的指定数据。

本实施例中,上述数据匹配装置中的判断子单元、比较子单元、第一判定子单元与第二判定子单元的功能和作用的实现过程具体详见上述数据匹配方法中对应步骤S7030至S7033的实现过程,在此不再赘述。

进一步地,本申请一实施例中,上述数据匹配装置,包括:

第二获取模块,用于获取所述内存当前的内存占用值,以及获取预设的内存使用占比阈值;

第二计算模块,用于基于所述内存占用值,计算当前的内存可用值;

第二判断模块,用于判断所述内存可用值是否大于所述内存使用占比阈值;

第三生成模块,用于若所述内存可用值大于所述内存使用占比阈值,则生成将所述待检测数据与所述目标数据集合拷贝至内存中的拷贝指令。

本实施例中,上述数据匹配装置中的第二获取模块、第二计算模块、第二判断模块与第三生成模块的功能和作用的实现过程具体详见上述数据匹配方法中对应步骤S400至S403的实现过程,在此不再赘述。

进一步地,本申请一实施例中,上述数据匹配装置,包括:

调用模块,用于调用预设的任务数据库,其中,所述任务数据库中存储有历史数据匹配任务,各所述历史数据匹配任务中包含的数据集合的数量值,以及各所述历史数据匹配任务在正常运作下的内存使用占比值;

第三获取模块,用于获取所述目标数据集合包含的数据量的第一数量值;

查询模块,用于使用所述任务数据库进行查询处理,查询出与所述第一数量值具有特定匹配关系的第二数量值,其中,所述特定匹配关系是指所述第二数量值与所述第一数量值之间的差值的绝对值处于预设数值范围内;

筛选模块,用于从所述任务数据库内筛选出与所述第二数量值对应的指定历史数据匹配任务,以及查找出与各所述指定历史任务分别对应的指定内存使用占比值;

第三计算模块,用于计算所有所述指定内存使用占比值的平均值;

确定模块,用于将所述平均值作为所述内存使用占比阈值。

本实施例中,上述数据匹配装置中的调用模块、第三获取模块、查询模块、筛选模块、第三计算模块与确定模块的功能和作用的实现过程具体详见上述数据匹配方法中对应步骤S4000至S4005的实现过程,在此不再赘述。

进一步地,本申请一实施例中,上述数据匹配装置,包括:

第三判断模块,用于获取当前时间,并判断所述当前时间是否处于预设时间范围内;

第四获取模块,用于若所述当前时间处于预设时间范围内,则获取预设的邮件登录信息,以及获取与指定用户对应的指定邮件地址;

登录模块,用于根据所述邮件登录信息登录至对应的邮件服务器;

发送模块,用于通过所述邮件服务器将所述数据匹配结果发送至所述指定邮件地址。

本实施例中,上述数据匹配装置中的第三判断模块、第四获取模块、登录模块与发送模块的功能和作用的实现过程具体详见上述数据匹配方法中对应步骤S710至S713的实现过程,在此不再赘述。

参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏、输入装置和数据库。其中,该计算机设备设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括存储介质、内存储器。该存储介质存储有操作系统、计算机程序和数据库。该内存储器为存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储待检测数据、目标数据集合、VBA代码、VBA任务、目标数据、第一哈希值、指定哈希值、哈希链表以及数据匹配结果。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机设备的显示屏是计算机中必不可少的一种图文输出设备,用于将数字信号转换为光信号,使文字与图形在显示屏的屏幕上显示出来。该计算机设备的输入装置是计算机与用户或其他设备之间进行信息交换的主要装置,用于把数据、指令及某些标志信息等输送到计算机中去。该计算机程序被处理器执行时以实现一种数据匹配方法。

上述处理器执行上述数据匹配方法的步骤:

获取导入至Excel文档中的待检测数据以及目标数据集合;

判断是否接收到用户触发的数据匹配指令;

若接收到用户触发的数据匹配指令,则读取预设的VBA代码,并基于所述数据匹配指令,生成与所述待检测数据及所述目标数据集合对应的VBA任务;

基于所述VBA任务的执行逻辑,将所述待检测数据与所述目标数据集合拷贝至内存中;

基于预设的哈希算法,分别计算处于内存中的所述目标数据集合包含的每一个目标数据的第一哈希值,以及计算处于内存中的所述待检测数据的指定哈希值;

基于所述第一哈希值与所述目标数据,生成与所述目标数据集合对应的哈希链表;

使用所述哈希链表对所述指定哈希值进行数据匹配处理,生成与所述待检测数据对应的数据匹配结果。

本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的装置、计算机设备的限定。

本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种数据匹配方法,具体为:

获取导入至Excel文档中的待检测数据以及目标数据集合;

判断是否接收到用户触发的数据匹配指令;

若接收到用户触发的数据匹配指令,则读取预设的VBA代码,并基于所述数据匹配指令,生成与所述待检测数据及所述目标数据集合对应的VBA任务;

基于所述VBA任务的执行逻辑,将所述待检测数据与所述目标数据集合拷贝至内存中;

基于预设的哈希算法,分别计算处于内存中的所述目标数据集合包含的每一个目标数据的第一哈希值,以及计算处于内存中的所述待检测数据的指定哈希值;

基于所述第一哈希值与所述目标数据,生成与所述目标数据集合对应的哈希链表;

使用所述哈希链表对所述指定哈希值进行数据匹配处理,生成与所述待检测数据对应的数据匹配结果。

综上所述,本申请实施例中提供的数据匹配方法、装置、计算机设备和存储介质,在用户将待检测数据以及目标数据集合导入至Excel文档并触发数据匹配指令之后,会智能地读取预设的VBA代码以生成相应的VBA任务。之后基于所述VBA任务的执行逻辑,将待检测数据与目标数据集合拷贝至内存中,进而在内存中利用哈希方法对待检测数据与目标数据集合进行数据匹配处理,以实现快速地生成与该待检测数据对应的数据匹配结果,有效地提高了数据匹配的处理效率。本申请实施例通过使用基于VBA代码开发的VBA工具执行Excel中的数据匹配对比处理,不需要安装其他软件或数据库等成本较高的方式,直接在Excel中完成相关数据的拷贝后就可以基于哈希方法执行相应的数据匹配处理,有效的保证了数据的安全性与便携性。另外,基于VBA工具实现数据匹配的过程操作简单,对于绝大多数普通业务操作人员来说,运用非常便捷,不需要经过复杂的培训,只需要进行数据拷贝并且点击相应的触发按钮就能迅速完成他们以前要学习Excel函数等才能完成的数据匹配任务,有效地提高了用户使用体验,以及提高了数据匹配的处理效率。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM通过多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。

以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

相关技术
  • 数据匹配方法、系统、计算机设备和计算机可读存储介质
  • 点云数据匹配方法、装置、电子设备及计算机存储介质
技术分类

06120112553925