对相异计数度量的聚合导航的优化的制作方法

文档序号:6503859阅读:220来源:国知局
专利名称:对相异计数度量的聚合导航的优化的制作方法
技术领域
所描述的技术一般地涉及数据库查询,更具体地说,涉及有效地执行相异计数(distinct count)度量。
背景技术
数据库是数据的集合。用户一般利用诸如数据库管理系统(DBMS)之类的计算机程序来存储、检索和修改数据库中的数据。
一类DBMS是关系数据库管理系统,这种数据库管理系统将数据存储在表中。表是一系列相交的行和列。表的行一般代表记录,记录是关于特定项目的信息的集合,而列一般代表字段,字段指定记录的特定属性,例如,包含在记录的每个字段中的特定类型的数据。每个字段包含具有针对相交的行和列的特定属性的数据。
存储在关系数据库的表中的数据通常是利用查询和分析工具来访问和检索的。例如,用户可以使用工具来对表、行和单个数据元素执行特定的操作。一类操作是聚合操作,并且一种这类聚合功能被称作相异计数。
相异计数是非常重要并且常用的分析需求。对于由被划分为多列的行组成的明细表而言,相异计数指示在其他列上满足零个或更多个条件的多个行的第一列中出现的不同值的数目。例如,对于每行包含一个项目的有序项目明细表,其中客户已对项目进行了排序,并且每行被划分为客户ID列、项目ID列、订单日期列和客户邮政编码列,用户可能希望对包含邮政编码98210的行中包含的不同的用户ID的数目进行计数。
传统上,用于执行相异计数度量的已知方法是不能利用聚合导航(aggregate navigation)来执行相异计数的。相反,这些传统方法总是从最详细的源获得相异计数度量,从而导致极大的性能瓶颈。在利用传统方法在分析环境中执行相异计数度量时,一般会遇到很大的性能问题,这是由于这些用于相异计数的传统方法自身的特性决定的,它们比其他聚合功能慢多于一个数量级。在报告中有多于一个相异计数测量时,该问题就更复杂了。
因此,利用聚合导航的用于执行相异计数度量的技术将会非常有用。


图1是示出通常并入在执行设施的至少一些计算机系统中的所选组件的框图。
图2A到图2C示出了根据一些实施例由设施用来执行相异计数度量的方法的流程图。
图3示出了示例性的明细表。
图4A到图C示出了与图3所示明细表相对应的示例性维度表。
图5到图10示出了与图3所示明细表相对应的示例性聚合表。
图11示出了根据一些实施例由设施用来标识聚合表以用于回复相异计数查询的方法的流程图。
具体实施例方式
本发明描述了用于利用聚合导航执行相异计数度量的软件设施(“设施”)。在某些实施例中,该设施通过对聚合表执行计数操作来计算相异计数度量。在某些实施例中,该设施通过对一般用来进行传统相异计数操作的明细表小的表执行相异计数操作,来计算相异计数度量。通过以此方式对大多数查询完全消除相异计数,以及在某些其他情形中通过对较小的表执行相异计数来给出相同的答案(即,相异计数度量),从而在与对明细表执行的传统相异计数相比时,该设施在查询时间方面提供了极大的加速(例如,增强)。
在整个描述中,以下术语一般具有下述含义术语“聚合表”指对来自其他数据库表的细节级记录进行总结或合并的表。
术语“基表”或“明细表”或“事实表”指包含明细数据的数据库表。
术语“计数”指对被选中的列中的行数的计数。
术语“立方体(cube)”指包含维度和测量的多维结构。维度定义立方体的结构。测量提供感兴趣的数值。
术语“维度”指立方体的结构属性,其是描述事实表中的数据的有组织的类别(级别)层次结构。这些类别一般描述被执行分析的类似的成员集合。维度是可以在其上聚合的字段(列)。例如,时间维度可能包括以下级别年、月和日。
术语“维度层次结构”指一个维度中的一组成员及它们彼此的相对位置。
术语“相异计数”或“计数相异”指对选中的列中的不同行的数目的计数。也是指在没有重复计数的情况下对被选中的列中的行的数目的计数。
术语“粒度”或“颗粒”指数据元素中包含的信息的特异性程度。
术语“层次结构”指一种逻辑树结构,该结构将一个维度中的成员组织起来,以使得每个成员具有一个父成员和零个或更多个子成员。
术语“级别”或者“类别”指一个维度层次结构中的一组成员的名称,以使该组中的全部成员距该层次结构的根的距离相等。例如,时间维度可能包括以下级别年、月和日。
术语“测量”在立方体中指这样的一组值,该组值基于立方体的事实表中的列。测量是被聚合和分析的中心值。
术语“成员”指代表数据的一次或多次出现的维度中的项目。成员可以是唯一的,也可以是非唯一的。例如,2003和2004代表时间维度中的年级别中的不同成员。相反,十月代表时间维度中的月级别中的非唯一的成员,因为如果时间维度包含多于1年的数据,则在时间维度中可以存在多于一个十月。
术语“查询”指用户“问”数据库以便获得有用格式的信息的问题。
术语“约束”指对一列施加的条件或标准。例如,约束一般指这样的一种方式,该方式将查询限制到具有与特定标准匹配的列值的那些行。
术语“表”指一种二维对象,该对象包括行和列,用于在关系数据库中存储数据。表是以行和列组织的信息的表示。
在某些实施例中,在以下情形中设施利用聚合表而不是明细表来解答相异计数度量(1)如果存在包含正被聚合(即相异计数)的标识符(即,测量)的聚合表,或者(2)如果聚合表的行包含对正被相异计数的标识符的计数而不是标识符自身。
在存在包含正被聚合的标识符的聚合表的情形中(情形1)a.如果被相异计数的标识符在聚合表中是不同的,即,如果确信被相异计数的标识符在聚合表中的每行中都不同,则设施将计数运算符而不是慢得多的相异计数运算符应用到聚合表。在这种情形中,对于主(msater)/细节关系的主聚合表,其中细节需要COUNT DISTINCT(计数相异),而主不需要。一个示例是Order/OrderDetails,其中产品的不同订单的数目必须是相异计数,因为其经由OrderDetails加入到Product中(即,对OrderDetails执行COUNT DISTINCT)。相反,对每个其他维度的聚合仅要求更快的计数操作(即,对Order头部表执行计数)。
b.如果被相异计数的标识符在聚合表中不是唯一的,则设施将相异计数运算符应用到聚合表。在这种情形中,相异计数键(key)作为聚合表的一部分被存储。例如,假设用户对在过去数月中已购买了特定产品的不同客户的数目感兴趣。可以使用具有维度CustomerID、ProductID和MonthID的聚合表,通过对CustomerID运行COUNT DISTINCT来支持在颗粒[Product,Month]处或上的聚合,从而确定在过去数月中已购买了特定产品的不同客户的数目。应当理解,本领域技术人员可以预见到一些情形,在这些情形中,与利用Order/OrderItem基表或事实表执行相异计数相比,这在性能上会快若干数量级。
在存在聚合表但是聚合表的行包含对被相异计数的标识符的计数而不是标识符自身的情形中(情形2)a.如果聚合表具有仅涉及依赖于被计数的标识符的维度的维数,则设施对来自聚合表的适当的行的计数求和,以获得正确的相异计数。在这种情形中,COUNT DISTINCT被存储在聚合表中,并且在该聚合表的颗粒处或上的任何查询都可以通过对预先计算出的COUNT DISTINCT数目求和来利用该聚合。一个有用的示例是用于对不同订单的数目进行计数。考虑具有以下维度的主题区域Time、Customer、Product和Channel。由于是示意性语法,所以可以在除了产品之外的所有维度上对订单数目的测量进行求和(即,给定的订单是在单个日期、对单个客户、在单个通道上卖出的,而多个产品可以与该订单相关联)。在这种情形中,可以在All Product的颗粒上创建聚合表,并且跨过其他维度(例如,Month、CustomerZip和Channel)的任何颗粒。在聚合表的颗粒处或上的任何查询现在都将命中该聚合表,并且对预先计算出的相异计数相加。例如,示出最近一个季度由Web通道产生的相异订单数目的查询将命中该聚合表。
b.如果聚合表具有一些依赖于被相异计数的标识符的维度和一些独立于被相异计数的标识符的维度,则只要查询在级别上与对独立级别的聚合的级别匹配,该设施就对计数求和来获得正确的相异计数。一个示例可以是在如下情形时,即当查询针对客户的相异计数,并且聚合表具有按产品和(客户的主地址的)邮编对客户的计数时。然后,通过将客户添加到一个州的每个邮编中,可以获得对该州的客户数目的相异计数(因为没有客户可以同时具有两个州中的主要地址)。然而,我们不能通过跨产品进行添加来获得针对品牌的客户数目的相异计数(因为客户可能购买一个品牌的多于一种产品)。
c.如果聚合表中的所有维度都独立于被相异计数的标识符,则当且仅当查询的级别与聚合表的级别严格匹配时设施才利用该聚合。在这种情形中,COUNT DISTINCT作为聚合表的一部分被存储,但是仅支持准确的级别/颗粒匹配。例如,具有维度ProductID、MonthID和NUM CUSTOMERS的聚合表仅可以用于在[Product,Month]颗粒处查询,而不能用于在[Product,Quarter]颗粒处查询。换句话说,后一查询不命中聚合表。
在一个实施例中,前述功能由以下对象支持新的元数据对象(AoverrideAggrRule)、测量(AmeasureDefn)和逻辑表源(ALogicalTableSource)之间的关系对象。换言之,对于给定的逻辑表源(LTS),设施可以指定重载(override)聚合表达式。如果设施未指定任何重载,则当前(即,传统的相异计数)行为获胜。如果设施针对LTS指定了重载,则可以应用聚合规则。
例如,用于上述情形1.b的LTS重载表达式是COUNT(DISTINCT“客户数目”)。用于上述情形1.a的LTS重载是COUNT(“订单数目”)。用于上述情形2.a的LTS重载是SUM(“订单数目”)。
参考附图的图1到图11,可以最好地理解设施的各种实施例及其优点。附图中的元素不一定是按比例的,而是为了清楚示出本发明的原理作出了突出。在整个附图中,相似的标号用于各个附图中相似和相应的部分。
图1是示出通常并入在执行该设施的至少一些计算机系统中的所选组件的框图。这些计算机系统100可以包括一个或多个中央处理单元(“CPU”)102,用于执行计算机程序;计算机存储器104,用于当程序和数据(包括数据结构)被使用时存储程序和数据;永久存储设备106,例如硬盘驱动器,用于永久存储程序和数据;计算机可读介质驱动器108,例如CD-ROM驱动器,用于读取存储在计算机可读介质中的程序和数据;以及网络连接110,用于例如经由因特网将计算机系统连接到其他计算机系统,用于交换程序和/或数据(包括数据结构)。
可以在由计算机系统100或其他设备执行的诸如程序模块之类的计算机可读介质的总的上下文中描述该设施。一般而言,程序模块包括例程、程序、对象、组件、数据结构等,它们执行特定任务或者实现特定抽象数据类型。存储器104和永久存储设备106是计算机可读介质,其可以包含实现设施的指令。应当意识到,除了实现设施的指令之外,存储器104和永久存储设备106还可以具有各种其他内容。
应当意识到,计算机系统100可以包括用于显示程序输出的一个或多个显示设备和用于接收用户输入的一个或多个输入设备,所述显示设备例如是视频监视器或LCD面板,所述输入设备例如是键盘、麦克风或者诸如鼠标之类的点选设备。尽管上述配置的计算机系统100一般用于支持设施的操作,但是应当意识到,该设施也可以利用各种类型和配置并且具有各种组件的设备来实现。
在下面的讨论中,结合各种说明性实施例描述了设施的实施例。应当意识到,设施的实施例也可以以各种方式用在与这些示例极大不同的环境中。
图2A到图2C示出了根据一些实施例由设施用来执行相异计数度量的方法200的流程图。在步骤202,设施接收到请求对明细表的标识符进行相异计数的查询。该查询可以包括一个或多个约束。在步骤204,设施标识出与该明细表相对应的聚合表。在步骤206,设施对标识出的聚合表进行检查来确定是否存在包含被相异计数的标识符的聚合表。
如果存在包含被相异计数的标识符的聚合表,则在步骤208,设施检查该聚合表的每行来确定被相异计数的标识符在该聚合表的每行中是否是不同的。如果被相异计数的标识符在聚合表的每行中是不同的,则在步骤210中,设施对聚合表的满足所指定的查询约束的行执行计数操作,以导出所请求的相异计数度量。在这里,设施通过利用聚合导航导出相异计数度量来提供性能增强。换言之,设施通过对更小的聚合表执行更快的计数操作来提供性能增强。
否则,如果被相异计数的标识符不是在聚合表的每行中都不同,则在步骤212,设施对聚合表的满足所指定的查询约束的行执行相异计数操作,以导出所请求的相异计数度量。在这里,设施通过利用聚合导航导出相异计数度量来提供性能增强。换言之,设施通过对更小的聚合表执行相异计数操作来提供性能增强。
如果在步骤206设施确定出不存在包含被相异计数的标识符的聚合表,则在步骤214,设施进行检查来确定是否存在这样的聚合表该聚合表的行包含对被相异计数的标识符的计数。每个计数指示对于维度值的不同组合,被相异计数的标识符在明细表中出现的次数。每个维度值位于其维度的特定级别上。如果存在这样的聚合表该聚合表的行包含对被相异计数的标识符的计数,则在步骤216,设施确定是否存在指定的查询约束要处理。如果存在指定的查询约束要处理,则在步骤218,设施进行检查来确定当前正被处理的指定约束是否是在与聚合表的维度值相同或更高的级别上的依赖维度的约束。
如果当前正处理的指定约束是在与聚合表的维度值相同或者更高级别上的依赖维度的约束,则设施返回到步骤216来对另一个要处理的查询约束进行处理。否则,如果当前正处理的指定约束不是在与聚合表的维度值相同或者更高级别上的依赖维度的约束,则在步骤220,设施进行检查来确定当前正被处理的指定约束是否是在与聚合表的维度值相同的级别上的独立维度的约束。
如果当前正被处理的指定约束是在与聚合表的维度值相同的级别上的独立维度的约束,则设施返回步骤216来对另一个要处理的查询约束进行处理。否则,如果当前正被处理的指定约束是在与聚合表的维度值不相同的级别上的独立维度的约束,则在步骤222,设施对明细表的满足指定的查询约束的行执行相异计数操作,以导出所请求的相异计数度量。在这种情形中,由于设施无法利用聚合表来导出相异计数度量,所以不存在增强性能。
如果在步骤216设施确定没有更多指定的查询约束要处理,则在步骤224,设施对聚合表的维度值满足所有指定的查询约束的行中包含的计数求和,以导出所请求的相异计数度量。换言之,只要查询中的约束在级别上与聚合表中的独立维度的级别匹配,就可以对计数求和来给出正确的相异计数答案。在这里,设施检查查询中包含的每个约束并且确定这些约束中的每个是对在与聚合表的维度值相同或者更高的级别上的依赖维度的约束,还是对在与聚合表的维度值相同的级别上的独立维度的约束。设施然后可以在与聚合表的维度值相同(即,刚好)或者比聚合表的维度值高的级别上的依赖维度之间和在与聚合表的维度值相同的级别上的独立维度之间进行求和。
在这里,设施确定以下之一(1)聚合表仅包含依赖于被相异计数的标识符的维度(步骤218),并且来自聚合表的适当的行的计数(即,聚合表的维度值满足所有指定的查询约束的行)可以被求和来获得正确的相异计数(步骤224);(2)聚合表包含一些依赖于被相异计数的标识符的维度和一些独立于被相异计数的标识符的维度(步骤218和步骤220),并且来自聚合表的适当的行的计数(即,聚合表的维度值满足所有指定的查询约束的行)可以被求和来获得正确的相异计数(步骤224);或者聚合表中的所有维度都独立于被相异计数的标识符(步骤220),并且从而当且仅当查询的级别与表的级别准确匹配时才可以使用聚合。因此,设施通过利用聚合导航导出相异计数度量来提供性能增强。换言之,设施通过对更小的聚合表的适当的行执行更快的求和操作来提供性能增强。
如果在步骤214设施确定出不存在具有包含对被相异计数的标识符的计数的行的聚合表,则在步骤226,设施对明细表的满足指定的查询约束的行执行相异计数操作,以导出所请求的相异计数度量。在这种情形中,由于设施未利用聚合导航来导出相异计数度量,所以未增强性能。
本领域技术人员将意识到,对于这里所述的该过程和方法以及其他过程和方法,在这些过程和方法中执行的功能可以按照不同的顺序实现。此外,概括的步骤仅是示例性的,并且一些步骤可以是可选的、可以与较少的步骤组合、或者延伸到额外的步骤中,而不脱离本发明的本质。
将结合以下示例进一步说明方法200的各个方面。应当意识到,出于说明目的提供了以下示例,而不应当认为是穷尽或完备方式的。这些示例假定了数据库包括图3所示的明细表30和图4A到图4C所示的与明细表30相对应的维度表。每个维度表包含描述表30中的记录的属性。
如图所示,明细表30包含由客户发出的10条订单记录。每条记录被示为具有5列或维度,标记为“订单号”、“产品”、“客户”、“订单日期”和“递送邮编”。如果第二维度中的值可以具有第一维度中的一个值,或者可以仅与第一维度中的一个值相关联,则第一维度“依赖”于第二维度。否则,如果第二维度中的值可以具有第一维度中的多个值,或者可以与第一维度中的多个值相关联,则第一维度“独立”于第二维度。在表30中,“客户”依赖于“订单号”,因为每个订单仅与一个客户相关联,或者仅由一个客户发出。类似地,“订单日期”依赖于“订单号”,因为每个订单与单个日期相关联,或者仅在单个日期被发出。相反,“产品”独立于“订单号”,因为每个订单可以是多个产品的订单。同样,“递送邮编”也独立于“订单号”,因为订单中的产品可以被向多个邮政编码处递送,例如,订单可以是多个产品的订单,其中一些产品向第一邮政编码处递送,而其余的产品向不同的第二邮政编码处递送。
维度表1(图4A)包含关于表30中的“产品”维度的信息,并且示出了将产品进一步划分到其品牌的层次结构。维度表2(图4B)包含关于表30中的“递送邮编”维度的信息,并且示出了将邮编进一步划分到其对应的州的层次结构。维度表3(图4C)包含关于表30中的“订单日期”维度的信息,并且示出了将订单日期中的月进一步划分到其对应的年的层次结构。
示例1被相异计数的标识符在聚合表中出现并且是唯一的——使用计数操作作为示例,用户可能对获得如明细表30所记录的由每个客户发出的不同订单的数目的相异计数感兴趣。在这里,设施可以接收来自用户的字符串“Request客户,订单数目”,设施将该字符串理解为对由每个客户发出的不同订单的数目进行相异计数查询(步骤202)。设施确定出“客户”是对相异计数查询的约束。设施还确定出可以通过对明细表30中的标识符“订单号”执行相异计数来获得对不同订单的数目的相异计数查询。
假定设施将图5所示的Agg_Table_1标识为与明细表30相关联的聚合表(步骤204),并且该表包含回复查询所必需的标识符“订单号”,例如,是被相异计数的标识符的聚合(步骤206),则设施对Agg_Table_1进行检查来看标识符“订单号”在Agg_Table_1的每行中是否不同(步骤208)。如图所示,Agg_Table_1包含三列,第一列指示订单号、第二列指示客户、第三列指示日期。可见,标识符“订单号”在Agg_Table_1的每行中都不同,设施得出结论它可以通过对Agg_Table_1中满足约束(即,客户)的行进行计数来回答相异计数查询(步骤210)。
假定设施或者结合了结构化查询语言(SQL)处理器的功能和特征,或者耦合到SQL处理器,则设施可以将接收到的字符串转换为以下SQL表达式来确定所请求的对由每个客户发出的不同订单的数目的相异计数SELECT客户COUNT(订单号)FROM Agg_Table_1GROUP BY客户在一个实施例中,设施的SQL处理器组件对上述SQL表达式进行处理,并且产生如图6所示的Distinct_Count_Table_1,该表包含对由每个客户发出的不同订单的数目的相异计数。如图所示,Distinct_Count_Table_1包含两列,一列指示每个客户,另一列包含所发出的订单的数目的相异计数。从Distinct_Count_Table_1可见,客户1发出了两个订单,客户2发出了两个订单。
设施可以通过对Agg_Table_1应用计数运算符来回答其他相异计数查询。例如,用户可能请求对如明细表30中记录的每年发出的不同订单的数目进行相异计数,并且向设施提交字符串“Request年,订单号”。设施将接收到的字符串解释为对每年发出的不同订单的数目的相异计数查询,并且确定出被相异计数的标识符是“订单号”,并且对相异计数查询的约束是“年”。
如图可见标识符“订单号”在Agg_Table_1的每行中都不同,设施得出结论它可以通过对Agg_Table_1的满足约束(即,年)的行进行计数来回答相异计数查询。因此,设施将接收到的字符串转换为以下SQL表达式SELECT年COUNT(订单号)FROM Agg_Table_1GROUP BY年上述SQL表达式被处理来确认存在三个2003年发出的订单和一个2004年发出的订单。
类似地,通过对Agg_Table_1执行计数操作,可以获得对如明细表30所记录的2003年1月由每个客户发出的不同订单的数目的相异计数。该相异计数请求可由以下字符串表示“Request客户,日期=2003年1月的订单号”。设施确定出被相异计数的标识符是“订单号”,并且对该相异计数查询的约束是“客户”和“日期=2003年1月”。
如图可见标识符“订单号”在Agg_Table_1的每行中都不同,设施得出结论它可以通过对Agg_Table_1的满足约束(即,客户和日期=2003年1月)的行进行计数来回答相异计数查询。因此,设施将接收到的字符串转换为以下SQL表达式SELECT客户COUNT(订单号)FROM Agg_Table_1WHERE日期=‘2003年1月’GROUP BY年上述SQL表达式被处理来确认客户1在2003年1月发出了一个订单,而客户2在2003年1月未发出订单(发出了零个订单)。
示例2被相异计数的标识符在聚合表中出现但是不唯一——使用相异计数操作作为示例,用户可能对获得如明细表30所记录的按照每个品牌的不同订单的数目的相异计数感兴趣。在这里,设施可以接收来自用户的字符串“Request品牌,订单号”,设施将该字符串理解为对按照每个品牌的不同订单的数目进行相异计数查询(步骤202)。设施确定出“品牌”是对相异计数查询的约束。设施还确定出可以通过对明细表30中的标识符“订单号”执行相异计数来获得对不同订单的数目的相异计数查询。
假定设施将图7所示的Agg_Table_2标识为与明细表30相关联的聚合表(步骤204),并且该表包含回答查询所必需的标识符“订单号”,例如,是被相异计数的标识符的聚合(步骤206),则设施对Agg_Table_2进行检查来看标识符“订单号”在Agg_Table_2的每行中是否不同(步骤208)。如图所示,Agg_Table_2包含三列,第一列指示订单号、第二列指示品牌、第三列指示日期。可见,标识符“订单号”在Agg_Table_2的每行中并不都不同,设施得出结论它可以通过对Agg_Table_2的满足约束(即,品牌)的行进行相异计数来回答相异计数查询(步骤212)。因此,设施将接收到的字符串转换为以下SQL表达式SELECT品牌COUNT(DISTINCT订单号)FROM Agg_Table_2GROUP BY品牌上述SQL表达式被处理来确认存在四个按照品牌1发出的订单和三个按照品牌2发出的订单。
设施可以通过对Agg_Table_2应用计数运算符来回答其他相异计数查询。例如,用户可能请求对如明细表30中记录的每年发出的不同订单的数目进行相异计数,并且向设施提交了字符串“Request年,订单号”。设施将接收到的字符串解释为对每年发出的不同订单的数目的相异计数查询,并且确定出被相异计数的标识符是“订单号”,并且对相异计数查询的约束是“年”。
如图可见标识符“订单号”在Agg_Table_2的每行中并不都不同,设施得出结论它可以通过对Agg_Table_2的满足约束(即,年)的行进行相异计数来回答相异计数查询。因此,设施将接收到的字符串转换为以下SQL表达式SELECT年COUNT(DISTINCT订单号)FROM Agg_Table_2GROUP BY年上述SQL表达式被处理来确认存在三个2003年发出的订单和一个2004年发出的订单。
示例3聚合表不包含被相异计数的标识符——仅包含依赖维度作为示例,用户可能对获得如明细表30所记录的每年发出的不同订单的数目的相异计数感兴趣。在这里,设施可以接收来自用户的字符串“Request年,订单号”,设施将该字符串理解为对每年发出的不同订单的数目进行相异计数查询(步骤202)。设施确定出“年”是对相异计数查询的约束。设施还确定出可以通过对明细表30中的标识符“订单号”执行相异计数来获得对不同订单的数目的相异计数查询。
假定设施将图8所示的Agg_Table_3标识为与明细表30相关联的聚合表(步骤204),并且多个行包含对被相异计数的标识符“订单号”的计数,例如,是被相异计数的标识符的聚合(步骤208),则设施对Agg_Table_3进行检查来确定Agg_Table_3中包含的维度的类型。如图所示,Agg_Table_3包含二列,第一列指示日期、第二列包含对订单的数目的计数。在明细表30中,订单可以仅有一个客户和一个日期。如果聚合表仅包含依赖维度,则设施可以跨依赖维度求和来导出相异计数。至于Agg_Table_3,设施确定出Agg_Table_3仅包含依赖维度,并且约束“年”是对在与Agg_Table_3中的值(例如,月和年)相同或者比Agg_Table_3中的值高的级别上的依赖维度(即,日期)的约束(步骤218)。维度年处于比日期(例如,月和年)高的级别上,如维度表3(图4C)所示。因此,设施得出结论它可以通过对Agg_Table_3的维度值(即,日期值)满足查询中的所有约束(即,年)的行中包含的计数(即,对订单的数目的计数)求和来回答相异计数查询(步骤224)。因此,设施将接收到的字符串转换为以下SQL表达式SELECT年COUNT(订单号)FROM Agg_Table_3GROUP BY年上述SQL表达式被处理来确认存在三个2003年发出的订单和一个2004年发出的订单。
示例4聚合表不包含被相异计数的标识符——包含某些依赖维度和某些独立维度作为示例,用户可能对获得如明细表30所记录的按照日期和品牌的每个组合的不同订单的数目的相异计数感兴趣。在这里,设施可以接收来自用户的字符串“Request日期,品牌,订单号”,设施将该字符串理解为对按照日期和品牌的每个组合发出的不同订单的数目进行相异计数查询(步骤202)。设施确定出“日期”和“品牌”是对相异计数查询的约束。设施还确定出可以通过对明细表30中的标识符“订单号”执行相异计数来获得对不同订单的数目的相异计数查询。
假定设施将图9所示的Agg_Table_4标识为与明细表30相关联的聚合表(步骤204),并且多个行包含对被相异计数的标识符“订单号”的计数,例如,是被相异计数的标识符的聚合(步骤208),则设施对Agg_Table_4进行检查来确定Agg_Table_4中包含的维度的类型。如图所示,Agg_Table_4包含三列,第一列指示日期、第二列指示品牌、第三列包含对订单的数目的计数。在明细表30中,订单可以仅有一个日期,但是可能是针对多个产品,这多个产品可能是多个品牌的,如维度表1所示(图4A)。如果聚合表包含一些依赖于标识符“订单号”的维度和一些独立于标识符的维度,则只要查询在级别上与独立维度的聚合表的级别匹配,则设施就可以对计数求和来导出相异计数。至于Agg_Table_4,设施确定出Agg_Table_4既包含依赖维度也包含独立维度。设施也可以确定出约束“日期”是对在与Agg_Table_4中的值(例如,月和年)相同或者比Agg_Table_4中的值高的级别上的依赖维度(即,日期)的约束(步骤218),并且约束“品牌”是对在与Agg_Table_4中的值(例如,品牌1或品牌2)相同的级别上的独立维度(即,品牌)的约束(步骤220)。因此,设施得出结论它可以通过对Agg_Table_4的维度值(即,日期和品牌值)满足查询中的所有约束(即,日期和品牌的组合)的行中包含的计数(即,对订单的数目的计数)求和来回答相异计数查询(步骤224)。因此,设施将接收到的字符串转换为以下SQL表达式SELECT日期,品牌COUNT(订单号)FROM Agg_Table_4上述SQL表达式被处理来确认存在以下订单按照2003年1月和品牌2的组合发出的一个订单;按照2003年2月和品牌1的组合发出的两个订单;按照2003年2月和品牌2发出的一个订单;按照2004年1月和品牌1的组合发出的订单;以及一个按照2004年1月和品牌2的组合发出的一个订单。
设施可以通过对Agg_Table_4应用计数运算符来回答其他相异计数查询。例如,用户可能请求对如明细表30中记录的按照品牌和年的每个组合的不同订单的数目进行相异计数,并且向设施提交了字符串“Request品牌,年,订单号”。设施将接收到的字符串解释为对按照年和品牌的每个组合发出的不同订单的数目的相异计数查询,并且确定出被相异计数的标识符是“订单号”,并且对相异计数查询的约束是“品牌”和“年”。
设施确定出Agg_Table_4既包含依赖维度也包含独立维度。设施还确定出约束“年”是在对与Agg_Table_4中的值(例如,月和年)相同或者比Agg_Table_4中的值高的级别上的依赖维度(即,日期)的约束(步骤218),并且约束“品牌”是对在与Agg_Table_4中的值(例如,品牌1或品牌2)相同的级别上的独立维度(即,品牌)的约束(步骤220)。因为设施将仅跨作为依赖维度的日期求和,所以设施得出结论它可以通过对Agg_Table_4的维度值(即,日期和品牌值)满足查询中的所有约束(即,年和品牌的组合)的行中包含的计数(即,对订单的数目的计数)求和来回答相异计数查询(步骤224)。因此,设施将接收到的字符串转换为以下SQL表达式SELECT品牌,年COUNT(订单号)FROM Agg_Table_4GROUP BY品牌,年上述SQL表达式被处理来确认存在以下订单按照品牌1和2003年的组合发出的三个订单;按照品牌2和2003年的组合发出的两个订单;按照品牌1和2004年的组合发出的一个订单;以及按照品牌2和2004年的组合发出的一个订单。
相反,设施不能根据Agg_Table_4回答对每年发出的不同订单的数目的相异计数的查询,例如,“Request年,订单号”,因为这将要求跨作为独立维度的品牌进行聚合。换言之,不存在Agg_Table_4的这样的行这些行的维度值(即,日期和品牌值)满足所指定的全部查询约束(即,年)。在这里,查询未命中对作为独立维度的品牌的约束。在这种情形中,设施对明细表30执行相异计数操作。
示例5聚合表不包含被相异计数的标识符——仅包含独立维度作为示例,用户可能对获得如明细表30所记录的按照品牌和州的每个组合的不同订单的数目的相异计数感兴趣。在这里,设施可以接收来自用户的字符串“Request品牌,州,订单号”,设施将该字符串理解为对按照品牌和日期的每个组合发出的不同订单的数目进行相异计数查询(步骤202)。设施确定出“品牌”和“州”是对相异计数查询的约束。设施还确定出可以通过对明细表30中的标识符“订单号”执行相异计数来获得对唯一的订单的数目的相异计数查询。
假定设施将图10所示的Agg_Table_5标识为与明细表30相关联的聚合表(步骤204),并且多个行包含对被相异计数的标识符“订单号”的计数,例如,是被相异计数的标识符的聚合(步骤208),则设施对Agg_Table_5进行检查来确定Agg_Table_5中包含的维度的类型。如图所示,Agg_Table_5包含三列,第一列指示品牌、第二列指示州、第三列包含对订单的数目的计数。在明细表30中,订单可能针对多个产品,这多个产品可能是多个品牌的,如维度表1所示(图4A),并且可能被运送到多个邮政编码处,这多个邮政编码对应于维度表2所示的多个州(图4B)。如果聚合表仅包含独立于被相异计数的标识符“订单号”的维度,则当且仅当对查询的约束的级别与聚合表中的维度的级别准确匹配时才可以使用聚合表中的聚合(即,相异计数)。至于Agg_Table_5,设施确定出Agg_Table_5仅包含独立维度。设施还确定出约束“品牌”是对在相同级别上的独立维度(即,品牌)的约束,并且约束“州”是对在相同级别上的独立维度(即,州)的约束。因此,设施得出结论它可以利用Agg_Table_5中包含的对订单数目的相异计数来回答相异计数查询。因此,设施将接收到的字符串转换为以下SQL表达式SELECT品牌,州、相异订单号FROM Agg_Table_5上述SQL表达式被处理来确认存在以下订单按照品牌1和州1的组合发出的四个订单;按照品牌2和州1的组合发出的一个订单;按照品牌1和州2的组合发出的零订单;以及按照品牌2和州2的组合发出的三个订单。
类似地,通过利用以下SQL表达式,设施可以根据Agg_Table_5回答对按照品牌和州1的每个组合的不同订单的数目的相异计数查询,例如,“Request品牌,州,订单号,其中州=‘州1’”SELECT品牌,州、相异订单号FROM Agg_Table_5WHERE州=‘州1’上述SQL表达式被处理来确认存在以下订单按照品牌1和州1的组合发出的四个订单;以及按照品牌2和州1的组合发出的一个订单。
相反,设施不能根据Agg_Table_5回答对每个品牌的不同订单的数目的相异计数的查询,例如,“Request品牌,订单号”,因为这将要求跨作为独立维度的州进行聚合。换言之,查询中的约束的级别与Agg_Table_5的维度的级别不准确匹配。在这种情形中,设施对明细表30执行相异计数操作。
图11示出了根据一些实施例由设施用来标识出聚合表以在回答相异计数查询时使用的方法的流程图。作为示例,设施可能已接收到请求对明细表中的标识符进行相异计数的查询。在步骤1102,设施标识出与要进行查询的明细表相对应的聚合表。具体地说,设施标识出作为被查询的标识符的聚合的聚合表。在一个实施例中,设施可以根据聚合表的名称标识出它们。例如,数据库管理员可能已实现了一种命名规则,该规则指明了聚合表及其相关明细表之间的关系。在这种情形中,聚合表的名称标识出相关的明细表,并且提供对该关系的基础的指示。
在另一个实施例中,可以配置过程来对聚合表的创建和每个聚合表进行监视,并且提供对与数据库中的明细表的关系的基础和相关明细表的指示。设施然后可以检查该数据库中包含的数据来标识出聚合表,其中这些聚合表与明细表相关联并且是被查询的标识符的聚合。在又一个实施例中,设施可以根据与聚合表相关联的定义和/或元数据标识出与明细表相关联的聚合表。例如,工具可以为每个聚合表创建元数据,其中元数据包括关于与明细表的关系的基础和相关明细表的数据。
在步骤1104,设施放弃在回答当前的相异计数查询中不适用的聚合表。例如,设施放弃不是被查询的标识符的聚合的聚合表。在步骤1106,设施对尚未放弃的聚合表进行检查,来确定是否存在至少一个包含被相异计数的标识符的聚合表。如果存在至少一个包含被相异计数的标识符的聚合表,则在步骤1108,设施选中最高颗粒的聚合表。如果仅有一个聚合表(步骤1106),则该聚合表就是最高颗粒的聚合表。换言之,设施选中最小的聚合表,然后利用选中的聚合表来继续处理相异计数查询。
如果没有聚合表包含被相异计数的标识符,则在步骤1110,设施对尚未放弃的聚合表进行检查,来确定是否存在至少一个包含对被相异计数的标识符的计数的聚合表。如果存在至少一个包含对被相异计数的标识符的计数的聚合表,则在步骤1112,设施选中最高颗粒的聚合表,然后利用该选中的聚合表来继续处理相异计数查询。如果仅有一个聚合表(步骤1110),则该聚合表就是最高颗粒的聚合表。
如果没有聚合表包含对被相异计数的标识符的计数,则在步骤1114,设施对尚未放弃的聚合表进行检查,来确定是否存在至少一个包含对被相异计数的标识符的相异计数的聚合表。如果存在至少一个包含对被相异计数的标识符的相异计数的聚合表,则在步骤1116,设施选中最高颗粒的聚合表,然后利用该选中的聚合表来继续处理相异计数查询。如果仅有一个聚合表(步骤1114),则该聚合表就是最高颗粒的聚合表。
否则,如果设施未能成功地标识出在回答查询中要使用的聚合表,则设施利用明细表来继续处理相异计数查询。
从前述可意识到,这里为了说明描述了本发明的实施例,但是在不脱离本发明的精神和范围的情况下,可以作出各种实施例。因此,除了根据所附权利要求书中明确指出的元素外,本发明不受限制。
权利要求
1.一种计算系统中的用于处理相异计数查询的方法,包括接收请求对明细表的相异计数的查询,所述查询指定所述明细表的要被唯一计数的标识符类型,所述查询还指定对所述明细表的维度的零个或更多个约束,所指定的约束中的每个是对独立维度或依赖维度的约束,并且所指定的约束中的每个处于其维度的特定级别上;标识出与所述明细表相对应的聚合表;确定所标识出的聚合表的行是否包含(1)所指定的类型的标识符,或者(2)这样的计数,其中每个计数指示针对维度值的不同组合,所指定的类型的不同标识符在所述明细表中出现的数目,其中每个维度值处于其维度的特定级别上;如果所标识出的聚合表的行包含所指定的类型的标识符,则如果所指定的类型的标识符中的每个在所标识出的聚合表中唯一地出现,则对所述聚合表的满足所指定的约束的行执行简单计数操作来获得所述相异计数查询的结果;如果所指定的类型的标识符中的每个在所标识出的聚合表中不是唯一地出现,则对所述聚合表的满足所指定的约束的行执行相异计数操作来获得所述相异计数查询的结果;如果所标识出的聚合表的每行包含这样的计数,其中每个计数指示针对维度值的不同组合,所指定的类型的不同标识符在所述明细表中出现的数目,其中每个维度值处于其维度的特定级别上,则对于每个被指定的约束,确定所指定的约束是(1)对在与所述聚合表的维度值相同的级别上的独立维度的约束,还是(2)对在与所述聚合表的维度值相同或者更高的级别上的依赖维度的约束;如果每个被指定的约束都是(1)对在与所述聚合表的维度值相同的级别上的独立维度的约束,或者(2)对在与所述聚合表的维度值相同或者更高的级别上的依赖维度的约束,则对所述聚合表中维度值满足全部所述被指定的约束的行中包含的计数求和来获得所述相异计数查询的结果;以及如果并非所有被指定的约束都是(1)对在与所述聚合表的维度值相同的级别上的独立维度的约束,或者(2)对在与所述聚合表的维度值相同或者更高的级别上的依赖维度的约束,则对所述明细表中满足所指定的约束的行执行相异计数操作来获得所述相异计数查询的结果。
2.如权利要求1所述的方法,其中,所述聚合表是多个聚合表之一,并且所述聚合表处于所述多个聚合表中的最高颗粒上。
3.一种计算机可读存储介质,所述介质的内容致使计算机执行以下步骤接收请求对明细表的标识符的相异计数的查询,所述查询指定对所述明细表的维度的零个或更多个约束;标识出与所述明细表相关联的聚合表;响应于标识出所述聚合表,确定所述聚合表是否包含被相异计数的标识符;响应于确定出所述聚合表包含被相异计数的标识符确定所述标识符在所述聚合表的每行中是否都不同;以及响应于确定出所述标识符在所述聚合表的每行中都不同,对所述聚合表中满足所指定的约束的行执行计数操作来获得所述相异计数查询的结果。
4.如权利要求3所述的计算机可读存储介质,其中,所述约束中的每个是对所述明细表的维度的约束。
5.如权利要求4所述的计算机可读存储介质,其中,所述约束中的每个是对独立维度或依赖维度的约束。
6.如权利要求5所述的计算机可读存储介质,其中,所述约束中的每个处于其维度的特定级别上。
7.如权利要求3所述的计算机可读存储介质,其中,所述聚合表是多个聚合表之一,并且所述聚合表处于所述多个聚合表中的最高颗粒上。
8.如权利要求3所述的计算机可读存储介质,还包括致使所述计算机执行以下处理的内容响应于确定出所述标识符在所述聚合表的每行中并非都不同,对所述聚合表中满足所指定的约束的行执行相异计数操作来获得所述相异计数查询的结果。
9.如权利要求3所述的计算机可读存储介质,还包括致使所述计算机执行以下处理的内容响应于标识出所述聚合表,确定所述聚合表的行是否包含对所述被相异计数的标识符的计数,其中每个计数指示针对维度值的不同组合,所述标识符在所述明细表中出现的次数,每个维度值处于其维度的特定级别上;响应于确定出所述聚合表的行包含对所述被相异计数的标识符的计数,确定所述聚合表是否具有仅涉及依赖于所述被相异计数的标识符的维度的维数;以及响应于确定出所述聚合表具有仅涉及依赖于所述被相异计数的标识符的维度的维数,对所述聚合表中维度值满足全部所述被指定的约束的行中包含的计数求和来获得所述相异计数查询的结果。
10.如权利要求3所述的计算机可读存储介质,还包括致使所述计算机执行以下处理的内容响应于标识出所述聚合表,确定所述聚合表的行是否包含对所述被相异计数的标识符的计数,其中每个计数指示针对维度值的不同组合,所述标识符在所述明细表中出现的次数,每个维度值处于其维度的特定级别上;响应于确定出所述聚合表的行包含对所述被相异计数的标识符的计数,确定所述聚合表是否具有至少一个依赖于所述被相异计数的标识符的维度和至少一个独立于所述被相异计数的标识符的维度;响应于确定出所述聚合表具有至少一个依赖于所述被相异计数的标识符的维度和至少一个独立于所述被相异计数的标识符的维度,确定所述查询是否在级别上与对所述独立维度的聚合的级别相匹配;以及响应于所述查询在级别上与所述对独立维度的聚合的级别相匹配,对所述聚合表中维度值满足全部所述被指定的约束的行中包含的计数求和来获得所述相异计数查询的结果。
11.如权利要求3所述的计算机可读存储介质,还包括致使所述计算机执行以下处理的内容响应于标识出所述聚合表,确定所述聚合表的行是否包含对所述被相异计数的标识符的计数,其中每个计数指示针对维度值的不同组合,所述标识符在所述明细表中出现的次数,每个维度值处于其维度的特定级别上;响应于确定出所述聚合表的行包含对所述被相异计数的标识符的计数,确定所述聚合表是否具有仅涉及独立于所述被相异计数的标识符的维度的维数;以及响应于确定出所述聚合表具有仅涉及独立于所述被相异计数的标识符的维度的维数,只有在所述查询中的约束在级别上与所述聚合表的级别准确匹配的情况下,才利用在所述聚合表中维度值满足全部所述被指定的约束的行中包含的聚合计数来获得所述相异计数查询的结果。
12.一种计算系统中的用于获得相异计数度量的方法,所述方法包括接收请求对明细表的标识符的相异计数的查询,所述查询指定对所述明细表的维度的零个或更多个约束;标识出与所述明细表相关联的聚合表;响应于标识出所述聚合表,确定所述聚合表是否包含被相异计数的标识符;响应于确定出所述聚合表包含被相异计数的标识符确定所述标识符在所述聚合表的每行中是否都不同;以及响应于确定出所述标识符在所述聚合表的每行中都不同,对所述聚合表中满足所指定的约束的行执行计数操作来获得所述相异计数查询的结果。
13.如权利要求12所述的方法,其中,所述约束中的每个是对所述明细表的维度的约束。
14.如权利要求13所述的方法,其中,所述约束中的每个是对独立维度或依赖维度的约束。
15.如权利要求14所述的方法,其中,所述约束中的每个处于其维度的特定级别上。
16.如权利要求12所述的方法,其中,所述聚合表是多个聚合表之一,并且所述聚合表处于所述多个聚合表中的最高颗粒上。
17.如权利要求13所述的方法,还包括响应于确定出所述标识符在所述聚合表的每行中并非都不同,对所述聚合表中满足所指定的约束的行执行相异计数操作来获得所述相异计数查询的结果。
18.如权利要求12所述的方法,还包括响应于标识出所述聚合表,确定所述聚合表的行是否包含对所述被相异计数的标识符的计数,其中每个计数指示针对维度值的不同组合,所述标识符在所述明细表中出现的次数,每个维度值处于其维度的特定级别上;响应于确定出所述聚合表的行包含对所述被相异计数的标识符的计数,确定所述聚合表是否具有仅涉及依赖于所述被相异计数的标识符的维度的维数;以及响应于确定出所述聚合表具有仅涉及依赖于所述被相异计数的标识符的维度的维数,对所述聚合表中维度值满足全部所述被指定的约束的行中包含的计数求和来获得所述相异计数查询的结果。
19.如权利要求12所述的方法,还包括响应于标识出所述聚合表,确定所述聚合表的行是否包含对所述被相异计数的标识符的计数,其中每个计数指示针对维度值的不同组合,所述标识符在所述明细表中出现的次数,每个维度值处于其维度的特定级别上;响应于确定出所述聚合表的行包含对所述被相异计数的标识符的计数,确定所述聚合表是否具有至少一个依赖于所述被相异计数的标识符的维度和至少一个独立于所述被相异计数的标识符的维度;响应于确定出所述聚合表具有至少一个依赖于所述被相异计数的标识符的维度和至少一个独立于所述被相异计数的标识符的维度,确定所述查询是否在级别上与所述独立维度的聚合的级别相匹配;以及响应于所述查询在级别上与所述独立维度的聚合的级别相匹配,对所述聚合表中维度值满足全部所述被指定的约束的行中包含的计数求和来获得所述相异计数查询的结果。
20.如权利要求12所述的方法,还包括响应于标识出所述聚合表,确定所述聚合表的行是否包含对所述被相异计数的标识符的计数,其中每个计数指示针对维度值的不同组合,所述标识符在所述明细表中出现的次数,每个维度值处于其维度的特定级别上;响应于确定出所述聚合表的行包含对所述被相异计数的标识符的计数,确定所述聚合表是否具有仅涉及独立于所述被相异计数的标识符的维度的维数;以及响应于确定出所述聚合表具有仅涉及独立于所述被相异计数的标识符的维度的维数,只有在所述查询中的约束在级别上与所述聚合表的级别准确匹配的情况下,才利用在所述聚合表中维度值满足全部所述被指定的约束的行中包含的聚合计数来获得所述相异计数查询的结果。
21.一种用于获得相异计数度量的系统,所述系统包括查询接收组件,其可用于接收请求对明细表的标识符的相异计数的查询,所述查询指定对所述明细表的维度的零个或更多个约束;相异计数度量组件,其可用于标识出与所述明细表相关联的聚合表;响应于标识出所述聚合表,确定所述聚合表是否包含被相异计数的标识符;响应于确定出所述聚合表包含被相异计数的标识符确定所述标识符在所述聚合表的每行中是否都不同;以及响应于确定出所述标识符在所述聚合表的每行中都不同,对所述聚合表中满足所指定的约束的行执行计数操作来获得所述相异计数查询的结果。
22.如权利要求21所述的系统,其中,所述相异计数度量组件还可用于响应于确定出所述标识符在所述聚合表的每行中并非都不同,对所述聚合表中满足所指定的约束的行执行相异计数操作来获得所述相异计数查询的结果。
23.如权利要求21所述的系统,其中,所述相异计数度量组件还可用于响应于标识出所述聚合表,确定所述聚合表的行是否包含对所述被相异计数的标识符的计数,其中每个计数指示针对维度值的不同组合,所述标识符在所述明细表中出现的次数,每个维度值处于其维度的特定级别上;响应于确定出所述聚合表的行包含对所述被相异计数的标识符的计数,确定所指定的约束是否每个都是对在与所述聚合表的维度值相同或者更高级别上的依赖维度的约束;以及响应于确定出所指定的约束每个都是对在与所述聚合表的维度值相同或者更高级别上的依赖维度的约束,对所述聚合表中维度值满足全部所述被指定的约束的行中包含的计数求和来获得所述相异计数查询的结果。
24.如权利要求21所述的系统,其中,所述相异计数度量组件还可用于响应于标识出所述聚合表,确定所述聚合表的行是否包含对所述被相异计数的标识符的计数,其中每个计数指示针对维度值的不同组合,所述标识符在所述明细表中出现的次数,每个维度值处于其维度的特定级别上;响应于确定出所述聚合表的行包含对所述被相异计数的标识符的计数,确定所指定的约束是否每个都是对在与所述聚合表的维度值相同或者更高级别上的依赖维度的约束,或者是对在与所述聚合表的维度值相同的级别上的独立维度的约束;以及响应于确定出所指定的约束每个都是对在与所述聚合表的维度值相同或者更高级别上的依赖维度的约束,或者是对在与所述聚合表的维度值相同的级别上的独立维度的约束,对所述聚合表中维度值满足全部所述被指定的约束的行中包含的计数求和来获得所述相异计数查询的结果。
25.如权利要求21所述的系统,其中,所述相异计数度量组件还可用于响应于标识出所述聚合表,确定所述聚合表的行是否包含对所述被相异计数的标识符的计数,其中每个计数指示针对维度值的不同组合,所述标识符在所述明细表中出现的次数,每个维度值处于其维度的特定级别上;响应于确定出所述聚合表的行包含对所述被相异计数的标识符的计数,确定所指定的约束是否既不是对在与所述聚合表的维度值相同或者更高级别上的依赖维度的约束,也不是对在与所述聚合表的维度值相同的级别上的独立维度的约束;以及响应于确定出所指定的约束既不是对在与所述聚合表的维度值相同或者更高级别上的依赖维度的约束,也不是对在与所述聚合表的维度值相同的级别上的独立维度的约束,只有在所述查询中的约束在级别上与所述聚合表的级别准确匹配的情况下,才利用在所述聚合表中维度值满足全部所述被指定的约束的行中包含的聚合计数来获得所述相异计数查询的结果。
全文摘要
本发明提供了用于利用聚合导航来执行相异计数度量的设施。针对对明细表中的标识符的相异计数查询,其中该查询指定零个或更多个约束,该设施标识出与该明细表相关联的聚合表。该设施然后确定聚合表是否包含被相异计数的标识符,如果包含,则进一步确定所述标识符在聚合表的每行中是否都不同。如果是,则该设施对聚合表中满足所指定的约束的行执行计数操作来获得相异计数查询的结果。如果所述标识符在聚合表的每行中并非都不同,则该设施对聚合表中满足所指定的约束的行执行相异计数操作来获得相异计数查询的结果。
文档编号G06F7/00GK1898669SQ200480038684
公开日2007年1月17日 申请日期2004年12月10日 优先权日2003年12月23日
发明者阿施史·米塔尔, 爱德华·苏恩 申请人:西贝尔系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1