CN106933919B - 数据表的连接方法及装置 - Google Patents
数据表的连接方法及装置 Download PDFInfo
- Publication number
- CN106933919B CN106933919B CN201511032616.8A CN201511032616A CN106933919B CN 106933919 B CN106933919 B CN 106933919B CN 201511032616 A CN201511032616 A CN 201511032616A CN 106933919 B CN106933919 B CN 106933919B
- Authority
- CN
- China
- Prior art keywords
- connection
- data tables
- data
- information
- result
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0633—Lists, e.g. purchase orders, compilation or processing
- G06Q30/0635—Processing of requisition or of purchase orders
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Computational Linguistics (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种数据表的连接方法及装置。其中,该方法包括:获取待进行表连接的至少两个数据表;在至少两个数据表中添加用于标识至少两个属性参数之间关联关系的标识符;基于标识符从各个数据表中查找出具有第一关联关系的第一信息记录项,得到第一结果集;基于标识符查找出各个数据表中具有第二关联关系的第二信息记录项,利用第二信息记录项对至少两个数据表进行表连接,得到第二结果集;将第一结果集和第二结果集进行拼接,得到至少两个数据表的连接结果。本申请解决了存在多种不同对应关系的数据表的连接效率低的技术问题。
Description
技术领域
本申请涉及数据表连接领域,具体而言,涉及一种数据表的连接方法及装置。
背景技术
在生活和工作中,人们每天要接触到大量的信息和数据,在这些真实的数据里,会存在多种对应关系,如多对多的关系和一对多关系。具体地,例如电子商务领域中的会话和订单,可能存在一个会话没有任何订单的情况、可能存在一个会话对应一个订单的情况下,还可能存在一个会话有多个订单的情况,在通过上述多种对应关系,整理或统计会话订单数据时,常用的方式是将分别存储有订单和会话数据的表进行连接,在各大数据仓库查询引擎里,表连接的开销都很大,由于两边的数据表可能会很大,这样查询起来效率很低。
针对上述的存在多种不同对应关系的数据表的连接效率低的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种数据表的连接方法及装置,以至少解决存在多种不同对应关系的数据表的连接效率低的技术问题。
根据本申请实施例的一个方面,提供了一种数据表的连接方法,该方法包括:获取待进行表连接的至少两个数据表,其中,所述至少两个数据表中各个数据表中记录有至少两个属性参数;在所述至少两个数据表中添加用于标识所述至少两个属性参数之间关联关系的标识符,其中,所述关联关系包括第一关联关系和第二关联关系,所述第一关联关系为所述至少两个属性参数的属性信息一一对应的关系,所述第二关联关系为所述至少两个属性参数的属性信息多对多的对应关系;基于所述标识符从各个数据表中查找出具有第一关联关系的第一信息记录项,得到第一结果集;基于所述标识符查找出各个所述数据表中具有第二关联关系的第二信息记录项,利用所述第二信息记录项对所述至少两个数据表进行表连接,得到第二结果集;将所述第一结果集和所述第二结果集进行拼接,得到所述至少两个数据表的连接结果。
进一步地,利用所述第二信息记录项对所述至少两个数据表进行表连接包括:确定所述至少两个数据表的连接序列;利用所述各个数据表中的第二信息记录项,按照所述连接序列对所述至少两个数据表进行表连接。
进一步地,利用所述各个数据表中的第二信息记录项,按照所述连接序列对所述至少两个数据表进行表连接包括:将所述连接序列中第一个数据表初始化为当前表,从所述第一个数据表开始执行如下表连接操作,直至将所述至少两个数据表连接完成:获取所述连接序列中所述当前表的下一表;利用所述下一表中的所述第二信息记录项,连接所述当前表和所述下一表,得到中间结果;将所述中间结果作为下一次所述表连接操作的当前表。
进一步地,利用所述下一表中的所述第二信息记录项,连接所述当前表和所述下一表,得到中间结果包括:获取所述下一表中的第二信息记录项,其中,所述第二信息记录项中记录有目标属性参数的目标属性信息,所述至少两个属性参数包括所述目标属性参数;在第二信息记录项中记录的目标属性信息存在于所述当前表的情况下,提取所述第二信息记录项,得到所述中间结果。
进一步地,在得到所述至少两个数据表的连接结果之后,所述方法还包括:从所述连接结果中获取待统计的属性参数的属性信息,其中,所述至少两个属性参数包括所述待统计的属性参数;统计获取到的属性信息。
进一步地,将所述第一结果集和所述第二结果集进行拼接,得到所述至少两个数据表的连接结果包括:将所述第一结果集和所述第二结果集合并,得到所述连接结果。
根据本申请实施例的另一方面,还提供了一种数据表的连接装置,该装置包括:第一获取单元,用于获取待进行表连接的至少两个数据表,其中,所述至少两个数据表中各个数据表中记录有至少两个属性参数;添加单元,用于在所述至少两个数据表中添加用于区分所述至少两个属性参数之间的第一关联关系和第二关联关系的标识符,其中,所述第一关联关系用于指示所述至少两个属性参数的属性信息一一对应,所述第二关联关系为所述至少两个属性参数的属性信息多对多的对应关系;查找单元,用于基于所述标识符从所述各个数据表中查找出用于记录第一关联关系的第一信息记录项,得到第一结果集;表连接单元,用于基于所述标识符查找出所述各个数据表中用于记录第二关联关系的第二信息记录项,利用所述第二信息记录项对所述至少两个数据表进行表连接,得到第二结果集;拼接单元,用于将所述第一结果集和所述第二结果集进行拼接,得到所述至少两个数据表的连接结果。
进一步地,所述表连接单元包括:确定模块,用于确定所述至少两个数据表的连接序列;表连接模块,用于利用所述各个数据表中的第二信息记录项,按照所述连接序列对所述至少两个数据表进行表连接。
进一步地,所述表连接模块包括:执行模块,用于将所述连接序列中第一个数据表初始化为当前表,调用第一获取模块、连接模块、处理模块从所述第一个数据表开始执行表连接操作,直至将所述至少两个数据表连接完成;
第一获取模块,用于获取所述连接序列中所述当前表的下一表;连接模块,用于利用所述下一表中的所述第二信息记录项,连接所述当前表和所述下一表,得到中间结果;处理模块,用于将所述中间结果作为下一次所述表连接操作的当前表。
进一步地,所述连接模块包括:第二获取模块,用于获取所述下一表中的第二信息记录项,其中,所述第二信息记录项中记录有目标属性参数的目标属性信息,所述至少两个属性参数包括所述目标属性参数;提取模块,用于在第二信息记录项中记录的目标属性信息存在于所述当前表的情况下,提取所述第二信息记录项,得到所述中间结果。
进一步地,所述装置还包括:第二获取单元,用于在得到所述至少两个数据表的连接结果之后,从所述连接结果中获取待统计的属性参数的属性信息,其中,所述至少两个属性参数包括所述待统计的属性参数;统计单元,用于统计获取到的属性信息。
进一步地,所述拼接单元包括:获得模块,用于将所述第一结果集和所述第二结果集合并,得到所述连接结果。
在本申请实施例中,在进行表连接之前,基于表中记录信息存在的对应关系对数据表记录的信息进行标注,如一对一关系(即上述的第一关联关系)或非一对一关系(即上述的第二关联关系)使用不同标识符标注出来。在进行表连接时,将所有表中具有第一关联关系的数据保存为第一结果集,基于表中记录的第二关联关系进行表连接,得到第二结果集,将第一结果集和第二结果集进行拼接,得到表连接的连接结果。在上述实施例中,由于在进行表连接时,未对表中记录的一对一的关系进行表连接,通过对至少两个数据表中符合第二关联关系属性参数的属性信息进行表连接,而不是采用现有技术中的直接对数据表所有信息进行表连接的方式,该方案将大部分多对多转换成一对一,仅当需要多对多时,才发生多对多的表连接,减少表连接的表大小,使其能高效的处理大部分数据为一对多的情况,解决了现有技术中存在多种不同对应关系的数据表的连接效率低的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种数据表的连接方法的流程图;以及
图2是根据本申请实施例的一种数据表的连接装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本申请实施例,提供了一种数据表的连接方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本申请实施例的一种数据表的连接方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,获取待进行表连接的至少两个数据表,其中,至少两个数据表中各个数据表中记录有至少两个属性参数。
步骤S104,在至少两个数据表中添加用于标识至少两个属性参数之间关联关系的标识符,其中,关联关系包括第一关联关系和第二关联关系,第一关联关系为至少两个属性参数的属性信息一一对应的关系,第二关联关系为至少两个属性参数的属性信息多对多的对应关系。
步骤S106,基于标识符从各个数据表中查找出具有第一关联关系的第一信息记录项,得到第一结果集。
步骤S108,基于标识符查找出各个数据表中具有第二关联关系的第二信息记录项,利用第二信息记录项对至少两个数据表进行表连接,得到第二结果集;
步骤S110,将第一结果集和第二结果集进行拼接,得到至少两个数据表的连接结果。
采用本申请上述实施例,在进行表连接之前,基于表中记录信息存在的对应关系对数据表记录的信息进行标注,如一对一关系(即上述的第一关联关系)或非一对一关系(即上述的第二关联关系)使用不同标识符标注出来。在进行表连接时,将所有表中具有第一关联关系的数据保存为第一结果集,基于表中记录的第二关联关系进行表连接,得到第二结果集,将第一结果集和第二结果集进行拼接,得到表连接的连接结果。在上述实施例中,由于在进行表连接时,未对表中记录的一对一的关系进行表连接,通过对至少两个数据表中符合第二关联关系属性参数的属性信息进行表连接,而不是采用现有技术中的直接对数据表所有信息进行表连接的方式,该方案将大部分多对多转换成一对一,仅当需要多对多时,才发生多对多的表连接,减少表连接的表大小,使其能高效的处理大部分数据为一对多的情况,解决了现有技术中存在多种不同对应关系的数据表的连接效率低的技术问题。
具体地,上述实施例中第二关联关系可以包含至少两个属性参数的属性信息的一对多、多对一及多对多的情况,其中,上述实施例将一对多、多对一及多对多这三种情况统称为多对多的对应关系。
在上述实施例中,属性参数可以为该至少两个数据表中的每一列的首字段,也即列名称,如订单数;属性参数的属性信息可以为数据表中每一列中属性参数所对应的数值、特征参数等属性信息,如订单数的具体数量信息;第一信息记录项和第二信息记录项可以包括该至少两个数据表中的每一行数据,其中可以包括各个属性参数对应的多个属性信息,各个信息记录项中的属性信息存在第一关联关系或者第二关联关系,如,会话订单表中的包括会话信息和订单信息的某一行数据可以为第一信息记录项或者第二信息记录项,该第一信息记录项或者第二信息记录项中可以包括会话信息和订单信息的关联关系。
下面以两个数据表的表连接为例,对上述实施例中的方法进行介绍。
可以先获取待进行表连接的两个数据表,分别为会话表Session和订单表Order,这两个数据表中各个数据表用于记录会话和订单这两个属性参数之间的关联关系。
然后可以从该两个数据表中选取用于记录会话和订单一一对应的第一关联关系的第一信息记录项,得到第一结果集,其中,会话和订单一一对应的关系也叫做一对一的关系。
再利用各个数据表中用于记录非一一对应的第二关联关系的第二信息记录项,对至少两个数据表进行表连接,得到第二结果集,其中,该第二关联关系可以称之为多对多关系,该多对多关系非一一对应的关系,其可以包括一个会话对应多个订单的一对多关系、多个会话对应一个订单的多对一关系,也可以包括多个会话对应多个订单的多对多关系。
最后,将第一结果集和第二结果集合并,得到至少会话和订单的两个数据表的连接结果。
可选地,上述步骤S108中的利用第二信息记录项对至少两个数据表进行表连接操作可以包括:确定至少两个数据表的连接序列;利用各个数据表中的第二信息记录项,按照连接序列对至少两个数据表进行表连接。
在上述实施例中,在对数据表进行表连接时,可以先确定该至少两个数据表中的连接序列,即该至少两个数据表的顺序,按照该连接序列的数据表的先后顺序,利用各个数据表中的记录有各个属性参数的属性信息的关联关系的第二信息记录项,对至少两个数据表进行表连接。
在一个可选的实施例中,利用各个数据表中的第二信息记录项,按照连接序列对至少两个数据表进行表连接包括:将连接序列中第一个数据表初始化为当前表,从第一个数据表开始执行如下表连接操作,直至将至少两个数据表连接完成:获取连接序列中当前表的下一表;利用下一表中的第二信息记录项,连接当前表和下一表,得到中间结果;将中间结果作为下一次表连接操作的当前表。
在上述实施例中,将至少两个数据表中需要进行表连接的属性参数的参数信息,可以按顺序分别进行两两表连接,也即先连接序列中的第一个表和第二个表,此时第一个表为当前表,第二个表为当前表为第一表时的下一表,利用第二个表中的第二信息记录项,得到一个表连接的中间结果,然后将该中间结果与第三个表进行连接,此时,该中间结果为当前表,第三个表为该当前表的下一表,连接时按照第三个表中的第二信息记录项进行连接,以此类推,将该至少两个数据表中的所有表进行连接。通过上述实施例,可以实现多个数据表高效表连接的效果。
在另一个可选的实施例中,可以在将会话表和订单表进行表连接时,先确定两个表的连接顺序,得到连接序列,将会话表和订单表中的记录有会话和订单的非一一对应的第二关联关系的第二信息记录项进行表连接。
通过上述实施例,可以实现对数据表进行筛选,将各个数据参数中一一对应的第一关联关系的第一信息记录项筛除,而利用各个数据表中的记录有各个属性参数的属性信息的关联关系的第二信息记录项,对至少两个数据表进行表连接,从而节省了表连接的开销,提升了表连接和查询的效率。
可选地,利用下一表中的第二信息记录项,连接当前表和下一表,得到中间结果包括:获取下一表中的第二信息记录项,其中,第二信息记录项中记录有目标属性参数的目标属性信息,至少两个属性参数包括目标属性参数;在第二信息记录项中记录的目标属性信息存在于当前表的情况下,提取第二信息记录项,得到中间结果。
在上述可选的实施例中,将当前表和下一表进行表连接时,可以将目标属性参数作为连接的条件,当该当前表和下一表的目标属性参数相等时,提取第二信息记录项,得到中间结果,从而可以实现将两个表根据目标属性参数来准确连接的效果
可选地,在得到至少两个数据表的连接结果之后,该方法还包括:从连接结果中获取待统计的属性参数的属性信息,其中,至少两个属性参数包括待统计的属性参数;统计获取到的属性信息。
在上述实施例中,在将至少两个数据表进行表连接得到连接结果之后,可以从连接结果中获取待统计的属性参数的属性信息,然后将待统计的属性参数的属性信息进行统计,并根据得到的统计结果,将至少两个数据表进行分组,通过上述实施例,可以实现表连接后高效获取属性信息的效果。
可选地,将第一结果集和第二结果集进行拼接,得到至少两个数据表的连接结果包括:将第一结果集和第二结果集合并,得到连接结果。
通过上述实施例,可以通过将第一结果集和第二结果集进行集合拼接或者合并,得到连接结果,该连接结果即为两个数据表的连接结果,可以实现获得准确的数据表连接结果的效果。
可选地,在获取待进行表连接的至少两个数据表之后,该方法还包括:在数据表中的当前信息记录项记录的关联关系为第一关联关系的情况下,为当前信息记录项添加第一标识符;在当前信息记录项记录的关联关系为第二关联关系的情况下,为当前信息记录项添加第二标识符。
在上述实施例中,可以通过将数据表中添加标识符来实现对数据表中的属性参数的属性信息之间的第一关联关系和第二关联关系的有效区分,从而提高数据表连接的效率。
在真实的数据里,会存在一对一关系,即上述一一对应关系和第一关联关系,即一个会话对应一个订单;同时,也会存在多对多的关系,即上述的第二关联关系,以会话和订单的关系来举例说明,该多对多关系为:多个会话可以对应多个订单,一个对话可以但大部分的多对多,实则上是一对多,如会话和订单的关系,大部分情况下,一个会话没有任何订单,少部分情况有一个订单,少量情况下有多个订单,针对类似这样的数据,可以通过上述实施例中的方法来提高至少两个数据表的表连接和查询效率。
上述实施例中的方法可以通过在(Extract-Transformation-Load,将数据从来源端经过抽取、转换、加载至目的端的过程)ETL阶段添加相应的多对多标识符,从而在查询阶段能够分析出哪些会话是有多个订单的,从而仅会选取出那些需要进行表连接数据,再进行表连接,哪些会话没有产生订单,或是仅产生了一个订单的,则不会发生表连接行为,这样极大的减少了表连接的数据量,从而极大的提升了性能。
下面举例说明上述实施例中的方法,其中的Order可直接对应电商领域的订单应用。
在一个可选的实施例中,将大部分多对多转换成一对一关系,也即将至少两个表连接中的所有关系转换为第一关联关系,当需要多对多时,才发生多对多的表连接,也即当第二关联关系的各个数据表需要进行表连接时,在进行表连接,以减少表连接的表大小,使其能高效的处理为一对多的情况的大部分数据。
若需要处理两个表为会话Session表(即表一)和订单Order表(即表二),其表结构设计如下所示:
表一
表二
其中,表一和表二中的Session id表示会话的属性参数,S1和S2表示订单的属性参数Session id对应的属性信息,Order Test ID表示订单的属性参数,1、1、2表示订单的属性参数Order Test ID对应的订单数的属性信息,Is One To One为标识符,可以标识出表中的每行会话的属性参数Session id对应的属性信息和订单的属性参数Order Test ID对应的订单数的属性信息之间的关联关系,如表一和表二中所示,当该关联关系为一一对应的第一关联关系时,该标识符的值为1,当该关联关系为非一一对应的第二关联关系时,该标识符的值为0。
用下述步骤构造动态构造Order表的相关数据。
1.找出Order One的所有数据,其中,Order One的数据为表一和表二中的标识符为1时所对应行的Session id和Order Test ID的属性参数。
2.找出Order Many的所有数据,其中,Order Many的所有数据为先选取表一中的标识符为0时所对应的行的Session id和Order Test ID的属性参数,再将标识符为0时所对应的该Session id和Order Test ID的属性参数与表二以Session id为基准进行表连接,然后,选取表连接后的Session id和Order Test ID的属性参数。
3.将Order One和Order Many直接进行合并Union All操作,拼成一个集合。
在一个可选的实施例中,可以以Order Test ID为剖析维度,以Session Count为剖析指标来进行表连接操作。
上述实施例可以通过如下程序实现,其中,下面的程序的步骤分别对应于上述找出Order One的所有数据,找出Order Many的所有数据以及将Order One和Order Many直接进行合并Union All操作,拼成一个集合的操作,其具体程序如下:
With Order One as(
Select session id,Order Test ID From session Where Is One To One=1
),Order Many as(
Select distinct Order.session id,Order.Order Test ID From Sessioninner join Order on Session.Is One To One=0and Session.session id=Order.session id
),Order All as(
Select session id,abtest id from Order One Union all Select sessionid,abtest id from Order Many
)
Select Order Test Id,count(*)as Session Count
From Order All
Group by Order Test Id
对比现有多对多设计Sql查询语句:
With Order as(
Select distinct Order.Session id,Order.Order Test ID From Order
)
Select Order Test Id,count(*)as Session Count
From Session inner join Order on Session.session id=Order.session id
可以得知,通过上述实施例,可以使得查询性能随着一对一的数据(即一一对应的第一关联关系的数据)增多而加快,并且可在星型实体表里也添加是否一对一的标识,从而保留各实体数据的完整性。
实施例2
根据本申请实施例的另一方面,还提供了一种数据表的连接装置,图2是根据本申请实施例的一种数据表的连接装置的示意图,如图2所示,该装置包括:第一获取单元10、添加单元20、查找单元30、表连接单元40以及拼接单元50,其中:
第一获取单元10,用于获取待进行表连接的至少两个数据表,其中,至少两个数据表中各个数据表中记录有至少两个属性参数。
添加单元20,用于在至少两个数据表中添加用于区分至少两个属性参数之间的第一关联关系和第二关联关系的标识符,其中,第一关联关系用于指示至少两个属性参数的属性信息一一对应,第二关联关系为至少两个属性参数的属性信息多对多的对应关系。
查找单元30,用于基于标识符从各个数据表中查找出用于记录第一关联关系的第一信息记录项,得到第一结果集。
表连接单元40,用于基于标识符查找出各个数据表中用于记录第二关联关系的第二信息记录项,利用第二信息记录项对至少两个数据表进行表连接,得到第二结果集。
拼接单元50,用于将第一结果集和第二结果集进行拼接,得到至少两个数据表的连接结果。
采用本申请上述实施例,在进行表连接之前,基于表中记录信息存在的对应关系对数据表记录的信息进行标注,如一对一关系(即上述的第一关联关系)或非一对一关系(即上述的第二关联关系)使用不同标识符标注出来。在进行表连接时,将所有表中具有第一关联关系的数据保存为第一结果集,基于表中记录的第二关联关系进行表连接,得到第二结果集,将第一结果集和第二结果集进行拼接,得到表连接的连接结果。在上述实施例中,由于在进行表连接时,未对表中记录的一对一的关系进行表连接,通过对至少两个数据表中符合第二关联关系属性参数的属性信息进行表连接,而不是采用现有技术中的直接对数据表所有信息进行表连接的方式,该方案将大部分多对多转换成一对一,仅当需要多对多时,才发生多对多的表连接,减少表连接的表大小,使其能高效的处理大部分数据为一对多的情况,解决了现有技术中存在多种不同对应关系的数据表的连接效率低的技术问题。
采用本申请上述实施例,在进行表连接之前,基于表中记录信息存在的对应关系对数据表记录的信息进行标注,如一对一关系(即上述的第一关联关系)或非一对一关系(即上述的第二关联关系)使用不同标识符标注出来。在进行表连接时,将所有表中具有第一关联关系的数据保存为第一结果集,基于表中记录的第二关联关系进行表连接,得到第二结果集,将第一结果集和第二结果集进行拼接,得到表连接的连接结果。在上述实施例中,由于在进行表连接时,未对表中记录的一对一的关系进行表连接,通过对至少两个数据表中符合第二关联关系属性参数的属性信息进行表连接,而不是采用现有技术中的直接对数据表所有信息进行表连接的方式,该方案将大部分多对多转换成一对一,仅当需要多对多时,才发生多对多的表连接,减少表连接的表大小,使其能高效的处理大部分数据为一对多的情况,解决了现有技术中存在多种不同对应关系的数据表的连接效率低的技术问题。
可选地,表连接单元包括:确定模块,用于确定至少两个数据表的连接序列;表连接模块,用于利用各个数据表中的第二信息记录项,按照连接序列对至少两个数据表进行表连接。
在上述实施例中,在对数据表进行表连接时,可以先确定该至少两个数据表中的连接序列,即该至少两个数据表的顺序,按照该连接序列的数据表的先后顺序,利用各个数据表中的记录有各个属性参数的属性信息的关联关系的第二信息记录项,对至少两个数据表进行表连接。
可选地,表连接模块包括:执行模块,用于将连接序列中第一个数据表初始化为当前表,调用第一获取模块、连接模块、处理模块从第一个数据表开始执行表连接操作,直至将至少两个数据表连接完成;第一获取模块,用于获取连接序列中当前表的下一表;连接模块,用于利用下一表中的第二信息记录项,连接当前表和下一表,得到中间结果;处理模块,用于将中间结果作为下一次表连接操作的当前表。
在上述实施例中,将至少两个数据表中需要进行表连接的属性参数的参数信息,可以按顺序分别进行两两表连接,也即先连接序列中的第一个表和第二个表,此时第一个表为当前表,第二个表为当前表为第一表时的下一表,利用第二个表中的第二信息记录项,得到一个表连接的中间结果,然后将该中间结果与第三个表进行连接,此时,该中间结果为当前表,第三个表为该当前表的下一表,连接时按照第三个表中的第二信息记录项进行连接,以此类推,将该至少两个数据表中的所有表进行连接。通过上述实施例,可以实现多个数据表高效表连接的效果。
可选地,连接模块包括:第二获取模块,用于获取下一表中的第二信息记录项,其中,第二信息记录项中记录有目标属性参数的目标属性信息,至少两个属性参数包括目标属性参数;提取模块,用于在第二信息记录项中记录的目标属性信息存在于当前表的情况下,提取第二信息记录项,得到中间结果。
在上述可选的实施例中,将当前表和下一表进行表连接时,可以将目标属性参数作为连接的条件,当该当前表和下一表的目标属性参数相等时,提取第二信息记录项,得到中间结果,从而可以实现将两个表根据目标属性参数来准确连接的效果
可选地,该装置还包括:第二获取单元,用于在得到至少两个数据表的连接结果之后,从连接结果中获取待统计的属性参数的属性信息,其中,至少两个属性参数包括待统计的属性参数;统计单元,用于统计获取到的属性信息。
在上述实施例中,在将至少两个数据表进行表连接得到连接结果之后,可以从连接结果中获取待统计的属性参数的属性信息,然后将待统计的属性参数的属性信息进行统计,并根据得到的统计结果,将至少两个数据表进行分组,通过上述实施例,可以实现表连接后高效获取属性信息的效果。
可选地,拼接单元包括:获得模块,用于将第一结果集和第二结果集合并,得到连接结果。
通过上述实施例,可以通过将第一结果集和第二结果集进行集合拼接或者合并,得到连接结果,该连接结果即为两个数据表的连接结果,可以实现获得准确的数据表连接结果的效果。
可选地,在获取待进行表连接的至少两个数据表之后,该方法还包括:在数据表中的当前信息记录项记录的关联关系为第一关联关系的情况下,为当前信息记录项添加第一标识符;在当前信息记录项记录的关联关系为第二关联关系的情况下,为当前信息记录项添加第二标识符。
在上述实施例中,可以通过将数据表中添加标识符来实现对数据表中的属性参数的属性信息之间的第一关联关系和第二关联关系的有效区分,从而提高数据表连接的效率。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
该数据表的连接装置包括处理器和存储器,上述第一获取单元10、添加单元20、查找单元30、表连接单元40以及拼接单元50等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来减少表连接的表大小,从而实现了提高数据表的连接效率的技术效果,进而解决了存在多种不同对应关系的数据表的连接效率低的技术问题。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:获取待进行表连接的至少两个数据表,其中,至少两个数据表中各个数据表中记录有至少两个属性参数;在至少两个数据表中添加用于标识至少两个属性参数之间关联关系的标识符,其中,关联关系包括第一关联关系和第二关联关系,第一关联关系为至少两个属性参数的属性信息一一对应的关系,第二关联关系为至少两个属性参数的属性信息多对多的对应关系;基于标识符从各个数据表中查找出具有第一关联关系的第一信息记录项,得到第一结果集;基于标识符查找出各个数据表中具有第二关联关系的第二信息记录项,利用第二信息记录项对至少两个数据表进行表连接,得到第二结果集;将第一结果集和第二结果集进行拼接,得到至少两个数据表的连接结果。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来简化数据表的连接步骤,从而实现了提高数据表的连接效率的技术效果,进而解决了一对多和多对多关系的数据表的连接效率低的技术问题。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种数据表的连接方法,其特征在于,包括:
获取待进行表连接的至少两个数据表,其中,所述至少两个数据表中各个数据表中记录有至少两个属性参数;
在所述至少两个数据表中添加用于标识所述至少两个属性参数之间关联关系的标识符,其中,所述关联关系包括第一关联关系和第二关联关系,所述第一关联关系为所述至少两个属性参数的属性信息一一对应的关系,所述第二关联关系包括所述至少两个属性参数的属性信息的一对多、多对一以及多对多的对应关系;
基于所述标识符从各个数据表中查找出具有第一关联关系的第一信息记录项,得到第一结果集;
基于所述标识符查找出各个所述数据表中具有第二关联关系的第二信息记录项,利用所述第二信息记录项对所述至少两个数据表进行表连接,得到第二结果集;
将所述第一结果集和所述第二结果集进行拼接,得到所述至少两个数据表的连接结果。
2.根据权利要求1所述的方法,其特征在于,利用所述第二信息记录项对所述至少两个数据表进行表连接包括:
确定所述至少两个数据表的连接序列;
利用所述各个数据表中的第二信息记录项,按照所述连接序列对所述至少两个数据表进行表连接。
3.根据权利要求2所述的方法,其特征在于,利用所述各个数据表中的第二信息记录项,按照所述连接序列对所述至少两个数据表进行表连接包括:
将所述连接序列中第一个数据表初始化为当前表,从所述第一个数据表开始执行如下表连接操作,直至将所述至少两个数据表连接完成:
获取所述连接序列中所述当前表的下一表;
利用所述下一表中的所述第二信息记录项,连接所述当前表和所述下一表,得到中间结果;
将所述中间结果作为下一次所述表连接操作的当前表。
4.根据权利要求3所述的方法,其特征在于,利用所述下一表中的所述第二信息记录项,连接所述当前表和所述下一表,得到中间结果包括:
获取所述下一表中的第二信息记录项,其中,所述第二信息记录项中记录有目标属性参数的目标属性信息,所述至少两个属性参数包括所述目标属性参数;
在第二信息记录项中记录的目标属性信息存在于所述当前表的情况下,提取所述第二信息记录项,得到所述中间结果。
5.根据权利要求1至4中任意一项所述的方法,其特征在于,在得到所述至少两个数据表的连接结果之后,所述方法还包括:
从所述连接结果中获取待统计的属性参数的属性信息,其中,所述至少两个属性参数包括所述待统计的属性参数;
统计获取到的属性信息。
6.根据权利要求1至4中任意一项所述的方法,其特征在于,将所述第一结果集和所述第二结果集进行拼接,得到所述至少两个数据表的连接结果包括:
将所述第一结果集和所述第二结果集合并,得到所述连接结果。
7.一种数据表的连接装置,其特征在于,包括:
第一获取单元,用于获取待进行表连接的至少两个数据表,其中,所述至少两个数据表中各个数据表中记录有至少两个属性参数;
添加单元,用于在所述至少两个数据表中添加用于区分所述至少两个属性参数之间的第一关联关系和第二关联关系的标识符,其中,所述第一关联关系用于指示所述至少两个属性参数的属性信息一一对应,所述第二关联关系包括所述至少两个属性参数的属性信息的一对多、多对一以及多对多的对应关系;
查找单元,用于基于所述标识符从所述各个数据表中查找出用于记录第一关联关系的第一信息记录项,得到第一结果集;
表连接单元,用于基于所述标识符查找出所述各个数据表中用于记录第二关联关系的第二信息记录项,利用所述第二信息记录项对所述至少两个数据表进行表连接,得到第二结果集;
拼接单元,用于将所述第一结果集和所述第二结果集进行拼接,得到所述至少两个数据表的连接结果。
8.根据权利要求7所述的装置,其特征在于,所述表连接单元包括:
确定模块,用于确定所述至少两个数据表的连接序列;
表连接模块,用于利用所述各个数据表中的第二信息记录项,按照所述连接序列对所述至少两个数据表进行表连接。
9.根据权利要求8所述的装置,其特征在于,所述表连接模块包括:
执行模块,用于将所述连接序列中第一个数据表初始化为当前表,调用第一获取模块、连接模块、处理模块从所述第一个数据表开始执行表连接操作,直至将所述至少两个数据表连接完成;
第一获取模块,用于获取所述连接序列中所述当前表的下一表;
连接模块,用于利用所述下一表中的所述第二信息记录项,连接所述当前表和所述下一表,得到中间结果;
处理模块,用于将所述中间结果作为下一次所述表连接操作的当前表。
10.根据权利要求9所述的装置,其特征在于,所述连接模块包括:
第二获取模块,用于获取所述下一表中的第二信息记录项,其中,所述第二信息记录项中记录有目标属性参数的目标属性信息,所述至少两个属性参数包括所述目标属性参数;
提取模块,用于在第二信息记录项中记录的目标属性信息存在于所述当前表的情况下,提取所述第二信息记录项,得到所述中间结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511032616.8A CN106933919B (zh) | 2015-12-31 | 2015-12-31 | 数据表的连接方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511032616.8A CN106933919B (zh) | 2015-12-31 | 2015-12-31 | 数据表的连接方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106933919A CN106933919A (zh) | 2017-07-07 |
CN106933919B true CN106933919B (zh) | 2020-03-03 |
Family
ID=59444771
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511032616.8A Active CN106933919B (zh) | 2015-12-31 | 2015-12-31 | 数据表的连接方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106933919B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108268586B (zh) * | 2017-09-22 | 2020-06-16 | 阿里巴巴(中国)有限公司 | 跨多数据表的数据处理方法、装置、介质和计算设备 |
CN109697066B (zh) * | 2018-12-28 | 2021-02-05 | 第四范式(北京)技术有限公司 | 实现数据表拼接及自动训练机器学习模型的方法和系统 |
CN111506670B (zh) * | 2019-01-31 | 2023-07-18 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、装置及设备 |
CN109947804B (zh) * | 2019-03-20 | 2021-04-06 | 上海达梦数据库有限公司 | 数据集合查询的优化方法、装置、服务器和存储介质 |
CN114372097B (zh) * | 2021-12-30 | 2022-11-22 | 北京达梦数据库技术有限公司 | 一种数据集列序列化的高效连接比对实现方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6745174B2 (en) * | 2001-03-29 | 2004-06-01 | Hewlett-Packard Development Company, L.P. | Method of executing before-triggers in an active database |
CN101067820A (zh) * | 2007-06-08 | 2007-11-07 | 北京大学 | 预取对象的方法 |
CN101799807A (zh) * | 2009-02-10 | 2010-08-11 | 中国移动通信集团公司 | 一种异构数据表的合并方法及其系统 |
CN102521303A (zh) * | 2011-11-30 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 一种用于列数据库的单表多列序存储方法 |
CN104731729A (zh) * | 2015-03-23 | 2015-06-24 | 华为技术有限公司 | 一种基于异构系统的表连接优化方法、cpu和加速器 |
-
2015
- 2015-12-31 CN CN201511032616.8A patent/CN106933919B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6745174B2 (en) * | 2001-03-29 | 2004-06-01 | Hewlett-Packard Development Company, L.P. | Method of executing before-triggers in an active database |
CN101067820A (zh) * | 2007-06-08 | 2007-11-07 | 北京大学 | 预取对象的方法 |
CN101799807A (zh) * | 2009-02-10 | 2010-08-11 | 中国移动通信集团公司 | 一种异构数据表的合并方法及其系统 |
CN102521303A (zh) * | 2011-11-30 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 一种用于列数据库的单表多列序存储方法 |
CN104731729A (zh) * | 2015-03-23 | 2015-06-24 | 华为技术有限公司 | 一种基于异构系统的表连接优化方法、cpu和加速器 |
Non-Patent Citations (2)
Title |
---|
云计算环境下的多数据集连接优化;周梦雪;《中国优秀硕士学位论文全文数据库 信息科技辑》;20131115(第11期);I138-593 * |
混合存储下的MapReduce启发式多表连接优化;王梅 等;《计算机科学与探索》;20140818(第11期);第1334-1344页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106933919A (zh) | 2017-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106933919B (zh) | 数据表的连接方法及装置 | |
CN104281672B (zh) | 日志数据的处理方法和装置 | |
US20170132260A1 (en) | Data storage method and apparatus | |
CN108268586B (zh) | 跨多数据表的数据处理方法、装置、介质和计算设备 | |
CN111400392B (zh) | 多源异构数据处理方法及装置 | |
CN106933897B (zh) | 数据查询方法和装置 | |
CN106933893B (zh) | 多维度数据的查询方法及装置 | |
CN109885614B (zh) | 一种数据同步的方法和装置 | |
CN106611024B (zh) | 文件合并方法和装置 | |
CN111506608A (zh) | 一种结构化文本的比较方法和装置 | |
CN111143359A (zh) | 查询语句生成方法及装置 | |
CN106933916B (zh) | Json字符串的处理方法及装置 | |
CN106874322A (zh) | 一种数据表关联方法和装置 | |
CN106933927B (zh) | 数据表的连接方法和装置 | |
CN104462396A (zh) | 字符串处理方法和装置 | |
CN106933903B (zh) | 应用于分布式存储的存储方法及装置 | |
CN114138869A (zh) | 一种企业信用数据处理方法及装置 | |
JP4973738B2 (ja) | 業務フロー処理プログラム、方法及び装置 | |
CN105550220A (zh) | 一种异构系统的取数的方法及装置 | |
CN106933926B (zh) | 数据表的过滤方法及装置 | |
CN110019357B (zh) | 数据库查询脚本生成方法及装置 | |
CN115756486A (zh) | 一种数据接口解析方法及装置 | |
CN104268277A (zh) | 用于数据库的数据读取方法及装置 | |
CN106933933B (zh) | 数据表信息的处理方法及装置 | |
CN115687599A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing Applicant after: Beijing Guoshuang Technology Co.,Ltd. Address before: 100086 Cuigong Hotel, 76 Zhichun Road, Shuangyushu District, Haidian District, Beijing Applicant before: Beijing Guoshuang Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |