本申请涉及数据处理领域,具体而言,涉及一种数据表的查询方法和装置。
背景技术:
:在商业场景中,存在订单、页面浏览信息等多实体情况,全部实体都可以通过会话进行关联。在对会话进行剖析时,经常会出现否的条件,如不存在任意事件的会话,即需要对不存在事件进行过滤。对于上述的需要过滤不存在事件的情况,传统的做法,是使用notexists(不存在)语句在impala(由cloudera公司主导开发的查询系统)里进行判断,在判断的过程中由于需要对数据表中的各个事件进行逐个判断,不能批量化的执行判断,因此该种过滤不存在事件的方式性能比较慢,导致查询数据表的效率低。针对现有技术查询数据表的效率低的问题,目前尚未提出有效的解决方案。技术实现要素:本申请实施例提供了一种数据表的查询方法和装置,以至少解决现有技术查询数据表的效率低的技术问题。根据本申请实施例的一个方面,提供了一种数据表的查询方法,该查询方法包括:获取查询请求中携带的过滤条件,其中,过滤条件用于指示获取不存在其他实体的目标实体信息;基于过滤条件,获取其他实体和目标实体对应的多个数据表;获取多个数据表的表关系,其中,表关系中记录有各个数据表的连接字段;利用连接字段,按照预定连接方式对多个数据表进行反连接,得到查询请求的结果。进一步地,利用连接字段,按照预定连接方式对多个数据表进行反连接包括:利用连接字段,按照左连接方式,将多个数据表进行反连接。进一步地,按照左连接方式,将多个数据表进行反连接,得到查询请求的结果包括:将目标实体对应的表作为左表,将其他实体对应的表作为右表;从右表中,获取连接字段的属性值与左表中连接字段的属性值不一致的第一信息;将左表中记录的第二信息和第一信息作为查询请求的结果。进一步地,目标实体和其他实体为有指标数据的对象,对象包括下述之一:订单、会话、事件以及页面浏览信息。进一步地,连接字段与目标实体的属性信息具有对应关系。根据本申请实施例的另一方面,还提供了一种数据表的查询装置,该查询装置包括:第一获取模块,用于获取查询请求中携带的过滤条件,其中,过滤条件用于指示获取不存在其他实体的目标实体信息;第二获取模块,用于基于过滤条件,获取其他实体和目标实体对应的多个数据表;第三获取模块,用于获取多个数据表的表关系,其中,表关系中记录有各个数据表的连接字段;处理模块,用于利用连接字段,按照预定连接方式对多个数据表进行反连接,得到查询请求的结果。进一步地,处理模块包括:连接子模块,用于利用连接字段,按照左连接方式,将多个数据表进行反连接。进一步地,连接子模块包括:第一处理子模块,用于将目标实体对应的表作为左表,将其他实体对应的表作为右表;获取子模块,用于从右表中,获取连接字段的属性值与左表中连接字段的属性值不一致的第一信息;第二处理子模块,用于将左表中记录的第二信息和第一信息作为查询请求的结果。进一步地,目标实体和其他实体为有指标数据的对象,对象包括下述之一:订单、会话、事件以及页面浏览信息。进一步地,连接字段与目标实体的属性信息具有对应关系。在本申请实施例中,基于获取不存在其他实体的目标实体信息的查询请求,利用其他实体和目标实体对应的多个数据表的连接字段,将多个数据表进行反连接,得到不存在其他实体的目标实体信息的查询结果。通过上述实施例,在进行不存在其他实体的目标实体信息的查询时,对其他实体的数据表和目标实体的数据表进行反连接,从而无需对每个表中的每个数据逐一判断,通过表连接即可获取不存在其他实体的目标实体信息,实现了对数据表的批量查询,提高查询数据表的执行速度,解决了现有技术查询数据表的效率低的问题,提高了查询数据表的效率。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1是根据本申请实施例的一种数据表的查询方法的流程图;图2是根据本申请实施例的一种数据表的查询装置的示意图。具体实施方式为了使本
技术领域:
的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。实施例1根据本申请实施例,提供了一种数据表的查询方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。图1是根据本申请实施例的一种数据表的查询方法的流程图,如图1所示,该查询方法包括如下步骤:步骤s102,获取查询请求中携带的过滤条件,其中,过滤条件用于指示获取不存在其他实体的目标实体信息。步骤s104,基于过滤条件,获取其他实体和目标实体对应的多个数据表。步骤s106,获取多个数据表的表关系,其中,表关系中记录有各个数据表的连接字段。步骤s108,利用连接字段,按照预定连接方式对多个数据表进行反连接,得到查询请求的结果。采用本申请实施例,基于获取不存在其他实体的目标实体信息的查询请求,利用其他实体和目标实体对应的多个数据表的连接字段,将多个数据表进行反连接,得到不存在其他实体的目标实体信息的查询结果。通过上述实施例,在进行不存在其他实体的目标实体信息的查询时,对其他实体的数据表和目标实体的数据表进行反连接, 从而无需对每个表中的每个数据逐一判断,通过表连接即可获取不存在其他实体的目标实体信息,实现了对数据表的批量查询,提高查询数据表的执行速度,解决了现有技术查询数据表的效率低的问题,提高了查询数据表的效率。当查询请求为获取不存在事件(即上述的其他实体)的会话(即上述的目标实体)时,首先获取与事件对应的事件表,以及与会话对应的会话表,然后分析事件表和会话表的表关系,得到表关系中事件表和会话表之间的连接字段,最后利用连接字段将事件表和会话表进行表关联,在本申请中,也即,将事件表和会话表进行反连接,得到表关联结果,该结果即为得到的不存在事件的会话的查询结果。其中,上述的多个数据表之间可以由连接字段进行表关联,连接字段可以为多个数据表的相同属性字段。例如,上述的事件表和会话表,可以使用会话标识(sessionid)作为连接字段,通过用户的会话标识将两个表进行关联。可选地,利用连接字段,按照预定连接方式对多个数据表进行反连接包括:利用连接字段,按照左连接方式,将多个数据表进行反连接。反连接可以为左非连接。通过上述实施例,由于可以利用连接字段,按照左连接方式,将多个数据表进行反连接,反连接的结果即为不存在其他实体的目标实体信息的查询结果,该种查询方式实现了对数据表的批量查询,缩短了对数据表的查询时间,大大简化了传统的对数据表逐个进行查询的过程。在本申请的上述实施例中,目标实体和其他实体为有指标数据的对象,对象包括下述之一:订单、会话、事件以及页面浏览信息。可选地,目标实体可以为会话,与会话对应有会话表,会话表中至少包括以下至少之一的指标数据:用户的会话标识、用户昵称和用户基本信息;其他实体可以为页面浏览信息,与页面浏览信息对应有页面浏览信息表,页面浏览信息表中至少包括以下至少之一的指标数据:页面浏览次数、页面浏览地址和页面浏览时长。进一步地,按照左连接方式,将多个数据表进行反连接,得到查询请求的结果包括:将目标实体对应的表作为左表,将其他实体对应的表作为右表;从右表中,获取连接字段的属性值与左表中连接字段的属性值不一致的第一信息;将左表中记录的第二信息和第一信息作为查询请求的结果。具体地,采用leftantijoin的方式进行表关联,将所需要过滤的事实表(即上述的目标实体对应的表)作为左表,将参与过滤的事实表作为右表(即上述的其他实体对应的表),利用表关系里的连接字段,将左表和右表进行表关联,表关联后的结果,即不存在其他实体的目标实体的查询结果。采用该种连接方式,即以左表作为基准,得到右表中与左表中的连接字段的属性值不一致的信息(即上述的第一信息),即过滤 掉右表中与左表中的连接字段的属性值一致的信息,得到的第一信息与左表中记录的所有信息即为查询请求的结果。下面以表1和表2为例,详述本申请的上述实施例。如表1所示,id表示表1的地址信息,num表示数字标号;如表2所示,id表示表2的地址信息,name表示数字名称。表1idnum120050111220050112320050113420050114520050115表2idname1200603240122006032402320060324034200603240482006032405表3idnumidname120050111nullnull220050112nullnull320050113nullnull420050114nullnull52005011582006032405对表1和表2进行分析可知,两个表的连接字段为id。采用上述的leftantijoin 连接方式对表1和表2进行表关联,若表1为所需要过滤的事实表,表2为参与过滤的事实表,则将表1作为左表,将表2作为右表。利用连接字段id,将表1和表2按照leftantijoin方式进行表关联,得到的表关联结果如表3所示,表3中包括表1中记录的所有信息和与表1中id的属性信息不同的信息,这些信息即为查询请求对应的查询结果,其中,查询请求为不存在与name的id的属性信息相同的信息的num。通过上述实施例,可以利用leftantijoin连接方式,实现多个数据表的表关联,在表关联的过程中,实现了对多个数据表的批量查询,减少了系统查询数据表的次数,从而提高了数据表查询的效率。在本申请的上述实施例中,连接字段与目标实体的属性信息具有对应关系。具体地,在基于查询请求中携带的过滤条件得到多个数据表之后,通过分析多个数据表的表关系,得到表关系中记录的各个数据表的连接字段。由于各个数据表是与实体对应的数据表,因此各个数据表的连接字段与对应的实体的属性信息具有对应关系。例如上述的表1和表2,id为两个表的连接字段,表1为与目标实体对应的数据表,表1中的num表示该目标实体的属性信息,由表1可知,表中id的属性信息与表中的num对应,每个id值对应一个num值。需要说明的是,表2为与其他实体对应的数据表,表2中的name表示该其他实体的属性信息,由表2可知,表中id的属性信息与表中的name对应,每个id值对应一个name值。表1和表2仅示例性的给出了两个数据表,本申请中的数据表在此不作限定,上述的数据表的查询方法可以应用于实际的数据处理领域的各种数据表的查询中。在一种可选的实施例中,当查询请求为获取不存在事件(即上述的其他实体)的会话(即上述的目标实体)时,首先获取与事件对应的事件表,以及与会话对应的会话表;然后分析事件表和会话表的表关系,得到表关系中事件表和会话表之间的连接字段(即上述的会话标识);最后采用leftantijoin连接方式,将会话表作为左表,即会话表为所需要过滤的事实表,将事件表作为右表,即事件表为参与过滤的事实表,利用两个表的连接字段将事件表和会话表进行表关联。具体地,使用会话表作为基准,得到事件表中与会话表中的连接字段的属性值不一致的第一信息,过滤掉事件表中与会话表中的连接字段的属性值一致的信息,得到的事件表中的第一信息与会话表中记录的所有信息即为不存在事件的会话的查询结果。实施例2根据本申请的另一方面,还提供了一种数据表的查询装置的实施例。图2是根据本申请实施例的一种数据表的查询装置的示意图,如图2所示,该查询装置可以包括:第一获取模块20、第二获取模块40、第三获取模块60和处理模块80。其中,第一获取模块20,用于获取查询请求中携带的过滤条件,其中,过滤条件用于指示获取不存在其他实体的目标实体信息。第二获取模块40,用于基于过滤条件,获取其他实体和目标实体对应的多个数据表。第三获取模块60,用于获取多个数据表的表关系,其中,表关系中记录有各个数据表的连接字段。处理模块80,用于利用连接字段,按照预定连接方式对多个数据表进行反连接,得到查询请求的结果。采用本申请实施例,基于获取不存在其他实体的目标实体信息的查询请求,利用其他实体和目标实体对应的多个数据表的连接字段,将多个数据表进行反连接,得到不存在其他实体的目标实体信息的查询结果。通过上述实施例,在进行不存在其他实体的目标实体信息的查询时,对其他实体的数据表和目标实体的数据表进行反连接,从而无需对每个表中的每个数据逐一判断,通过表连接即可获取不存在其他实体的目标实体信息,实现了对数据表的批量查询,提高查询数据表的执行速度,解决了现有技术查询数据表的效率低的问题,提高了查询数据表的效率。当查询请求为获取不存在事件(即上述的其他实体)的会话(即上述的目标实体)时,首先获取与事件对应的事件表,以及与会话对应的会话表,然后分析事件表和会话表的表关系,得到表关系中事件表和会话表之间的连接字段,最后利用连接字段将事件表和会话表进行表关联,在本申请中,也即,将事件表和会话表进行反连接,得到表关联结果,该结果即为得到的不存在事件的会话的查询结果。其中,上述的多个数据表之间可以由连接字段进行表关联,连接字段可以为多个数据表的相同属性字段。例如,上述的事件表和会话表,可以使用会话标识(sessionid)作为连接字段,通过用户的会话标识将两个表进行关联。可选地,处理模块包括:连接子模块,用于利用连接字段,按照左连接方式,将多个数据表进行反连接。通过上述实施例,由于可以利用连接字段,按照左连接方式,将多个数据表进行反连接,反连接的结果即为不存在其他实体的目标实体信息的查询结果,该种查询方式实现了对数据表的批量查询,缩短了对数据表的查询时间,大大简化了传统的对数 据表逐个进行查询的过程。进一步地,连接子模块包括:第一处理子模块,用于将目标实体对应的表作为左表,将其他实体对应的表作为右表;获取子模块,用于从右表中,获取连接字段的属性值与左表中连接字段的属性值不一致的第一信息;第二处理子模块,用于将左表中记录的第二信息和第一信息作为查询请求的结果。具体地,采用leftantijoin的方式进行表关联,将所需要过滤的事实表(即上述的目标实体对应的表)作为左表,将参与过滤的事实表作为右表(即上述的其他实体对应的表),利用表关系里的连接字段,将左表和右表进行表关联,表关联后的结果,即不存在其他实体的目标实体的查询结果。采用该种连接方式,即以左表作为基准,得到右表中与左表中的连接字段的属性值不一致的信息(即上述的第一信息),即过滤掉右表中与左表中的连接字段的属性值一致的信息,得到的第一信息与左表中记录的所有信息即为查询请求的结果。通过上述实施例,可以利用leftantijoin连接方式,实现多个数据表的表关联,在表关联的过程中,实现了对多个数据表的批量查询,减少了系统查询数据表的次数,从而提高了数据表查询的效率。在本申请的上述实施例中,目标实体和其他实体为有指标数据的对象,对象包括下述之一:订单、会话、事件以及页面浏览信息。可选地,目标实体可以为会话,与会话对应有会话表,会话表中至少包括以下至少之一的指标数据:用户的会话标识、用户昵称和用户基本信息;其他实体可以为页面浏览信息,与页面浏览信息对应有页面浏览信息表,页面浏览信息表中至少包括以下至少之一的指标数据:页面浏览次数、页面浏览地址和页面浏览时长。在本申请的上述实施例中,连接字段与目标实体的属性信息具有对应关系。具体地,在基于查询请求中携带的过滤条件得到多个数据表之后,通过分析多个数据表的表关系,得到表关系中记录的各个数据表的连接字段。由于各个数据表是与实体对应的数据表,因此各个数据表的连接字段与对应的实体的属性信息具有对应关系。例如上述的表1和表2,id为两个表的连接字段,表1为与目标实体对应的数据表,表1中的num表示该目标实体的属性信息,由表1可知,表中id的属性信息与表中的num对应,每个id值对应一个num值。需要说明的是,表2为与其他实体对应的数据表,表2中的name表示该其他实体的属性信息,由表2可知,表中id的属性信息与表中的name对应,每个id值对应一个name值。表1和表2仅示例性的给出了两个数据表,本申请中的数据表在此不作限定,上述的数据表的查询方法可以应用于实际的数据处理领域的各种数据表的查询中。在一种可选的实施例中,当查询请求为获取不存在事件(即上述的其他实体)的会话(即上述的目标实体)时,首先获取与事件对应的事件表,以及与会话对应的会话表;然后分析事件表和会话表的表关系,得到表关系中事件表和会话表之间的连接字段(即上述的会话标识);最后采用leftantijoin连接方式,将会话表作为左表,即会话表为所需要过滤的事实表,将事件表作为右表,即事件表为参与过滤的事实表,利用两个表的连接字段将事件表和会话表进行表关联。具体地,使用会话表作为基准,得到事件表中与会话表中的连接字段的属性值不一致的第一信息,过滤掉事件表中与会话表中的连接字段的属性值一致的信息,得到的事件表中的第一信息与会话表中记录的所有信息即为不存在事件的会话的查询结果。上述数据表的查询装置包括处理器和存储器,上述第一获取模块、第二获取模块、第三获取模块和处理模块等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元。上述过滤条件、数据表以及查询请求的结果都可以存储在存储器中。处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数解析文本内容。存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram),存储器包括至少一个存储芯片。本申请还提供了一种计算机程序产品的实施例,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:获取查询请求中携带的过滤条件,其中,过滤条件用于指示获取不存在其他实体的目标实体信息;基于过滤条件,获取其他实体和目标实体对应的多个数据表;获取多个数据表的表关系,其中,表关系中记录有各个数据表的连接字段;利用连接字段,按照预定连接方式对多个数据表进行反连接,得到查询请求的结果。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件 可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。以上所述仅是本申请的优选实施方式,应当指出,对于本
技术领域:
的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。当前第1页12