查询多个数据多级相关性方法及其应用与流程

文档序号:32501108发布日期:2022-12-10 05:28阅读:112来源:国知局
查询多个数据多级相关性方法及其应用与流程

1.本技术涉及大数据分析技术领域,特别是一种涉及查询多个数据多级相关性方法及其应用。


背景技术:

2.数据相关性是指数据之间存在某种关系。大数据时代,数据相关分析因其具有可以快捷、高效地发现事物间内在关联的优势而受到广泛关注,并有效地应用于推荐系统、商业分析、公共管理、医疗诊断等领域。数据相关性可以时序分析、空间分析等方法进行分析。数据相关性分析也面对着高维数据、多变量数据、大规模数据、增长性数据及其可计算方面等挑战。
3.然而目前传统的基于sql的数据相关性计算方法,一般都是通过左关联(left join)实现的,当需要分析多个字段的多级相关性时,还需要通过关联(join)+联合(union)实现。此方法,通过海量数据的关联(join)+联合(union),往往需消耗大量的计算资源,计算速度较慢,长时间得到计算结果。
4.因此,亟待一种能够显著降低计算资源,提高计算速度的查询多个数据多级相关性方法及其应用。


技术实现要素:

5.本技术实施例提供了一种查询多个数据多级相关性方法及其应用,针对目前技术存在的消耗大量的计算资源,计算速度较慢等问题。
6.本发明核心技术主要是通过数据查询引擎使用数据表中预先创建好的索引,发挥分布式数据查询引擎的并行查询性能,内置窗口函数查询优化机制,并通过对需要分析的大量数据的批量预处理和分组求和计算。
7.第一方面,本技术提供了一种查询多个数据多级相关性方法,所述方法包括以下步骤:s00、从数据源获取原始数据;s10、根据搜索条件确定多个搜索维度,以每个搜索维度对原始数据中的相关字段的维度进行拼接,以使得原始数据中每一条数据中相关字段的维度对应的字段内容合并在同一维度下,根据两个及两个以上相关字段的维度新增合并维度;s20、根据每个合并维度依次拆分维度拼接后的原始数据,以使得拆分后的原始数据中每一条数据中均具有对应合并维度的字段内容;s40、根据任一搜索维度对最终拆分后的相关字段的数据进行模糊查询;s50、根据该任一搜索维度对查询结果进行去重,以获得一级相关数据;s60、根据任一搜索维度将去重后的数据与最终拆分后的相关字段的数据进行关联得到二级相关数据;s70、根据任一搜索维度对二级相关数据进行分组,输出包含该任一搜索维度的数
据的出现次数。
8.进一步地,数据源为关系型数据库、分布式数据库及数据场库。
9.进一步地,步骤s10~s70中的维度为字段。
10.进一步地,步骤s10中的搜索条件根据原始数据中包含的一个或多个维度而确定,且搜索条件为原始数据中其中一条或多条数据中的字段内容。
11.进一步地,原始数据包含多条数据,每条数据均包含多个字段内容,每个字段内容对应一个维度。
12.进一步地,步骤s10中,相关字段为字段内容相关的维度,每一个搜索维度对应一个合并维度。
13.进一步地,步骤s20中,在第一个合并维度拆分维度拼接后的原始数据后,后续每个合并维度均在前一个合并维度拆分后的基础上进行拆分。
14.第二方面,本技术提供了一种查询多个数据多级相关性装置,包括:通信模块,用于从数据源获取原始数据;输入模块,用于输入搜索条件;拼接模块,用于根据搜索条件确定多个搜索维度,以每个搜索维度对原始数据中的相关字段的维度进行拼接,以使得原始数据中每一条数据中相关字段的维度对应的字段内容合并在同一维度下,根据两个及两个以上相关字段的维度新增合并维度;拆分模块,用于根据每个合并维度依次拆分维度拼接后的原始数据,以使得拆分后的原始数据中每一条数据中均具有对应合并维度的字段内容;查询模块,用于根据任一搜索维度对最终拆分后的相关字段的数据内进行模糊查询;去重模块,用于根据该任一搜索维度对查询结果进行去重,以获得一级相关数据;关联模块,用于根据任一搜索维度将去重后的数据与最终拆分后的相关字段的数据进行关联得到二级相关数据;分组模块,用于根据任一搜索维度对二级相关数据进行分组;输出模块,用于根据分组后的数据输出包含该任一搜索维度的数据的出现次数。
15.第三方面,本技术提供了一种电子装置,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行上述的查询多个数据多级相关性方法。
16.第四方面,本技术提供了一种可读存储介质,可读存储介质中存储有计算机程序,计算机程序包括用于控制过程以执行过程的程序代码,过程包括根据上述的查询多个数据多级相关性方法。
17.本发明的主要贡献和创新点如下:1、与现有技术相比,本技术通过进行海量数据的相关性计算,可减少关联、联合的计算次数,节省大量计算资源,提升计算效率。可实现只需一次关联,节省大量计算资源,计算时间大大缩短;2、与现有技术相比,本技术由于利用sql技术,因此可以通过数据查询引擎使用数据表中预先创建好的索引(对应维度),发挥分布式数据查询引擎的并行查询性能,内置窗口函数查询优化机制,并通过对需要分析的大量数据的批量预处理和分组求和计算,因此能够高效以及全方位的对海量的数据进行分析挖掘,解决大数据项目中的数据相关性计算较复杂的问题。
18.本技术的一个或多个实施例的细节在以下附图和描述中提出,以使本技术的其他特征、目的和优点更加简明易懂。
附图说明
19.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:图1是根据本技术实施例的查询多个数据多级相关性方法的流程;图2是本技术实施例一获取的原始数据图;图3是本技术实施例一中拼接后的示意图;图4是本技术实施例一中拆分后的示意图(仅展示主要部分);图5是本技术实施例一中第二次拆分后的示意图(仅展示主要部分);图6是本技术实施例一中模糊搜索的示意图(仅展示主要部分);图7是本技术实施例一中去重后的示意图(仅展示主要部分);图8是本技术实施例一中关联后的二级相关数据清单示意图(仅展示主要部分);图9是本技术实施例一中分组后的示意图(仅展示主要部分);图10是根据本技术实施例的电子装置的硬件结构示意图;图11是现有技术的流程图。
具体实施方式
20.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
21.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
22.如图11所示,传统的多个字段相关性计算方法,一般都是通过关联某个字段后再进行联合实现的,比如一个子查询关联收件人电话,另一个子查询关联发件人电话,再两个子查询联合得到结果。此方法,通过海量数据的关联和联合,需要两次关联和两次联合,会消耗大量的计算资源,计算速度较慢。
23.基于此,本发明基于sql技术来解决现有技术存在的问题。
24.sql技术(结构化查询语言,structured query language,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名),应用sql的快速查询功能,通过数据错位的方式进行分组求和,不需要预先对数据进行关联操作再计算同比,不需要使用高级编程语言进行开发编译。
25.实施例一本技术旨在提出查询多个数据多级相关性方法,通过进行海量数据的相关性计算,会减少关联、联合的计算次数,节省大量计算资源,提升计算效率。
26.具体地,本技术实施例提供了一种查询多个数据多级相关性方法,可以显著降低计算资源,提高计算效率,具体地,参考图1,所述方法包括:s00、从数据源获取原始数据;在本实施例中,为了更方便理解,以从订单记录中分析计算电话和二级地址的关联性为例说明,即电话(搜索条件)-电话(一级关联)-地址(二级关联)),也可用于其他类似的场景或者类似的数据结构的场景,这里不做限定。
27.此步骤中,可从任意类型的数据源中来获取需要分析的海量数据,可以是各种关系型数据库mysql等、分布式数据库postgresql等、数据仓库hive等不同类型的数据库,通常根据数据库的服务地址、端口、用户名、密码、数据库实例信息连接到数据源,可以通过数据库客户端、大数据开发平台等连接到数据源后,对需要分析的数据表进行操作,本实施例获得数据如图2所示。
28.s10、根据搜索条件确定多个搜索维度,以每个搜索维度对原始数据中的相关字段的维度进行拼接,以使得原始数据中每一条数据中相关字段的维度对应的字段内容合并在同一维度下,根据两个及两个以上相关字段的维度新增合并维度;在本实施例中,梳理需要搜索的维度,即图1里的第一行(a-e所表示的字段),可以是电话维度,也可以是地址等维度。比如订单记录里面,包括订单号、收件人电话、收件人地址、寄件人电话、寄件人地址等字段。基于确定的维度,对相关字段进行拼接(通过sql中的concat函数实现),例如对订单信息中的收件人电话和发件人电话、收件人地址和发件人地址进行拼接,如图3所示,可得到图3中“电话搜索字段”和“地址搜索字段”,即表示合并维度。
29.这样搜索电话的时候只需在电话搜索字段中查找,不需要在收件人话中查找一遍,然后在发件人电话中再查找一遍,减少搜索次数s20、根据每个合并维度依次拆分维度拼接后的原始数据,以使得拆分后的原始数据中每一条数据中均具有对应合并维度的字段内容;在此步骤中,如图4所示,对“地址搜索字段”,通过sql函数进行拆分,实现一行变成两行。如搜索字段是多个字段拼接的,则一行变成多行。目的是使收件人地址、发件人地址都转换到“地址”字段中,且一行对应一个地址,前面的字段都不变。
30.同样的,对“电话搜索字段”用同样的方法进行拆分,一行变两行,如图5所示。从而实现把收件人电话、发件人电话都转换到“电话”字段中,至此,每行原始数据的收件人电话、发件人电话和收件人地址、发件人地址的各种组合都已完成,为后续搜索的一级相关数据做好准备。
31.s40、根据任一搜索维度对最终拆分后的相关字段的数据进行模糊查询;在本实施例中,如基于“电话搜索字段”,对输入条件进行模糊查询。例如输入1390000001,在电话搜索字段中进行模糊查询,得到电话字段的数据,如图6所示。
32.当然还可基于其他搜索维度,如“地址搜索字段”进行模糊查询。
33.s50、根据该任一搜索维度对查询结果进行去重,以获得一级相关数据;
在本实施例中,对s40步骤的电话数据进行去重,得到一级相关的电话数据,如图7。去重的目的是避免后续步骤重复关联s30的结果集。
34.s60、根据任一搜索维度将去重后的数据与最终拆分后的相关字段的数据进行关联得到二级相关数据;在本实施例中,对s50的结果和s30的结果通过电话字段进行关联,得到二级相关数据。例如上述一级相关的电话数据,通过电话字段关联s30结果,得到二级相关数据清单,如图8所示,能全部获取到和s50相关的地址,并且一个地址一行,以便后续统计地址出现的次数。因为电话字段中已经包含了收件人电话和发件人电话,所以不需要关联收件人电话一次,再关联发件人电话一次。
35.s70、根据任一搜索维度对二级相关数据进行分组,输出包含该任一搜索维度的数据的出现次数。
36.在本实施例中,对二级相关数据清单中的目标字段进行分组,得到地址出现的次数。例如,如图9所示,对s60结果中的地址进行分组,输出各地址出现的次数。因为地址字段中包含了收件人地址和发件人地址,所以不需要对收件人地址分组一次,发件人地址分组一次,再合并一起。
37.如此进行海量数据的相关性计算,会减少关联、联合的计算次数,节省大量计算资源,提升计算效率。比如通过本发明计算某电话的相关地址个数,只需一次关联,节省大量计算资源,计算时间大大缩短。
38.本技术不仅限于该实施例,只要数据库里有相关的数据都可以计算。比如数据库里有证件号、地址,那么就可以通过证件号计算相关的地址个数。或者其他内容的搜索。
39.实施例二基于实施例一,本实施例的步骤包括:步骤1:确定搜索字段,对相关同类字段进行拼接,以减少搜索的次数,例如电话相关的字段拼接成电话搜索字段,地址相关的字段拼接成地址搜索字段。这样搜索电话只需在电话搜索字段中搜索一次,避免在收件人电话中搜索一次,然后在发件人电话中再搜索一次;步骤2:通过sql函数对拼接字段进行拆分成多行,实现所有的地址都存于“地址”字段,所有的电话都存于“电话”字段,把原始数据的每行收件人电话、发件人电话和收件人地址、发件人地址组合形成新的每一行数据,一行变四行。因此关联的时候,只需关联电话字段,而不需要分别关联收件人电话、发件人电话,分组统计地址的时候,只需要对“地址”字段进行统计,而不需要对收件人地址和发件人地址各统计一次,以减少二级关联(join)、联合(union)的次数;如需分析统计其他内容,以此类推;步骤3:如需进一步分析相关性,只需再次关联步骤2的结果集即可;步骤4:对最终关联的结果进行分组统计加工,即可计算出每个地址出现的次数。
40.实施例三基于相同的构思,本技术还提出了一种查询多个数据多级相关性装置,包括:通信模块,用于从数据源获取原始数据;输入模块,用于输入搜索条件;拼接模块,用于根据搜索条件确定多个搜索维度,以每个搜索维度对原始数据中
的相关字段的维度进行拼接,以使得原始数据中每一条数据中相关字段的维度对应的字段内容合并在同一维度下,根据两个及两个以上相关字段的维度新增合并维度;拆分模块,用于根据每个合并维度依次拆分维度拼接后的原始数据,以使得拆分后的原始数据中每一条数据中均具有对应合并维度的字段内容;查询模块,用于根据任一搜索维度对最终拆分后的相关字段的数据内进行模糊查询;去重模块,用于根据该任一搜索维度对查询结果进行去重,以获得一级相关数据;关联模块,用于根据任一搜索维度将去重后的数据与最终拆分后的相关字段的数据进行关联得到二级相关数据;分组模块,用于根据任一搜索维度对二级相关数据进行分组;输出模块,用于根据分组后的数据输出包含该任一搜索维度的数据的出现次数。
41.实施例四本实施例还提供了一种电子装置,参考图10,包括存储器404和处理器402,该存储器404中存储有计算机程序,该处理器402被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
42.具体地,上述处理器402可以包括中央处理器(cpu),或者特定集成电路(applicationspecificintegratedcircuit,简称为asic),或者可以被配置成实施本技术实施例的一个或多个集成电路。
43.其中,存储器404可以包括用于数据或指令的大容量存储器404。举例来说而非限制,存储器404可包括硬盘驱动器(harddiskdrive,简称为hdd)、软盘驱动器、固态驱动器(solidstatedrive,简称为ssd)、闪存、光盘、磁光盘、磁带或通用串行总线(universalserialbus,简称为usb)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器404可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器404可在数据处理装置的内部或外部。在特定实施例中,存储器404是非易失性(non-volatile)存储器。在特定实施例中,存储器404包括只读存储器(read-onlymemory,简称为rom)和随机存取存储器(randomaccessmemory,简称为ram)。在合适的情况下,该rom可以是掩模编程的rom、可编程rom(programmableread-onlymemory,简称为prom)、可擦除prom(erasableprogrammableread-onlymemory,简称为eprom)、电可擦除prom(electricallyerasableprogrammableread-onlymemory,简称为eeprom)、电可改写rom(electricallyalterableread-onlymemory,简称为earom)或闪存(flash)或者两个或更多个以上这些的组合。在合适的情况下,该ram可以是静态随机存取存储器(staticrandom-accessmemory,简称为sram)或动态随机存取存储器(dynamicrandomaccessmemory,简称为dram),其中,dram可以是快速页模式动态随机存取存储器404(fastpagemodedynamicrandomaccessmemory,简称为fpmdram)、扩展数据输出动态随机存取存储器(extendeddateoutdynamicrandomaccessmemory,简称为edodram)、同步动态随机存取内存(synchronousdynamicrandom-accessmemory,简称sdram)等。
44.存储器404可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器402所执行的可能的计算机程序指令。
45.处理器402通过读取并执行存储器404中存储的计算机程序指令,以实现上述实施
例中的任意一种查询多个数据多级相关性方法。
46.可选地,上述电子装置还可以包括传输设备406以及输入输出设备408,其中,该传输设备406和上述处理器402连接,该输入输出设备408和上述处理器402连接。
47.传输设备406可以用来经由一个网络接收或者发送数据。上述的网络具体实例可包括电子装置的通信供应商提供的有线或无线网络。在一个实例中,传输设备包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备406可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
48.输入输出设备408用于输入或输出信息。在本实施例中,输入的信息可以是11111等,输出的信息可以是11111等。
49.实施例四本实施例还提供了一种可读存储介质,可读存储介质中存储有计算机程序,计算机程序包括用于控制过程以执行过程的程序代码,过程包括根据实施例一的查询多个数据多级相关性方法。
50.需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
51.通常,各种实施例可以以硬件或专用电路、软件、逻辑或其任何组合来实现。本发明的一些方面可以以硬件来实现,而其他方面可以由控制器、微处理器或其他计算设备执行的固件或软件来实现,但是本发明不限于此。尽管本发明的各个方面可以被示出和描述为框图、流程图或使用一些其他图形表示,但是应当理解,作为非限制性示例,本文中描述的这些框、装置、系统、技术或方法可以以硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备或其某种组合来实现。
52.本发明的实施例可以由计算机软件来实现,该计算机软件由移动设备的数据处理器诸如在处理器实体中可执行,或者由硬件来实现,或者由软件和硬件的组合来实现。包括软件例程、小程序和/或宏的计算机软件或程序(也称为程序产品)可以存储在任何装置可读数据存储介质中,并且它们包括用于执行特定任务的程序指令。计算机程序产品可以包括当程序运行时被配置为执行实施例的一个或多个计算机可执行组件。一个或多个计算机可执行组件可以是至少一个软件代码或其一部分。另外,在这一点上,应当注意,如图中的逻辑流程的任何框可以表示程序步骤、或者互连的逻辑电路、框和功能、或者程序步骤和逻辑电路、框和功能的组合。软件可以存储在诸如存储器芯片或在处理器内实现的存储块等物理介质、诸如硬盘或软盘等磁性介质、以及诸如例如dvd及其数据变体、cd等光学介质上。物理介质是非瞬态介质。
53.本领域的技术人员应该明白,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
54.以上实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以作出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1