CN106933926B - 数据表的过滤方法及装置 - Google Patents
数据表的过滤方法及装置 Download PDFInfo
- Publication number
- CN106933926B CN106933926B CN201511032703.3A CN201511032703A CN106933926B CN 106933926 B CN106933926 B CN 106933926B CN 201511032703 A CN201511032703 A CN 201511032703A CN 106933926 B CN106933926 B CN 106933926B
- Authority
- CN
- China
- Prior art keywords
- sub
- split
- tables
- filter
- filtering
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/242—Query formulation
- G06F16/2428—Query predicate definition using graphical user interfaces, including menus and forms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Image Processing (AREA)
Abstract
本申请公开了一种数据表的过滤方法及装置。其中,该方法包括:将获取的过滤条件添加至数据表中的多个子表;查找出多个子表中需拆分的第一子表;将第一子表拆分为多个分裂表;基于各个分裂表的过滤条件,将对应于同一第一子表的各个分裂表进行表连接,得到各个第一子表的连接结果;基于各个第一子表的连接结果,获取数据表对应于获取的过滤条件的第一过滤结果。本申请解决了对数据表进行同一维度的多次且过滤时的处理效率低的技术问题。
Description
技术领域
本申请涉及数据处理领域,具体而言,涉及一种数据表的过滤方法及装置。
背景技术
数据表中的数据一般为多对多的关系,其中,多对一的关系为较常见的一种,由于电商和会话是多对一的关系,在一个会话中可能买多个订单,每个订单包含多种产品,所以会出来同一产品维度多次进行的且过滤的维度链。在现有技术中,对该同一维度多次且过滤的情况,一般采用直接用该过滤条件对数据表进行过滤,这样做会产生数据表的过滤数据量较大,使得表过滤的开销很大,效率较低。
针对上述的对数据表进行同一维度的多次且过滤时的处理效率低的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种数据表的过滤方法及装置,以至少解决对数据表进行同一维度的多次且过滤时的处理效率低的技术问题。
根据本申请实施例的一个方面,提供了一种数据表的过滤方法,该方法包括:将获取的过滤条件添加至数据表中的多个子表;查找出所述多个子表中需拆分的第一子表,其中,所述第一子表的过滤条件为对具有多个指标的维度进行逻辑且操作的过滤条件,同一维度的多个指标之间具有逻辑且关系;将所述第一子表拆分为多个分裂表,其中,每个分裂表的过滤条件为对多个具有一个指标的维度进行逻辑且操作的过滤条件;基于各个分裂表的过滤条件,将对应于同一第一子表的各个分裂表进行表连接,得到各个所述第一子表的连接结果;基于各个所述第一子表的连接结果,获取所述数据表对应于所述获取的过滤条件的第一过滤结果。
进一步地,将对应于同一第一子表的各个分裂表进行表连接包括:按照内连接的方式连接对应于同一第一子表的各个所述分裂表。
进一步地,基于各个所述第一子表的连接结果,获取所述数据表对应于所述获取的过滤条件的第一过滤结果包括:获取所述数据表中无需拆分的第二子表;利用所述第二子表的过滤条件,对所述第二子表进行过滤,得到第二过滤结果;获取所述第二子表的第二过滤结果和所述第一子表的连接结果的汇总结果,将所述汇总结果作为所述第一过滤结果。
进一步地,在将获取的过滤条件添加至数据表中的多个子表之前,所述方法还包括:根据过滤需求从数据库中获取所述过滤条件;或者,获取预先设置的所述过滤条件。
进一步地,查找出所述多个子表中需拆分的第一子表包括:遍历所述数据表的所述多个子表的过滤条件;判断当前遍历到的子表的过滤条件是否为对具有多个指标的维度进行逻辑且操作的过滤条件;若所述当前遍历到的子表的过滤条件为对具有多个指标的维度进行逻辑且操作的过滤条件,则将所述当前遍历到的子表确定为所述第一子表。
根据本申请实施例的另一方面,还提供了一种数据表的过滤装置,该装置包括:添加单元,用于将获取的过滤条件添加至数据表中的多个子表;查找单元,用于查找出所述多个子表中需拆分的第一子表,其中,所述第一子表的过滤条件为对具有多个指标的维度进行逻辑且操作的过滤条件,同一维度的多个指标之间具有逻辑且关系;拆分单元,用于将所述第一子表拆分为多个分裂表,其中,每个分裂表的过滤条件为对多个具有一个指标的维度进行逻辑且操作的过滤条件;表连接单元,用于基于各个分裂表的过滤条件,将对应于同一第一子表的各个分裂表进行表连接,得到各个所述第一子表的连接结果;获取单元,用于基于各个所述第一子表的连接结果,获取所述数据表对应于所述获取的过滤条件的第一过滤结果。
进一步地,所述表连接单元包括:连接模块,用于按照内连接的方式连接对应于同一第一子表的各个所述分裂表。
进一步地,所述获取单元包括:第一获取模块,用于获取所述数据表中无需拆分的第二子表;过滤模块,用于利用所述第二子表的过滤条件,对所述第二子表进行过滤,得到第二过滤结果;处理模块,用于获取所述第二子表的第二过滤结果和所述第一子表的连接结果的汇总结果,将所述汇总结果作为所述第一过滤结果。
进一步地,所述装置还包括:第二获取模块,用于在将获取的过滤条件添加至数据表中的多个子表之前,根据过滤需求从数据库中获取所述过滤条件;或者,第三获取模块,用于获取预先设置的所述过滤条件。
进一步地,所述查找单元包括:遍历模块,用于遍历所述数据表的所述多个子表的过滤条件;判断模块,用于判断当前遍历到的子表的过滤条件是否为对具有多个指标的维度进行逻辑且操作的过滤条件;确定模块,用于若所述当前遍历到的子表的过滤条件为对具有多个指标的维度进行逻辑且操作的过滤条件,则将所述当前遍历到的子表确定为所述第一子表。
在本申请实施例中,采用将用于过滤所述数据表的所有过滤条件分配给所述数据表中的多个子表;查找出需拆分的所述数据表中的子表;将所述需拆分的子表拆分为多个分裂表,所述拆分后的每个所述分裂表包括一个维度且过滤条件;基于所述过滤条件将所述拆分后的所述分裂表进行表连接,以得到新的子表的方式,通过将包括多个同一维度的多个且过滤的子表拆分成多个仅含有一个维度且过滤的分裂表,再将该拆分后的分裂表进行表连接来表示且的关系,相比于现有技术中的直接进行同一维度的多个且过滤,达到了减小且过滤的数据处理量的目的,从而实现了提高数据表进行同一维度的多次且过滤时的处理效率的技术效果,进而解决了对数据表进行同一维度的多次且过滤时的处理效率低的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种数据表的过滤方法的流程图;以及
图2是根据本申请实施例的一种数据表的过滤装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本申请实施例,提供了一种数据表的过滤方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本申请实施例的一种数据表的过滤方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,将获取的过滤条件添加至数据表中的多个子表。
步骤S104,查找出多个子表中需拆分的第一子表,其中,第一子表的过滤条件为对具有多个指标的维度进行逻辑且操作的过滤条件,同一维度的多个指标之间具有逻辑且关系。
步骤S106,将第一子表拆分为多个分裂表,其中,每个分裂表的过滤条件为对多个具有一个指标的维度进行逻辑且操作的过滤条件。
步骤S108,基于各个分裂表的过滤条件,将对应于同一第一子表的各个分裂表进行表连接,得到各个第一子表的连接结果。
步骤S110,基于各个第一子表的连接结果,获取数据表对应于获取的过滤条件的第一过滤结果。
采用本申请实施例,通过采用将获取的过滤条件添加至数据表中的多个子表;查找出多个子表中需拆分的第一子表;将第一子表拆分为多个分裂表;基于各个分裂表的过滤条件,将对应于同一第一子表的各个分裂表进行表连接,得到各个第一子表的连接结果,基于各个第一子表的连接结果,获取数据表对应于获取的过滤条件的第一过滤结果的方式,相比于现有技术中的直接对数据表进行具有多个指标的维度进行逻辑且操作的过滤(相当于同一维度的多个且过滤),本申请通过将数据表中的第一子表拆分为多个具有一个指标的维度进行逻辑且操作的过滤条件(相当于一个维度的且过滤)的分裂表,然后将各个分裂表进行表连接,达到了减小且过滤的数据处理量的目的,从而实现了提高数据表进行同一维度的多次且过滤时的处理效率的技术效果,进而解决了对数据表进行同一维度的多次且过滤时的处理效率低的技术问题。
上述实施例中的对具有多个指标的维度进行逻辑且操作的过滤条件,即同一维度具有多个指标。
上述实施例中的方法可以应用在上述多对多关系的查询中,例如同一维度多次且过滤Sql Builder出现的场景中,在该场景下,可以通过如下形式的维度链和剖析维度来实现对数据的同一维度多次且过滤操作。
其中,维度链表示用于实现且过滤的同一维度的筛选条件,例如,该维度链可以为:product like'%a%'AND product like'%b%',该维度链表示既买了产品名称包含‘a’又买了产品名称包含‘b’的会话,该剖析维度可以为:操作系统简介OS Brief,上述的维度链即维度链过滤的条件,该维度链中包含有并且,也即“AND”的关系,可看作同一产品维度的两个且过滤条件。
同一维度且过滤可以理解为:两个过滤条件属于同一维度时,该两个过滤条件又存在“并且”的关联关系(即上述的逻辑且操作),用该两过滤条件对数据进行过滤即可以称之为同一维度且过滤,该过滤条件可以为上述的维度链,维度即可以为上述的剖析维度。
上述实施例还可以用在电商领域,由于电商和会话是多对一的关系,即在一个会话中可能买多个订单,每个订单包含多种产品,所以会出来同一产品维度多次进行的且过滤的维度链。
例如,选出既买了名称为‘c’的产品又买了名称为‘f’的产品的会话,则可以将各个会话数据表中的会话Session1和会话Session2中的各个订单进行拆分(即子表的拆分),拆分成一个维度的且过滤的形式(即拆分为分裂表),以找出符合既买了名称为‘c’的产品又买了名称为‘f’的产品的条件的会话,若会话Session1中包括订单A和订单B,会话Session2中包括订单C、订单D以及订单E,可以将会话Session1和会话Session2中各个订单进行拆分,得到一个维度的且过滤条件的数据。
可选地,将对应于同一子表的各个分裂表进行表连接包括:按照内连接的方式连接对应于同一子表的各个分裂表。
通过上述实施例,可以通过内连接的方式实现子表的表连接操作,使得经过表连接后的结果集可以表示且的关系,从而实现获取准确连接结果的效果。
在一个可选的实施例中,可以通过处理器运行下面的程序来运行实现上述的方法。
with s as(select server session id,osbrief,pv count,session durationfrom session),
product_a as(select distinct server session id from product whereproduct name like'%a%'),
product_b as(select distinct server session id from product whereproduct name like'%b%'),
product_final as(select product_a.server session id from product_ainner join product_b on product_a.server session id=product_b.server sessionid),
final as(select s.server session id,os brief,pv count,sessionduration from s inner join product_final on s.server session id=product_final.server session id),
select osbrief,sum(pv count)as session pageviews,count(*)as visits,avg(session duration)as avg session duration
from final
group by os brief
order by count(*)desc
limit 10
上述程序主要的过程为:查找会话中的产品名称为‘a’的产品,生成子表,查找会话中的产品名称为‘b’的产品,生成子表,然后将上述的两个子表进行内连接,来表达会话中既有产品名称为‘a’的产品,并且有产品名称为‘b’的产品。
下面以会话Session1为例对上述程序进行同理介绍。
会话Session1中包括订单A和订单B,其中,订单A中包括名称为‘a’、‘c’、‘d’的产品,可以将该订单数据表Session1中的订单从产品这一节点进行拆分,将其拆分成仅含有一个过滤条件的数据,其拆分后的形式可以为:
订单会话Session1--订单A--名称为‘a’的产品;
订单会话Session1--订单A--名称为‘b’的产品;
订单会话Session1--订单A--名称为‘c’的产品。
同样,会话Session1中还包括订单B,其中,订单B中包括名称为‘b’、‘d’、‘f’的产品,则可以将该订单数据表Session1中的订单拆分成仅含有一个且过滤条件的分裂表,其拆分后的形式可以为:
会话Session1--订单B--名称为‘b’的产品;
会话Session1--订单B--名称为‘d’的产品;
会话Session1--订单B--名称为‘f’的产品。
然后,可以根据预设条件(既买了名称为‘c’的产品又买了名称为‘f’的产品),将拆分后的各个分裂表进行表连接,如将“订单会话Session1--订单A--名称为‘c’的产品”和“订单会话Session1--订单B--名称为‘f’的产品”进行表连接,从而得到符合预设条件的会话Session1,从而得到同一产品维度的两次且过滤的结果。
可选地,基于各个第一子表的连接结果,获取数据表对应于获取的过滤条件的第一过滤结果的操作包括:获取数据表中无需拆分的第二子表;利用第二子表的过滤条件,对第二子表进行过滤,得到第二过滤结果;获取第二子表的第二过滤结果和第一子表的连接结果的汇总结果,将汇总结果作为第一过滤结果。
在上述实施例中,通过对子表中的无需拆分的第二子表进行过滤,然后将过滤的结果和第一子表的过滤结果汇总,从而实现对子表的高效准确的过滤的效果。
可选地,在将获取的过滤条件添加至数据表中的多个子表之前,该方法还包括:根据过滤需求从数据库中获取过滤条件;或者,获取预先设置的过滤条件。
在上述实施例中,可以通过多种方式来获取所有过滤条件,从而实现为后续的准确过滤提供保障的效果。
可选地,查找出多个子表中需拆分的第一子表包括:遍历数据表的多个子表的过滤条件;判断当前遍历到的子表的过滤条件是否为对具有多个指标的维度进行逻辑且操作的过滤条件;若当前遍历到的子表的过滤条件为对具有多个指标的维度进行逻辑且操作的过滤条件,则将当前遍历到的子表确定为第一子表。
在上述实施例中,每个子表可以包括多个维度的过滤条件,若其中存在有一个维度的过滤条件中包括两个同一维度的且过滤条件,则该子表被选定为需要拆分的子表,从而实现了准确高效选择需要拆分的子表的效果。
可选地,将需拆分的子表拆分为多个分裂表包括:遍历各个子表;将每个子表的多个维度进行排序,从每个节点的第一个维度开始执行以下步骤,直至每个子表均拆分为多个分裂表为止,其中,将第一个维度初始化为当前维度;判断当前维度的过滤条件中是否包含至少两个同一当前维度的且过滤条件;若判断出当前维度的过滤条件中包含至少两个同一当前维度的且过滤条件,则对当前维度的过滤条件中包含至少两个同一当前维度的且过滤条件进行拆分,拆分为多个包括一个当前维度的且过滤条件的分裂表;基于排序获取当前维度对应的下一维度,将子表的下一维度作为新的当前维度。
在将包括同一维度的多个且过滤条件的子表拆分为包括一个且过滤条件的分裂表时,可以将需要拆分的子表中的过滤条件的维度进行排序,依次判断各个维度的过滤条件是否包括至少两个同一维度的且过滤条件,若判断结果为是,则将该子表进行拆分,拆分成多个包括一个“且”过条件的分裂表,然后再将拆分后的分裂表进行下个维度的判断,若还需要拆分,则进一步进行拆分,直至拆分后的分裂表中每个维度的且过滤条件都为一个,则完成拆分程序。通过上述实施例,可以通过依次对各个维度进行判断和节点基的拆分,实现提高拆分效率的效果。
在一个可选的实施例中,以叶子表这一数据表为例,可以通过如下步骤实施数据的同一维度多次且过滤,其中,叶子表相当于上述实施例中的子表。
步骤S201,将所有过滤条件应用到叶子表。
步骤S202,判断每个叶子表结点的所有过滤条件,是否包含同一维度的且过滤。
步骤S203,对于包含同一维度的且过滤条件,进行解析树的分裂。
具体地,其思想为:分裂意味着原先仅有一个叶子节点(即子表,包含两个相同的维度且过滤条件),分裂为两个叶子节点(即分裂表,每个分裂表包含一个维度且过滤条件),若多次出现,则进行多次分裂,最终每个子表对于多次出现的维度,仅出现一次,再将分裂后的节点采用内连接Inner Join的方式连接,表达且的关系,即既满足分裂子表1的条件,又满足分裂子表2的条件。其具体实现步骤可以包括:先将该事实表上其它所有维度过滤条件应用上,写成Sql里的一个子表表达式;再将包含多次同一维度且过滤的子表进行分裂,分裂所基于的表为上面应用所有过滤后的子表(即数据表),将分裂后的子表,进行表连接,组合成新的节点,连接方式为内连接Inner Join(意即在两表里均出现,也即且关系)。
通过上述实施例,可以通过解析树节点分裂,再内连接Inner Join的方式表示同一维度的多次过滤;可以通过先定义所有过滤条件的子表,再对其进行分裂,避免所有分裂表都进行一次全表IO的操作,只需要对过滤后的子表(小表)进行相关过滤即可,提升性能。
实施例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 (8)
1.一种数据表的过滤方法,其特征在于,包括:
将获取的过滤条件添加至数据表中的多个子表;
查找出所述多个子表中需拆分的第一子表,其中,所述第一子表的过滤条件为对具有多个指标的维度进行逻辑且操作的过滤条件,同一所述维度的多个指标之间具有逻辑且关系;
将所述第一子表拆分为多个分裂表,其中,每个分裂表的过滤条件为对多个具有一个指标的维度进行逻辑且操作的过滤条件;
基于各个分裂表的过滤条件,将对应于同一第一子表的各个分裂表进行表连接,得到各个所述第一子表的连接结果;
基于各个所述第一子表的连接结果,获取所述数据表对应于所述获取的过滤条件的第一过滤结果;
其中,查找出所述多个子表中需拆分的第一子表包括:
遍历所述数据表的所述多个子表的过滤条件;
判断当前遍历到的子表的过滤条件是否为对具有多个指标的维度进行逻辑且操作的过滤条件;
若所述当前遍历到的子表的过滤条件为对具有多个指标的维度进行逻辑且操作的过滤条件,则将所述当前遍历到的子表确定为所述第一子表。
2.根据权利要求1所述的方法,其特征在于,将对应于同一第一子表的各个分裂表进行表连接包括:
按照内连接的方式连接对应于同一第一子表的各个所述分裂表。
3.根据权利要求1所述的方法,其特征在于,基于各个所述第一子表的连接结果,获取所述数据表对应于所述获取的过滤条件的第一过滤结果包括:
获取所述数据表中无需拆分的第二子表;
利用所述第二子表的过滤条件,对所述第二子表进行过滤,得到第二过滤结果;
获取所述第二子表的第二过滤结果和所述第一子表的连接结果的汇总结果,将所述汇总结果作为所述第一过滤结果。
4.根据权利要求1所述的方法,其特征在于,在将获取的过滤条件添加至数据表中的多个子表之前,所述方法还包括:
根据过滤需求从数据库中获取所述过滤条件;或者
获取预先设置的所述过滤条件。
5.一种数据表的过滤装置,其特征在于,包括:
添加单元,用于将获取的过滤条件添加至数据表中的多个子表;
查找单元,用于查找出所述多个子表中需拆分的第一子表,其中,所述第一子表的过滤条件为对具有多个指标的维度进行逻辑且操作的过滤条件,同一所述维度的多个指标之间具有逻辑且关系;
拆分单元,用于将所述第一子表拆分为多个分裂表,其中,每个分裂表的过滤条件为对多个具有一个指标的维度进行逻辑且操作的过滤条件;
表连接单元,用于基于各个分裂表的过滤条件,将对应于同一第一子表的各个分裂表进行表连接,得到各个所述第一子表的连接结果;
获取单元,用于基于各个所述第一子表的连接结果,获取所述数据表对应于所述获取的过滤条件的第一过滤结果;
其中,所述查找单元包括:
遍历模块,用于遍历所述数据表的所述多个子表的过滤条件;
判断模块,用于判断当前遍历到的子表的过滤条件是否为对具有多个指标的维度进行逻辑且操作的过滤条件;
确定模块,用于若所述当前遍历到的子表的过滤条件为对具有多个指标的维度进行逻辑且操作的过滤条件,则将所述当前遍历到的子表确定为所述第一子表。
6.根据权利要求5所述的装置,其特征在于,所述表连接单元包括:
连接模块,用于按照内连接的方式连接对应于同一第一子表的各个所述分裂表。
7.根据权利要求5所述的装置,其特征在于,所述获取单元包括:
第一获取模块,用于获取所述数据表中无需拆分的第二子表;
过滤模块,用于利用所述第二子表的过滤条件,对所述第二子表进行过滤,得到第二过滤结果;
处理模块,用于获取所述第二子表的第二过滤结果和所述第一子表的连接结果的汇总结果,将所述汇总结果作为所述第一过滤结果。
8.根据权利要求5所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于在将获取的过滤条件添加至数据表中的多个子表之前,根据过滤需求从数据库中获取所述过滤条件;或者,
第三获取模块,用于获取预先设置的所述过滤条件。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201511032703.3A CN106933926B (zh) | 2015-12-31 | 2015-12-31 | 数据表的过滤方法及装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201511032703.3A CN106933926B (zh) | 2015-12-31 | 2015-12-31 | 数据表的过滤方法及装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN106933926A CN106933926A (zh) | 2017-07-07 |
| CN106933926B true CN106933926B (zh) | 2019-11-12 |
Family
ID=59444292
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201511032703.3A Expired - Fee Related CN106933926B (zh) | 2015-12-31 | 2015-12-31 | 数据表的过滤方法及装置 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN106933926B (zh) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN109886804B (zh) * | 2019-02-25 | 2023-09-05 | 创新先进技术有限公司 | 一种任务处理方法及装置 |
| CN112287219B (zh) * | 2020-10-28 | 2024-07-23 | 帮帮有信(北京)科技有限公司 | 服务需求方与服务提供方匹配方法及装置 |
| CN112767013A (zh) * | 2021-01-05 | 2021-05-07 | 北京锐安科技有限公司 | 一种业务报表拆分方法、装置、服务器及存储介质 |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN102334098A (zh) * | 2009-02-25 | 2012-01-25 | 微软公司 | 对交互式汇总表的多条件过滤 |
| CN104408169A (zh) * | 2014-12-09 | 2015-03-11 | 北京国双科技有限公司 | 基于多维表达式语言的维度查询方法及装置 |
| CN105045877A (zh) * | 2015-07-20 | 2015-11-11 | 深圳市深信服电子科技有限公司 | 数据库数据分片存储方法和装置、数据查询方法和装置 |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9141667B2 (en) * | 2013-01-31 | 2015-09-22 | International Business Machines Corporation | Efficient join with one or more large dimension tables |
-
2015
- 2015-12-31 CN CN201511032703.3A patent/CN106933926B/zh not_active Expired - Fee Related
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN102334098A (zh) * | 2009-02-25 | 2012-01-25 | 微软公司 | 对交互式汇总表的多条件过滤 |
| CN104408169A (zh) * | 2014-12-09 | 2015-03-11 | 北京国双科技有限公司 | 基于多维表达式语言的维度查询方法及装置 |
| CN105045877A (zh) * | 2015-07-20 | 2015-11-11 | 深圳市深信服电子科技有限公司 | 数据库数据分片存储方法和装置、数据查询方法和装置 |
Non-Patent Citations (1)
| Title |
|---|
| 基于GIS的农产品指标数据库表结构设计研究;张崇;《计算机工程与设计》;20110116;第32卷(第1期);192-196 * |
Also Published As
| Publication number | Publication date |
|---|---|
| CN106933926A (zh) | 2017-07-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP5875711B2 (ja) | ウェブページ検索の方法及び装置 | |
| CN106708841B (zh) | 网站访问路径的聚合方法和装置 | |
| CN111061750A (zh) | 一种查询处理方法、装置及计算机可读存储介质 | |
| CN109885684B (zh) | 一种类簇处理方法及装置 | |
| CN104899225A (zh) | 对象关系映射方法、装置及处理器 | |
| CN107729251A (zh) | 测试用例管理方法及装置 | |
| CN107391506A (zh) | 用于查询数据的方法和装置 | |
| CN113009839B (zh) | 场景推荐方法和装置、存储介质及电子设备 | |
| CN106933926A (zh) | 数据表的过滤方法及装置 | |
| CN111625561A (zh) | 一种数据查询方法及装置 | |
| CN106933927B (zh) | 数据表的连接方法和装置 | |
| CN106933919B (zh) | 数据表的连接方法及装置 | |
| CN106021582B (zh) | 位置信息过滤的方法、提取有效网页信息的方法及装置 | |
| CN104050003A (zh) | 一种采用shell脚本启动Nutch采集系统的方法 | |
| CN108959584B (zh) | 一种基于社区结构的处理图数据的方法及装置 | |
| CN106933934B (zh) | 数据表的连接方法和装置 | |
| CN106933904B (zh) | 数据的过滤方法和装置 | |
| CN115733788A (zh) | 基于图数据库的otn网络路由搜寻方法、系统及存储介质 | |
| CN103646096B (zh) | 一种通过用户配置生成子查询的方法与装置 | |
| CN114691685A (zh) | 一种基于数据湖的数据关联方法及装置 | |
| CN104750834A (zh) | 一种规则的存储方法、匹配方法及装置 | |
| CN105095455B (zh) | 一种数据连接优化方法和数据运算系统 | |
| CN109753520B (zh) | 半连接查询方法、装置、服务器及存储介质 | |
| CN108268523A (zh) | 数据库聚合处理方法及装置 | |
| CN116226082A (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 GRIDSUM TECHNOLOGY Co.,Ltd. Address before: 100086 Cuigong Hotel, 76 Zhichun Road, Shuangyushu District, Haidian District, Beijing Applicant before: BEIJING GRIDSUM TECHNOLOGY Co.,Ltd. |
|
| GR01 | Patent grant | ||
| GR01 | Patent grant | ||
| CF01 | Termination of patent right due to non-payment of annual fee | ||
| CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20191112 |