生成描述信息的方法及装置与流程

文档序号:11199211阅读:729来源:国知局
生成描述信息的方法及装置与流程

本发明涉及计算机领域,具体而言,涉及一种生成描述信息的方法及装置。



背景技术:

目前,随着大数据技术的迅猛发展,如何便于业务人员快速分析数据,是大数据应用需要解决的关键问题。

业务人员经常需要基于基础数据进行各种统计分析,该过程通常需要编写sql语句在数据库中运行。例如:对于基于多张数据表的统计分析,需要采用人工方式通过数据表的元信息来获取数据表之间的连接关系。假设第一张数据表包含有3个字段,其分别为:设备标识(id)、日期以及设备状态;第二张数据表包含有2个字段,其分别为:设备id和公司id;第三张数据表包含有2个字段,其分别为:公司id和公司名称,那么通过数据表的元信息可以获知,第一张数据表和第二张数据表可以通过“设备id”加以连接,第二张数据表和第三张数据表可以通过“公司id”加以连接,通过连接这三张数据表,可以分析出每个公司在预设时间段内(例如:最近1个月)发生的特定事件(例如:设备故障率)。

对于casebycase的统计分析,表连接语句可以根据特定案例来编写,即业务人员需要为每个案例分别定制不同的sql语句。然而,正是由于casebycase的统计分析方式需要针对每个案例分别编写sql语句,由此易造成此种操作方式不仅工作效率较低,而且发生错误的概率较高。

因此,相关技术中并没有提供在给定若干张数据表且可获知数据表之间的关系的情况下,如何通过采用自动生成合法的表连接sql语句的实现方式来完成数据分析。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种生成描述信息的方法及装置,以至少解决相关技术中无法在给定若干张数据表且可获知数据表之间的关系的情况下,通过采用自动生成合法的表连接sql语句的实现方式来完成数据分析的技术问题。

根据本发明实施例的一个方面,提供了一种生成描述信息的方法,包括:获取多张数据表中每张数据表所包含的字段信息;根据字段信息确定多张数据表相互间的关联关系;利用多张数据表相互间的关联关系生成描述信息,其中,描述信息用于记录多张数据表相互间的连接次序以及相邻数据表之间所使用的连接条件。

可选地,根据字段信息确定多张数据表相互间的关联关系包括:选取步骤:从多张数据表中选取任意一张待遍历的数据表;查找步骤:查找与选取的数据表所包含的字段信息中具有一个或多个相同字段的数据表,并将查找到的数据表设置为选取的数据表的待连接数据表;在选取的数据表与待连接数据表之间建立关联关系;返回选取步骤,直至多张数据表被全部遍历。

可选地,利用多张数据表相互间的关联关系生成描述信息包括:按照多张数据表相互间的关联关系从初始遍历的数据表开始依次获取下一个遍历的数据表的标识信息,与下一个遍历的数据表相邻接的数据表的标识信息以及下一个遍历的数据表与邻接的数据表之间的连接条件,其中,邻接的数据表为已经遍历过的数据表;采用获取到的下一个遍历的数据表的标识信息,邻接的数据表的标识信息以及下一个遍历的数据表与邻接的数据表之间的连接条件生成描述信息。

可选地,采用获取到的下一个遍历的数据表的标识信息,邻接的数据表的标识信息以及下一个遍历的数据表与邻接的数据表之间的连接条件生成描述信息包括:先根据下一个遍历的数据表的标识信息和邻接的数据表的标识信息建立下一个遍历的数据表与邻接的数据表之间的关联关系后,再记录下一个遍历的数据表与邻接的数据表之间的连接条件,分别生成与已经遍历的数据表对应的分段连接信息;联合全部分段连接信息,生成描述信息。

可选地,如果下一个遍历的数据表同时与多个数据表相邻接和/或下一个遍历的数据表与部分相邻接的数据表存在多个相同的字段时,则记录的下一个遍历的数据表与邻接的数据表之间的连接条件是由下一个遍历的数据表与多个数据表相邻接所产生的连接条件和/或由下一个遍历的数据表与部分相邻接的数据表存在多个相同的字段所产生的连接条件的并集。

根据本发明实施例的另一方面,还提供了一种生成描述信息的装置,包括:获取模块,用于获取多张数据表中每张数据表所包含的字段信息;确定模块,用于根据字段信息确定多张数据表相互间的关联关系;生成模块,用于利用多张数据表相互间的关联关系生成描述信息,其中,描述信息用于记录多张数据表相互间的连接次序以及相邻数据表之间所使用的连接条件。

可选地,确定模块包括:选取单元,用于从多张数据表中选取任意一张待遍历的数据表;查找单元,用于查找与选取的数据表所包含的字段信息中具有一个或多个相同字段的数据表,并将查找到的数据表设置为选取的数据表的待连接数据表;建立单元,用于在选取的数据表与待连接数据表之间建立关联关系;返回选取单元,直至多张数据表被全部遍历。

可选地,生成模块包括:获取单元,用于按照多张数据表相互间的关联关系从初始遍历的数据表开始依次获取下一个遍历的数据表的标识信息,与下一个遍历的数据表相邻接的数据表的标识信息以及下一个遍历的数据表与邻接的数据表之间的连接条件,其中,邻接的数据表为已经遍历过的数据表;生成单元,用于采用获取到的下一个遍历的数据表的标识信息,邻接的数据表的标识信息以及下一个遍历的数据表与邻接的数据表之间的连接条件生成描述信息。

可选地,生成单元包括:第一生成子单元,用于先根据下一个遍历的数据表的标识信息和邻接的数据表的标识信息建立下一个遍历的数据表与邻接的数据表之间的关联关系后,再记录下一个遍历的数据表与邻接的数据表之间的连接条件,分别生成与已经遍历的数据表对应的分段连接信息;第二生成子单元,用于联合全部分段连接信息,生成描述信息。

可选地,第一生成子单元,用于在下一个遍历的数据表同时与多个数据表相邻接和/或下一个遍历的数据表与部分相邻接的数据表存在多个相同的字段时,则记录的下一个遍历的数据表与邻接的数据表之间的连接条件是由下一个遍历的数据表与多个数据表相邻接所产生的连接条件和/或由下一个遍历的数据表与部分相邻接的数据表存在多个相同的字段所产生的连接条件的并集。

在本发明实施例中,采用通过获取多张数据表中每张数据表所包含的字段信息并根据字段信息确定多张数据表相互间的关联关系的方式,利用多张数据表相互间的关联关系生成用于记录多张数据表相互间的连接次序以及相邻数据表之间所使用的连接条件的描述信息,达到了不需要人工参与便可以自动生成上述描述信息(例如:合法的表连接sql语句)来完成数据分析的目的,从而实现了通过自动生成数据表之间相互关系的描述信息不仅提高了数据分析效率而且还提升了数据分析结果准确性的技术效果,进而解决了相关技术中无法在给定若干张数据表且可获知数据表之间的关系的情况下,通过采用自动生成合法的表连接sql语句的实现方式来完成数据分析的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是本发明实施例的一种生成描述信息的方法的计算机终端的硬件结构框图;

图2是根据本发明实施例的生成描述信息的方法的流程图;

图3是根据本发明优选实施例的在多张数据表的相互间建立完整的拓扑结构的示意图;

图4是根据本发明优选实施例的生成描述信息的方法的示意图;

图5是根据本发明实施例的生成描述信息的装置的结构框图;

图6是根据本发明优选实施例的生成描述信息的装置的结构框图;

图7是根据本发明实施例的一种计算机终端的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

根据本发明实施例,还提供了一种生成描述信息的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行, 并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本发明实施例的一种生成描述信息的方法的计算机终端的硬件结构框图。如图1所示,计算机终端10可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的生成描述信息的方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的生成描述信息的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(networkinterfacecontroller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。

在上述运行环境下,本申请提供了如图2所示的生成描述信息的方法。图2是根据本发明实施例的生成描述信息的方法的流程图。如图2所示,该方法可以包括以下处理步骤:

步骤s20:获取多张数据表中每张数据表所包含的字段信息;

步骤s22:根据字段信息确定多张数据表相互间的关联关系;

步骤s24:利用多张数据表相互间的关联关系生成描述信息,其中,描述信息用于记录多张数据表相互间的连接次序以及相邻数据表之间所使用的连接条件。

相关技术中,以表连接语句为主的记录多张数据表之间相互关系的描述信息需要 业务人员根据特定案例来进行手工编写,即业务人员需要为每个案例分别定制不同的sql语句,由此不仅造成工作效率较低,而且发生错误的概率也较高。然而,通过本发明实施例所提供的技术方案,采用通过获取多张数据表中每张数据表所包含的字段信息并根据字段信息确定多张数据表相互间的关联关系的方式,利用多张数据表相互间的关联关系生成用于记录多张数据表相互间的连接次序以及相邻数据表之间所使用的连接条件的描述信息,达到了不需要人工参与便可以自动生成上述描述信息(例如:合法的表连接sql语句)来完成数据分析的目的,从而实现了通过自动生成数据表之间相互关系的描述信息不仅提高了数据分析效率而且还提升了数据分析结果准确性的技术效果,尤其是对于批量的数据分析工作而言,其效率提升更为显著,进而解决了相关技术中无法在给定若干张数据表且可获知数据表之间的关系的情况下,通过采用自动生成合法的表连接sql语句的实现方式来完成数据分析的技术问题。

可选地,在步骤s22中,根据字段信息确定多张数据表相互间的关联关系可以包括以下执行步骤:

选取步骤s220:从多张数据表中选取任意一张待遍历的数据表;

查找步骤s222:查找与选取的数据表所包含的字段信息中具有一个或多个相同字段的数据表,并将查找到的数据表设置为选取的数据表的待连接数据表;

建立步骤s224:在选取的数据表与待连接数据表之间建立关联关系;返回选取步骤,直至多张数据表被全部遍历。

在需要建立相互之间的关联关系的多张数据表中,可以先随机选取其中一张数据表作为起始遍历的数据表或者作为参照数据表,然后依次访问其余数据表。由于每张数据表都包含有多个字段(例如:字段1为产品名称,字段2为产品型号,字段3为生产厂商,字段4为使用寿命),因此,在选定其中一张数据表之后,便需要查找与该数据表具有相同字段的其他数据表。此处,具有相同字段的其他数据表可以为一张,当然也可以为多张。在查找到具有相同字段的其他数据表之后,便可以将此类数据表设置为先前选取的数据表的待连接数据表,并建立彼此之间的连接关系。在对当前遍历的数据表的待连接数据表查找完毕后,再继续遍历下一张数据表,以此类推,直至全部数据表均经历过一次遍历,从而在上述多张数据表的相互间建立完整的拓扑结构。

例如:图3是根据本发明优选实施例的在多张数据表的相互间建立完整的拓扑结构的示意图。如图3所示(图3中仅示出多张数据表相互间的相同字段),在该示例中,数据表1包含的字段为:字段1、字段2、字段3和字段4,数据表2包含的字段为:字段1、字段3和字段5,数据表3包含的字段为:字段2、字段5和字段7以及数据 表4包含的字段为:字段7、字段8、字段9和字段10。根据上述分析,首先随机选取数据表1作为起始遍历的数据表或者作为参照数据表,然后依次访问其余数据表。通过比较可以发现,数据表1与数据表2具有相同字段(字段1和字段3)以及数据表1与数据表3具有相同字段(字段2),由此,可以确定数据表2和数据表3均为数据表1的待连接数据表,并可以据此在数据表1与数据表2之间以及数据表1与数据表3之间建立关联关系。其次,再遍历数据表2,通过比较可以发现,数据表2仅与数据表3具有相同字段(字段5),由此,可以确定数据表3为数据表2的待连接数据表,并可以据此在数据表2与数据表3之间建立关联关系。然后,再遍历数据表3,通过比较可以发现,数据表3仅与数据表4具有相同字段(字段7),由此,可以确定数据表4为数据表3的待连接数据表,并可以据此在数据表3与数据表4之间建立关联关系。最后,再遍历数据表4,通过比较可以发现,除了上述已经建立关联关系的数据表3之外,并没有其他待连接数据表。至此,关于数据表1、数据表2、数据表3以及数据表4之间相互关联关系的拓扑结构已经形成。

可选地,在步骤s24中,利用多张数据表相互间的关联关系生成描述信息可以包括以下执行步骤:

步骤s240:按照多张数据表相互间的关联关系从初始遍历的数据表开始依次获取下一个遍历的数据表的标识信息,与下一个遍历的数据表相邻接的数据表的标识信息以及下一个遍历的数据表与邻接的数据表之间的连接条件,其中,邻接的数据表为已经遍历过的数据表;

步骤s242:采用获取到的下一个遍历的数据表的标识信息,邻接的数据表的标识信息以及下一个遍历的数据表与邻接的数据表之间的连接条件生成描述信息。

在确定多张数据表相互间的关联关系后,可以从起始遍历的数据表或者作为参照数据表开始依次获取下一个遍历的数据表的标识信息,并进一步获取与下一个遍历的数据表相邻接的数据表的标识信息。需要说明的是,此处提到的与下一个遍历的数据表相邻接的数据表是指从起始遍历的数据表开始到下一个遍历的数据表为止已经被遍历的全部数据表中与下一个遍历的数据表邻接的数据表。通过获取上述标识信息可以确定下一个遍历的数据表与哪个或哪些已经被遍历的数据表之间存在关联关系,基于此,可以再获取下一个遍历的数据表与邻接的数据表之间的连接条件(即存在哪些相同的字段)。

例如:基于上述已经形成的关于数据表1、数据表2、数据表3以及数据表4之间相互关联关系的拓扑结构,生成描述信息的具体方式如下:

以数据表1为起始遍历的数据表或者作为参照数据表,然后依次访问其余数据表。考虑到数据表2和数据表3均为数据表1的待连接数据表,并已经据此在数据表1与数据表2之间以及数据表1与数据表3之间建立过关联关系,那么可以在数据表2和数据表3之间先随机选择一个数据表。假设此次选取的是数据表2,那么下一个遍历的数据表即为数据表2,而已经遍历的且与数据表2相邻接的仅有数据表1,则此时的连接条件为数据表1与数据表2具有相同字段(字段1和字段3)。接下来,在对数据表2完成遍历后,由于数据表2仅与数据表3之间存在连接关系,因此,下一个遍历的数据表即为数据表3。在已经遍历的数据表1和数据表2中,数据表1与数据表3具有相同字段(字段2),数据表2与数据表3具有相同字段(字段5),则此时的连接条件为数据表1与数据表3具有相同字段(字段2),数据表2与数据表3具有相同字段(字段5)。然后,在对数据表3完成遍历后,由于数据表3仅与数据表4之间存在连接关系,因此,下一个遍历的数据表即为数据表4。在已经遍历的数据表1、数据表2以及数据表3中,数据表3仅与数据表4具有相同字段(字段7),则此时的连接条件为数据表3与数据表4具有相同字段(字段7)。至此,关于数据表1、数据表2、数据表3以及数据表4之间相互关联关系的描述信息已经形成。

可选地,在步骤s242中,采用获取到的下一个遍历的数据表的标识信息,邻接的数据表的标识信息以及下一个遍历的数据表与邻接的数据表之间的连接条件生成描述信息可以包括以下执行步骤:

步骤s2420:先根据下一个遍历的数据表的标识信息和邻接的数据表的标识信息建立下一个遍历的数据表与邻接的数据表之间的关联关系后,再记录下一个遍历的数据表与邻接的数据表之间的连接条件,分别生成与已经遍历的数据表对应的分段连接信息;

步骤s2422:联合全部分段连接信息,生成描述信息。

在生成描述信息的过程中,数据表之间合法的表连接描述信息需要同时满足如下三个条件:

条件一、所有数据表均被且仅被连接一次;

条件二、所有连接条件均被且仅被使用一次;

条件三、每个连接条件中出现的数据表需要先被连接。

具体到上述示例中,在已经形成的关于数据表1、数据表2、数据表3以及数据表4之间相互关联关系的拓扑结构中,数据表1、数据表2、数据表3以及数据表4已均被连接一次。所有的连接条件,包括:数据表1与数据表2具有相同字段(字段1和 字段3),数据表1与数据表3具有相同字段(字段2),数据表2与数据表3具有相同字段(字段5)以及数据表3与数据表4具有相同字段(字段7),已均被使用一次。在每遍历一张数据表时,在连接条件中出现的数据表必须为已经被遍历过的数据表,即在遍历数据表2时,已经遍历的且与数据表2相邻接的仅有数据表1,则此时的连接条件包含数据表1与数据表2具有相同字段1和相同字段3;在遍历数据表3时,已经遍历的且与数据表3相邻接的有数据表1和数据表2,则此时的连接条件可以包含数据表1与数据表3具有相同字段2以及数据表2与数据表3具有相同字段5;在遍历数据表4时,已经遍历的且与数据表4相邻接的仅有数据表3,则此时的连接条件仅包含数据表3与数据表4具有相同字段7。

将得到上述分段连接信息联合起来便可以生成最终所要获得的描述信息,即数据表1,连接数据表2,其连接条件为:数据表1与数据表2具有相同字段1和相同字段3;连接数据表3,其连接条件为:数据表1与数据表3具有相同字段2以及数据表2与数据表3具有相同字段5;连接数据表4,其连接条件为:数据表3与数据表4具有相同字段7。

在优选实施过程中,在步骤s2420中,如果下一个遍历的数据表同时与多个数据表相邻接和/或下一个遍历的数据表与部分相邻接的数据表存在多个相同的字段时,则记录的下一个遍历的数据表与邻接的数据表之间的连接条件是由下一个遍历的数据表与多个数据表相邻接所产生的连接条件和/或由下一个遍历的数据表与部分相邻接的数据表存在多个相同的字段所产生的连接条件的并集。

在已经形成的关于数据表1、数据表2、数据表3以及数据表4之间相互关联关系的拓扑结构中,不仅包含因连接条件为数据表3与数据表4具有相同字段7而在数据表3与数据表4形成的单一连接关系,而且还包含数据表1与数据表2之间以及数据表1、数据表2以及数据表3相互间形成的复杂连接关系,即对于数据表1与数据表2两者之间的连接关系而言,在遍历数据表2时,已经遍历的且与数据表2相邻接的仅有数据表1,则此时的连接条件包含数据表1与数据表2具有相同字段1和相同字段3,而正是由于数据表1与数据表2之间具有2个相同字段,因此,数据表1与数据表2之间存在两种连接关系,其为数据表1与数据表2具有相同字段1和相同字段3的并集;对于数据表1、数据表2以及数据表3三者之间的连接关系而言,在遍历数据表3时,已经遍历的且与数据表3相邻接的有数据表1和数据表2,而且数据表1与数据表3具有相同字段2以及数据表2与数据表3具有相同字段5,因此,数据表3与已经遍历的数据表1和数据表2之间分别存在连接关系,其为数据表1与数据表3具有相同字段2以及数据表2与数据表3具有相同字段5的并集。

下面将结合以下优选实施方式对上述优选实施过程作进一步地描述。

图4是根据本发明优选实施例的生成描述信息的方法的示意图。如图4所示,假设当前总共有4张数据表,其分别为数据表a、数据表b、数据表c以及数据表d,在数据表的元信息中定义了f1、f2、f3为连接字段,即包含这些字段的数据表可以连接在一起。

具体地,上述4张数据表所包含的连接字段分别为:

数据表a包含:连接字段f3;

数据表b包含:连接字段f1,连接字段f2以及连接字段f3;

数据表c包含:连接字段f1;

数据表d包含:连接字段f1和连接字段f2。

由此,可以得到这4张数据表之间存在如下连接条件:

(数据表a,数据表b)之间存在的连接条件:数据表a.连接字段f3=数据表b.连接字段f3;

(数据表b,数据表c)之间存在的连接条件:数据表b.连接字段f1=数据表c.连接字段f1;

(数据表b,数据表d)之间存在的连接条件:数据表b.连接字段f1=数据表d.连接字段f1,数据表b.连接字段f2=数据表d.连接字段f2;

(数据表c,数据表d)之间存在的连接条件:数据表c.连接字段f1=数据表d.连接字段f1;

即数据表a和数据表b通过f3字段连接,数据表b和数据表c通过f1字段连接,数据表b和数据表d通过f1和f2两个字段连接以及数据表c和数据表d通过f1字段连接。

在该优选实施例中,如何根据数据表间的连接关系生成合法的描述信息(例如:表连接语句),该优选实施例将其抽象为图的遍历问题,即,采用图顶点来表示数据表,采用图的边来表示数据表之间的连接关系,上述举例中的数据表以及相互间的连接关系可以表示为:

首先从数据表a开始,依次连接其它3张数据表,为生成合法的表连接语句,其具体方式如下:从图顶点a出发,按一定顺序到达其它顶点,并将当前到达顶点与它 前边已经到达过的顶点之间的边加到连接条件中,即可生成以图顶点为连接表,图的边为连接条件的合法表连接语句,每个表和连接条件在该语句中出现且仅出现一次,且连接条件中出现的表已经先进行“join”(对应图顶点已经到达过)。

该优选实施例通过采用图的遍历方法(包括:深度优先遍历和广度优先遍历)来确定顶点的到达次序。以广度优先遍历为例,从顶点a出发,将该顶点计为第1层,先到达与它有边连接的第2层顶点,即与a距离为1的顶点,再依次到达与a距离递增的各层顶点,同一层内到达顺序随机。在上述示例中,顶点a为第1层,顶点b为第2层,顶点c、d均与b相连,同属第3层,所以这4个顶点的到达次序为a、b、c、d或者a、b、d、c。

假设以到达次序a、b、c、d为例,来展开表连接语句的生成过程:

第一步、从顶点a出发,到达顶点b后,join顶点b,并将顶点b与它前边已经到达过的顶点之间的边加到连接条件中,由于在到达顶点b之前只到达过顶点a,因此,可以将顶点b与顶点a之间的边添加到连接条件中,生成ajoinbona.f3=b.f3;

第二步、从顶点b出发,到达顶点c后,join顶点c,并将顶点c与它前边已经到达过的顶点之间的边添加到连接条件中,由于在到达顶点c之前已经到达过顶点a和顶点b,但顶点c只与顶点b之间有边,所以将顶点c与顶点b之间的边添加到连接条件中,生成joinconb.f1=c.f1;

第三步、从顶点c触发,到达顶点d后,join顶点d,并将顶点d与它前边已经到达过的顶点之间的边添加到连接条件中,由于在到达顶点d之前已经到达过顶点a、顶点b以及顶点c,而顶点d与顶点b、顶点c之间有边,所以将顶点d与顶点b、顶点c之间的边添加到连接条件中,生成joindonb.f1=d.f1andb.f2=d.f2andc.f1=d.f1;

在所有顶点全部到达后,便可生成最终的表连接语句ajoinbona.f3=b.f3joinconb.f1=c.f1joindonb.f1=d.f1andb.f2=d.f2andc.f1=d.f1。

因此,数据表a、数据表b、数据表c以及数据表d之间合法的表连接语句如下:

ajoinbona.f3=b.f3joinconb.f1=c.f1joindonb.f1=d.f1andb.f2=d.f2andc.f1=d.f1。

假设以到达次序a、b、d、c为例,来展开表连接语句的生成过程:

第一步、从顶点a出发,到达顶点b后,join顶点b,并将顶点b与它前边已经到达过的顶点之间的边加到连接条件中,由于在到达顶点b之前只到达过顶点a,因此,可以将顶点b与顶点a之间的边添加到连接条件中,生成ajoinbona.f3=b.f3;

第二步、从顶点b出发,到达顶点d后,join顶点d,并将顶点d与它前边已经到达过的顶点之间的边添加到连接条件中,由于在到达顶点d之前已经到达过顶点a和顶点b,但顶点d只与顶点b之间有边,所以将顶点d与顶点b之间的边添加到连接条件中,生成joindonb.f1=d.f1andb.f2=d.f2;

第三步、从顶点d出发,到达顶点c后,join顶点c,并将顶点c与它前边已经到达过的顶点之间的边添加到连接条件中,由于在到达顶点c之前已经到达过顶点a、顶点b以及顶点d,而顶点c与顶点b、顶点d之间有边,所以将顶点c与顶点b、顶点d之间的边添加到连接条件中,生成joinconb.f1=c.f1andc.f1=d.f1;

在所有顶点全部到达后,便可生成最终的表连接语句ajoinbona.f3=b.f3joindonb.f1=d.f1andb.f2=d.f2joinconb.f1=c.f1andc.f1=d.f1。

因此,数据表a、数据表b、数据表c以及数据表d之间合法的表连接语句如下:

ajoinbona.f3=b.f3joindonb.f1=d.f1andb.f2=d.f2joinconb.f1=c.f1andc.f1=d.f1。

另外,与合法的表连接语句相对,不合法的表连接语句的示例如下:

ajoinbona.f3=b.f3joinconb.f1=c.f1andc.f1=d.f1joindonb.f1=d.f1andb.f2=d.f2;

在该表连接语句中的连接条件“c.f1=d.f1”在“joind”之前出现是不合法的,其原因在于,连接条件中的数据表d需要先“join”,即当前遍历的数据表为数据表c,已经遍历的数据表仅为数据表a和数据表b,其并不包括数据表d,因此,数据表d不能出现在关于连接数据表c的连接条件中,而只能在继续遍历数据表d后,出现在关于连接数据表d的连接条件中。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术 人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的生成描述信息的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

根据本发明实施例,还提供了一种用于实施上述生成描述信息的装置的结构框图,如图5所示,该装置包括:获取模块10,用于获取多张数据表中每张数据表所包含的字段信息;确定模块20,用于根据字段信息确定多张数据表相互间的关联关系;生成模块30,用于利用多张数据表相互间的关联关系生成描述信息,其中,描述信息用于记录多张数据表相互间的连接次序以及相邻数据表之间所使用的连接条件。

可选地,图6是根据本发明优选实施例的生成描述信息的装置的结构框图,如图6所示,确定模块20包括:选取单元200,用于从多张数据表中选取任意一张待遍历的数据表;查找单元202,用于查找与选取的数据表所包含的字段信息中具有一个或多个相同字段的数据表,并将查找到的数据表设置为选取的数据表的待连接数据表;建立单元204,用于在选取的数据表与待连接数据表之间建立关联关系;返回选取单元,直至多张数据表被全部遍历。

可选地,如图6所示,生成模块30包括:获取单元300,用于按照多张数据表相互间的关联关系从初始遍历的数据表开始依次获取下一个遍历的数据表的标识信息,与下一个遍历的数据表相邻接的数据表的标识信息以及下一个遍历的数据表与邻接的数据表之间的连接条件,其中,邻接的数据表为已经遍历过的数据表;生成单元302,用于采用获取到的下一个遍历的数据表的标识信息,邻接的数据表的标识信息以及下一个遍历的数据表与邻接的数据表之间的连接条件生成描述信息。

可选地,生成单元302包括:第一生成子单元(图中未示出),用于先根据下一个遍历的数据表的标识信息和邻接的数据表的标识信息建立下一个遍历的数据表与邻接的数据表之间的关联关系后,再记录下一个遍历的数据表与邻接的数据表之间的连接 条件,分别生成与已经遍历的数据表对应的分段连接信息;第二生成子单元(图中未示出),用于联合全部分段连接信息,生成描述信息。

可选地,第一生成子单元(图中未示出),用于在下一个遍历的数据表同时与多个数据表相邻接和/或下一个遍历的数据表与部分相邻接的数据表存在多个相同的字段时,则记录的下一个遍历的数据表与邻接的数据表之间的连接条件是由下一个遍历的数据表与多个数据表相邻接所产生的连接条件和/或由下一个遍历的数据表与部分相邻接的数据表存在多个相同的字段所产生的连接条件的并集。

实施例3

本发明的实施例可以提供一种计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。

可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。

可选地,图7是根据本发明实施例的一种计算机终端的结构框图。如图7所示,该计算机终端可以包括:一个或多个(图中仅示出一个)处理器以及存储器。

其中,存储器可用于存储软件程序以及模块,如本发明实施例中的生成描述信息的方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的生成描述信息的方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:

s1,获取多张数据表中每张数据表所包含的字段信息;

s2,根据字段信息确定多张数据表相互间的关联关系;

s3,利用多张数据表相互间的关联关系生成描述信息,其中,描述信息用于记录多张数据表相互间的连接次序以及相邻数据表之间所使用的连接条件。

可选的,上述处理器还可以执行如下步骤的程序代码:选取步骤:从多张数据表 中选取任意一张待遍历的数据表;查找步骤:查找与选取的数据表所包含的字段信息中具有一个或多个相同字段的数据表,并将查找到的数据表设置为选取的数据表的待连接数据表;在选取的数据表与待连接数据表之间建立关联关系;返回选取步骤,直至多张数据表被全部遍历。

可选的,上述处理器还可以执行如下步骤的程序代码:按照多张数据表相互间的关联关系从初始遍历的数据表开始依次获取下一个遍历的数据表的标识信息,与下一个遍历的数据表相邻接的数据表的标识信息以及下一个遍历的数据表与邻接的数据表之间的连接条件,其中,邻接的数据表为已经遍历过的数据表;采用获取到的下一个遍历的数据表的标识信息,邻接的数据表的标识信息以及下一个遍历的数据表与邻接的数据表之间的连接条件生成描述信息。

可选的,上述处理器还可以执行如下步骤的程序代码:先根据下一个遍历的数据表的标识信息和邻接的数据表的标识信息建立下一个遍历的数据表与邻接的数据表之间的关联关系后,再记录下一个遍历的数据表与邻接的数据表之间的连接条件,分别生成与已经遍历的数据表对应的分段连接信息;联合全部分段连接信息,生成描述信息。

可选的,上述处理器还可以执行如下步骤的程序代码:如果下一个遍历的数据表同时与多个数据表相邻接和/或下一个遍历的数据表与部分相邻接的数据表存在多个相同的字段时,则记录的下一个遍历的数据表与邻接的数据表之间的连接条件是由下一个遍历的数据表与多个数据表相邻接所产生的连接条件和/或由下一个遍历的数据表与部分相邻接的数据表存在多个相同的字段所产生的连接条件的并集。

采用本发明实施例,采用通过获取多张数据表中每张数据表所包含的字段信息并根据字段信息确定多张数据表相互间的关联关系的方式,利用多张数据表相互间的关联关系生成用于记录多张数据表相互间的连接次序以及相邻数据表之间所使用的连接条件的描述信息,达到了不需要人工参与便可以自动生成上述描述信息(例如:合法的表连接sql语句)来完成数据分析的目的,从而实现了通过自动生成数据表之间相互关系的描述信息不仅提高了数据分析效率而且还提升了数据分析结果准确性的技术效果,进而解决了相关技术中无法在给定若干张数据表且可获知数据表之间的关系的情况下,通过采用自动生成合法的表连接sql语句的实现方式来完成数据分析的技术问题。

本领域普通技术人员可以理解,图7所示的结构仅为示意,计算机终端也可以是智能手机(如android手机、ios手机等)、平板电脑、掌声电脑以及移动互联网设备(mobileinternetdevices,mid)、pad等终端设备。图7其并不对上述电子装置的 结构造成限定。例如,计算机终端还可包括比图7中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图7所示不同的配置。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。

实施例4

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一所提供的生成描述信息的方法所执行的程序代码。

可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:

s1,获取多张数据表中每张数据表所包含的字段信息;

s2,根据字段信息确定多张数据表相互间的关联关系;

s3,利用多张数据表相互间的关联关系生成描述信息,其中,描述信息用于记录多张数据表相互间的连接次序以及相邻数据表之间所使用的连接条件。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:选取步骤:从多张数据表中选取任意一张待遍历的数据表;查找步骤:查找与选取的数据表所包含的字段信息中具有一个或多个相同字段的数据表,并将查找到的数据表设置为选取的数据表的待连接数据表;在选取的数据表与待连接数据表之间建立关联关系;返回选取步骤,直至多张数据表被全部遍历。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:按照多张数据表相互间的关联关系从初始遍历的数据表开始依次获取下一个遍历的数据表的标识信息,与下一个遍历的数据表相邻接的数据表的标识信息以及下一个遍历的数据表与邻接的数据表之间的连接条件,其中,邻接的数据表为已经遍历过的数据表;采用获取到的下一个遍历的数据表的标识信息,邻接的数据表的标识信息以及下一个遍历的数据表与邻接的数据表之间的连接条件生成描述信息。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:先根据下一个 遍历的数据表的标识信息和邻接的数据表的标识信息建立下一个遍历的数据表与邻接的数据表之间的关联关系后,再记录下一个遍历的数据表与邻接的数据表之间的连接条件,分别生成与已经遍历的数据表对应的分段连接信息;联合全部分段连接信息,生成描述信息。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:如果下一个遍历的数据表同时与多个数据表相邻接和/或下一个遍历的数据表与部分相邻接的数据表存在多个相同的字段时,则记录的下一个遍历的数据表与邻接的数据表之间的连接条件是由下一个遍历的数据表与多个数据表相邻接所产生的连接条件和/或由下一个遍历的数据表与部分相邻接的数据表存在多个相同的字段所产生的连接条件的并集。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1