利用综合操作的聚合数据的制作方法

文档序号:6567979阅读:277来源:国知局

专利名称::利用综合操作的聚合数据的制作方法
技术领域
:本发明涉及利用综合操作的聚合数据。
背景技术
:存在多种联机分析处理(OLAP)技术,其允许用户分析存储在数据库中的多维数据。典型地,该数据库包括具有多个维度(或"关键字字段")和多个属性(或"非关键字字段")的"事实表",其中维度存储用作进入多维数据的索引的值、属性存储其它值。用户可以执行涉及计算多维数据聚合的数据查询。为了增加此种査询的效率,典型的OLAP方案预先计算一些可能的聚合。
发明内容在总的方面,本发明特征在于一种用于聚合数据的方法以及相应的软件和系统。该方法包括接受第一数据集,该第一数据集包括多个记录,每个记录保存(holding)多个字段中每一个字段的值。从该第一数据集产生第二数据集,该第二数据集包括一个或多个聚合记录。该第二数据集的每个聚合记录对应于来自该第一数据集的一个或多个记录,且上述被该第二数据集的每个聚合记录所对应的来自该第一数据集的一个或多个记录匹配于与该聚合记录相关联的字段子集中的值。从该第二数据集产生第三数据集,该第三数据集包括一个或多个聚合记录。该第三数据集的每个聚合记录对应于该第一数据集的一个或多个聚合记录,且上述被该第三数据集的每个聚合记录所对应的该第一数据集的一个或多个聚合记录匹配于与该第三数据集的聚合记录相关联的字段子集中的值。与第三数据集中的聚合记录相关联的聚合值表示对与来自该第一数据集的多个记录相关联的值执行不可级联操作的结果。这个方面可包括一个或多个以下特征。对与来自该第一数据集的多个记录相关联的值执行不可级联操作是由以下各项组成的群组中之一确定所述值中不同值(distinctvalue)的个数确定所述值的中间值,确定所述值的多个极值的和,以及确定所述值的多个和的极值。该不可级联操作是这样的,对一组操作数执行该不可级联操作的结果不能分解成以下的操作执行结果对该操作数的第一子集执行该操作的第一结果,和对该操作数的第二子集执行该操作的第二结果;其中第一子集和第二子集是互斥的和穷举的。所述多个字段中的至少一个字段至少部分地与所述多个字段中的另一个字段函数相关。与所述多个字段中至少一个字段相关联的至少一些值依赖于与所述多个字段中另一个字段相关联的对应值。从该第二数据集产生该第三数据集包括接收该第二数据集的聚合记录流。在另一总的方面,本发明特征在于一种用于聚合包括多个记录的数据的方法,每个记录保存多个字段中每一个字段的值。该方法包括,在考虑所述字段之间的函数相关性的条件下,利用不可级联操作执行在所述记录内字段的多级聚合。这个方面可包括一个或多个以下特征。该不可级联操作是由以下各项组成的群组中之一确定所述值中不同值的个数,确定所述值的中间值,确定所述值的多个极值的和,以及确定所述值的多个和的极值。该不可级联操作是这样的,对一组操作数执行该不可级联操作的结果不能分解成以下的操作执行结果对该操作数的第一子集执行该操作的第一结果,和对该操作数的第二子集执行该操作的第二个结果;其中第一子集和第二子集是互斥的和穷举的。在另一总的方面,本发明特征在于一种用于聚合数据的方法以及相应的软件和系统。该方法包括接受第一数据集,该第一数据集包括多个记录,每个记录保存多个字段中每一个字段的值。该方法包括产生该第一数据集的记录与多个第一关键字集(keyset)的笛卡尔积。每个关键字集表示该第一数据集的字段子集。该方法包括从所产生的笛卡尔积产生第二数据集,该第二数据集包括一个或多个聚合记录,每个聚合记录对应于来自该第一数据集的一个或多个记录,上述被每个聚合记录所对应的来自该第一数据集的一个或多个记录匹配于与该聚合记录相关联的字段子集中的值。该方法包括从该第二数据集产生第三数据集,该第三数据集包括一个或多个聚合记录,该第三数据集的每个聚合记录对应于该第一数据集的一个或多个聚合记录,上述被该第三数据集的每个聚合记录所对应的该第一数据集的一个或多个聚合记录匹配于与该第三数据集的聚合记录相关联的字段子集中的值。这个方面可包括一个或多个以下特征。产生该第三数据集包括对所产生的笛卡尔积和如下数据集执行连接操作,该数据集的记录包含表示所述多个第一关键字集中之一的第一值和表示多个第二关键字集中之一的第二值,所述多个第二关键字集中的每一个表示该第二数据集的字段子集;其中该连接操作通过匹配关键字集来连接记录。产生该第三数据集包括,对于至少一些已连接的记录,以通配符值替换至少一个所述字段的值。产生该第二数据集包括,对于所产生的笛卡尔积的至少一些记录,以通配符值替换至少一个所述字段的值。本发明的上述方面可包括一个或多个以下优点。通过利用数据集中字段之间(例如,在关键字字段和将对其操作的字段之间)的函数相关性,可将聚合计算分解成多级。基于不可级联操作,可将考虑函数相关性的多级聚合用于聚合数据。通过将聚合计算分解成多级,可降低聚合计算的量。根据以下描述和权利要求书,本发明的其它特征和优点将变得更明显。图1是数据聚合系统;图2A是表示多维数据的表;图2B—2G是表示基于图2A中数据的聚合数据的表;图3和5是关于单级聚合的数据流图;图4、6和7是关于多级聚合的数据流图。具体实施例方式1概述参考图l,数据聚合系统IO包括数据聚合器12,数据聚合器12处理数据存储器16中输入表14内的信息,以产生关于存储在聚合表18中的信息。在一些情形下,数据聚合器12基于用户20在用户界面22上提出的查询来产生聚合表18。在其它情形下,数据聚合器12根据预计算方案来产生聚合表18。这种聚合在输入表14中提供数据总结,这对用户20是有用的。参考图2A,表100的行1-7表示多维数据集的记录,从该多维数据集可产生聚合数据。表100是4维数据集,其包括表示关键字字段产^、经勞賓、年份和邀点的四列以及表示非关键字字段齢獰^和份谘的两列。用户查询可询问由年份、产品和地点分开并在经销商上聚合的销售额总和。这种聚合被称为3维聚合是因为,相对于原始的4个关键字字段,聚合了一个关键字字段而保留下3个关键字字段。与被该聚合作为基础的操作相对应,具有相同的保留关键字字段值的记录的组合被称为"聚合操作"。在该情形下,聚合操作是对非关键字字段中的值求和。图2B显示了表示对此实例产生的3维聚合数据集的表110。如另一个实例,用户可查询由产^分开并在年汾、经舒爲和il点上聚合的^會激或份潜的总和(l维聚合)。在该情形下,聚合涉及组合具有相同的单独保留关键字字段产^值的列。图2C显示了表示所产生的1维聚合数据集结果的表120。对所有四个关键字字段上聚合的舒獰^^口/或份谘的总和产生由图2D中表130表示的0维聚合(或单一"总聚合"值)。向用户提供聚合数据的一种方式是预计算可用在查询多维数据中的一些或甚至所有的可能聚合。该预计算可包括会花费相当多时间的大量计算。例如,从具有14维的多维数据集进行所有具有4维或更少维的聚合的预计算包括MG+^3+MC2+MC;+MC^1471次聚合。如果该数据集有107列数据,则该预计算可包括多达L471xl0"列数据的处理。用于减少多维聚合的预计算所需的计算量的一种策略包括产生多级聚合、基于高维聚合来计算低维聚合。例如,通过对6维聚合的2维进行聚合^2=15次,可从单一的6维聚合计算出15次的4维聚合14^。例如,如果6维聚合具有104列数据,则这些15次4维聚合的预计算涉及处理107列数据以产生6维聚合,并随后处理15><104=150,000列数据以产生这些15次的4维聚合,总的涉及10,150,000列数据的处理。作为比较,从14维数据分别预计算这些15次4维聚合中的每一个将涉及处理15xl0,000,000=150,000,000列数据。用于处理多维数据以产生聚合数据(例如,预计算和/或响应用户查询)的系统10根据所涉及操作是否"可级联(cascadable)",对多级聚合使用不同的方式。如果对一组操作数执行操作的结果可分解成以下结果,则该操作是可级联的(a)对操作数的第一子集执行操作的第一结果,以及(b)对操作数的第二子集执行操作的第二结果(其中第一子集和第二子集是互斥的和穷举的)。例如,加法由于加法的结合性而是可级联的(a+b+...+z)=(a+b+...+m)+(n+o+...+z)。可级联操作的实例包括执行求和和确定数据列中的最大值或最小值(即"极值")。在上述实例中,表130(图2D)内舒會^和份^字段中的值总和可在从表100内原始数据集的单级中计算出,或可选地,在利用例如表110(图2B)或表120(图2C)内中间聚合数据集的多级中计算出。这样使用多级是可以的,因为所涉及的求和操作是可级联的,从而允许系统10利用分解字段以被聚合进中间维集的第一多级聚合过程,将在以下2.2节中详细描述。可用来聚合多维数据集中记录的不可级联操作的实例包括确定记录的字段不同值的个数,确定字段中值的中间值,确定值集的多个极值的和(例如每一个地点的最贵产品的总和),以及确定值的多个和的极值(例如最大的年总销售额)。因此即使单一的结合性操作(例如加法或查找最大值)是可级联的,但包括两个结合性操作的复合操作可能是不可级联的,如上述实例中的"极值的和"与"和的极值"。图2E和2F显示了基于不可级联操作聚合数据的实例。图2E显示表140,其表示基于对产^字段的不同值进行计数的操作,由经舒裔分开的在产"3、牟份和邀A上聚合表100记录的结果。图2F显示表150,其表示基于对产^字段的不同值进行计数的操作,由年^分开的在产^、经徵萄和il点的上聚合表100记录的结果。图2G显示表160,其表示产^字段不同值个数的总聚合值。在此实例中,有3个不同的产品A、B和C,如通过聚合表IOO记录而确定的。由于此"计数不同"操作是不可级联的,因此总值不是必然地从例如表140或表150中数据的中间聚合数据获得。在此实例中,由于表100原始数据的函数相关性,因此表140中的中间"不同的产品"值的和给出了正确的3个不同产品的结果。然而,表150中的中间"不同的产品"值的和给出了错误的6个不同产品的结果。通过使用第二个多级聚合过程,系统IO可基于不可级联操作利用函数相关性来处理用于多级聚合的数据列,将在下文2.4节中详细描述。在此实例中,每个产品具有唯一的经销商,因此在经勞裔和产/^之间存在函数相关性(即,经勞'裔的值函数上依赖于产^的值)。此函数相关性使得对基于不可级联操作的此次聚合,可通过正确选择中间数据而从该中间数据获得正确结果。2利用数据流图聚合数据在系统10中,将关于多维数据的计算通过有向图表示成数据流,计算要素(component)与图的顶点相关以及各要素之间的数据流对应于图的链环(弧、边)。实现此种基于图计算的系统在名称为"EXECUTINGCOMPUTATIONSEXPRESSEDASGRAPHS"的美国专利5,966,072中有描述。关于多维数据集的聚合计算实例将在下文利用"数据流图"来描述,以实现系统10中的聚合器12。2.1单级聚合参考图3,用于计算单级聚合的数据流图200包括输入数据集202(例如输入表14)和输出数据集210(例如聚合表18)。输入数据集202是一系列记录的来源,每个记录包括一组字段的值。一些字段是输入数据集202中多维数据的关键字字段。准备组件206处理记录,为/匸点(rollup)组件208的处理作准备。准备组件206基于指定用来聚合数据的一组或多组关键字的"关键字集"输入文件204来处理所述记录。,总组件208基于所选择的操作来组合多个输入记录的信息,并产生单一输出记录以替换多个输入记录。来自/匸总组件208的聚合记录流被存储在输出数据集210中。在执行单级聚合的实例中,图200处理2维输入数据集202中的记录,2维输入数据集202在下表中表示成具有两个关键字字段关經字0和关經字/以及一个非关键字字段虜丝的整数值的行。<table>tableseeoriginaldocumentpage13</column></row><table>基于由一维(关键字字段)分开并对另一个关键字字段聚合的虜丝字段中的值求和,图200产生两个1维聚合数据集。"关键字集"输入文件204指定第一次聚合(通过单态集(singletset){0}消除关鑌字7并保留以及第二次聚合(通过单态集{1}消除关鑀字0并保留关^字7)。为了在计算大量聚合(由大量关键字集指示的)时节省时间,准备组件206产生具有"合成关键字"值的记录流,其中合成关键字值可被用来执行所有待计算的聚合。例如,准备组件206基于输入文件204中关键字集与输入数据集202中记录的笛卡尔积产生具有合成关键字的记录(例如,利用对空值{}执行的"连接(join)"操作),该合成关键字由关鑌字0和关鑌字7的值组成。在下表中给出对此实例执行这种笛卡尔积的结果。<table>tableseeoriginaldocumentpage13</column></row><table><table>tableseeoriginaldocumentpage14</column></row><table>准备组件206为不是对应关键字集部分的记录(行)的关键字字段中的值引入"通配符"值(例如"*")。在下表中给出对此实例引入通配符值的结果。<table>tableseeoriginaldocumentpage14</column></row><table>由准备组件206产生的记录流随后由/匸总组件208处理。/匸总组件208对记录进行属性字段中的值求和,其中所述记录的合成关键字值相匹配(在此通配符值仅匹配其它通配符值)。下表表示所产生的输出数据集,该输出数据集包括由图200产生的两个1维聚合数据集。<table>tableseeoriginaldocumentpage14</column></row><table>前两行表示由关锾字0分开并在关齄字7上聚合的虜丝字段中值的和。后两行表示由关楚字7分开并在关鑌字0上聚合的厲丝字段中值的和。可用各种表示方式中的任何一个来存储与数据流中记录相关联的合成关键字。例如,代替用于此实例中的关键字字段值阵列(其中一些是通配符),每个记录可与非通配符值的关键字值对的阵列相关联(当数据集的维数比关键字集的维数大时,这可能是更有效的表示法)。2.2可级联操作的多级聚合参考图4,用于计算多级聚合的数据流图300包括输入数据集302和输出数据集318。基于指定用来聚合数据的一组或多组关键字的第一集的输入文件304,输入数据集302是将由准吝组件306和C总组件308处理的一系列记录的来源。//T^组件308的输出是表示聚合数据集的记录流310,其中该聚合数据集的维数介于输入数据集302的维数和输出数据集318的维数之间。该中间数据可存储在数据集中以用于后续査询或数据处理,或可选地,可保留记录流而非必然地存储在文件中。基于指定用来聚合数据的一组或多组关键字的第二集的输入文件314,由准备组件312和/厂,点组件316处理记录310。将来自/匸总组件316的聚合记录流存储在输出数据集318中。在执行可级联操作的多级聚合的实例中,图300处理4维输入数据集302中的记录并产生包括所有六个2维求和聚合的数据集,4维输入数据集302在下表中表示成具有四个关键字字段关鑀字0、关變字A关經字2和关锾字3以及一个非关键字字段虜丝的整数值的行。<table>tableseeoriginaldocumentpage15</column></row><table>输入文件304和314指定"汇总方案(rollupplan)",该汇总方案包括输入文件304中的六个第一级关键字集以及输入文件314中的六个第二级关键字集。特别地,在此实例中,基于由二维(关键字字段)分开并在另外两个上聚合的慮丝字段中值的和,图300产生六个2维聚合数据集。下面六个第一级关键字集中的每一个表示保留在三个3维中间聚合数据集中之一的三个关键字字段(在记录310内)关獰字桌7-l:{0,1,2}关變字桌7-2:{0,1,2}关獰字桌7-3:{0,1,2}关經字桌7-4:{0,1,3}关經字桌/-5:{0,1,3}关楚字桌7-6:{0,2,3}下面六个第二级关键字集中的每一个表示保留在六个2维输出聚合数据集中之一的两个关键字字段关經字桌2-l:{0,1}关獰字桌2-2:{0,2},字桌2-3:{1,2}关獰字桌H{0,3}避字桌2-5:{1,3}关胖桌;6:{2,3}第二级关键字集中的每个关键字字段选自对应第一级关键字集中的关键字字段(其中关楚字桌2-n对应关鑌字桌7-n)。选择第一级关键字集中的关键字字段,使得两个字段的六种可能组合中的每一种可表示在第二级关键字集中。为了在生成合成关键字集值中的应用,输入文件314在记录中存储每个第二级关键字集(例如关經孕:桌2-l)以及与其相关的第一级关键字集(例如关經字桌7-l),以下将详细描述。根据在第一级和第二级中聚合的维数,在一些情况下,选择使用哪个第一级关键字集将影响需要产生多少中间聚合数据集,以计算给定数目的输出聚合数据集(这将影响总计算的效率)。在此实例中,不管四个可能中间聚合数据集中的哪三个被选择,都需要三个中间聚合数据集来计算六个输出聚合数据集。将在下面2.3节中描述用于选择第一级关键字集的程序,在某种程度上该程序减少一些情况下所需的中间聚合数据集的数量。准备组件306基于输入文件304中不同关键字集(在此例中为3个不同关键字集)与输入数据集302中记录的笛卡尔积来产生具有一级合成关键字的记录。准备组件306还为不是对应关键字集部分的记录(行)的关键字字段中的值引入通配符值。在下表中给出了对此实例执行笛卡尔积并引入通配符值的结果。<table>tableseeoriginaldocumentpage16</column></row><table><table>tableseeoriginaldocumentpage17</column></row><table>前两行表示由关鑌字0、关鍵字J和关鍵字2分开并在关鑀字7上聚合的虜丝字段中的值的和。接下来的两行表示由关經字O、关獰字/和关經字3分开并在关锾字2上聚合的虜丝字段中的值的和。最后三行表示由关變字0、关鑌字2和关鑀字3分开并在关經字7上聚合的^f丝字段中的值的和。通过对在上表中示出的中间记录310以及在下表中示出的输入文件314中的关键字集记录执行连接操作,准备组件312产生具有第二级合成关键字的记录。将关鑌字桌l的值用作连接操作的关键字。<table>tableseeoriginaldocumentpage17</column></row><table><table>tableseeoriginaldocumentpage18</column></row><table><table>tableseeoriginaldocumentpage19</column></row><table>上表中的行表示由包含整数值的关键字字段分开并在包含通配符值的关键字字段上聚合的虜丝字段中的值的和。23关键字集的选择以下是由数据流图的准吝组件用来选择表示中间聚合数据集的字段的第一级关键字集的示例性程序。根据选择影响所需的中间聚合数的实例来描述该程序。该实例经由3维的中间聚合从5维数据(具有关键字字段0、1、2、3、4)产生2维数据,其产生IO个可能的2维输出聚合数据集(因为A"0)。通过选择表示第一中间聚合数据集中字段的任何一个第一3维关键字集{4,3,2},该组件启动。该组件确定可从第一中间聚合数据集产生哪些输出聚合数据集{4,3}、{4,2}、{3,2}。然后该组件搜索第二关键字集{4,1,0},从该第二关键字集中可产生剩下的输出聚合数据集的最大数,其可产生{4,1}、{4,0}、{1,0}。重复此步骤直到产生所有2维输出聚合数据集,这为总的四个第一级关键字集产生另外的关键字集{3,2,1}和{3,2,0}。第一级关键字集的其它选择产生较高数,从该较高数可产生所有2维输出聚合数据集。例如,以下列顺序{4,3,2}、{4,3,1}、{4,3,0}、{4,2,1}、{4,2,0}、{3,2,0}选择第一级关键字集产生六个第一级关键字集。因此在存在数百或数千可能的中间关键字集的一些情况下,根据上述程序选择关键字集可减少需要产生的中间聚合数据集的数量。2.4不可级联操作的聚合在一些情形中,基于不可级联操作来计算多维数据的聚合涉及直接从原始数据集计算大部分的期望聚合,这是因为计算这些聚合所需的一些信息在中间维数的聚合中丢失了。然而,在其它情形中,中间维数的聚合包含计算这些聚合中某些的信息。这种情形之一是数据集中一个关键字字段的值依赖于另一个关键字字段的值。2.4.1没有函数相关的单级聚合在描述一种通过利用函数相关性将计算分解成多级来减少聚合计算大小的情形之前,描述基于对目标字段执行不可级联的"计数不同"操作来计算聚合的单级方式是有用的。参考图5,用于计算单级聚合的数据流图400包括输入数据集402和输出数据集412。图400包括准备组件406,其基于输入文件404处理记录以产生包括对应于期望聚合的合成关键字的记录流。图400被设置成利用/厂,点组件408和/匸忌组件410执行"计数不同"的操作。C总组件408基于目标字段值来组合记录,使得每个不同值对每个合成关键字值出现一次。此第一汇总操作使得/r,总组件410可通过计数具有匹配合成关键字的记录来确定目标字段中不同值的个数。来自;r:总组件410的聚合记录流被存储在输出数据集412中。即使数据流图400包括多个汇总组件,其执行的聚合计算是单级聚合,这是因为其输出并不是基于中间维数的数据产生的。在基于不可级联的"计数不同"操作来执行单级聚合的实例中,图400处理2维输入数据集402中的记录,2维输入数据集402在下表中表示成对两个关键字字段关經字0和关鑌字7以及一个非关键字字段^标具有整数值的行,其中非关键字字段^^是"计数不同"操作的目标。<table>tableseeoriginaldocumentpage20</column></row><table>基于在^-7字段上执行的"计数不同"操作,图400产生两个1维聚合数据集和总聚合。输入文件404为1维聚合指定对应的关键字集为{0}和{1},为总聚合指定为{}。准备组件406基于输入文件404中这些关键字集与输入数据集402中记录的笛卡尔积产生具有合成关键字值的记录流,输入数据集402中的记录具有对于不在该关键字集中的关键字字段的通配符值,如下表所示。<table>complextableseeoriginaldocumentpage21</column></row><table><table>tableseeoriginaldocumentpage22</column></row><table>/匸总组件410组合具有匹配合成关键字值(关^字0和关變字7)的记录,并对所组合记录的数目进行计数,以产生不同^^字段值的个数。通过图400产生的输出数据集包括两个1维聚合数据集和总聚合,如下表所示。<table>tableseeoriginaldocumentpage22</column></row><table>前三行表示由关經字o分开并在关^字/上聚合的^痴字段中的不同值的个数。接下来的两行表示由关經字7分开并在关變字o上聚合的^參天字段中不同值的个数。最后一行表示同时在二个关键字字段上聚合的^痴字段中不同值的总数。2.4.2基于函数相关的级在不可级联操作的多级方法中,为了确保中间维数聚合包含基于这些中间维数聚合产生期望聚合所需的信息,至少一个关键字字段应至少部分地与另一关键字字段函数相关。字段值之间(例如,关键字字段和目标字段之间)的函数相关性可以各种数据类型出现。例如,如果一个字段值表示个体(例如,客户ID),则表示诸如性别、民族、或出生曰期的属性的另一个字段值将与该字段值函数相关。当函数相关性中存在例外时,则一个字段"部分"或"近似"地与另一个字段函数相关,将在以下3.1节中详细描述。图6显示包括第一级的数据流图500,该第一级产生相对于输入数据集502的降维聚合记录512。该第一级包括准吝组件506以及两个/匸总组件508和510,;T,总组件508和510起到同上述图400中的作用。输入文件504包括关键字集,其中该关键字集包括与聚合操作的目标字段不相关的"非相关"关键字字段。图500还包括第二级,该第二级基于包括与目标字段相关的"相关"关键字字段的输入文件516中的关键字集进一步聚合记录512。也就是说,与目标字段相关的任何字段在最后一级被率A沐no在基于不可级联的"计数不同"操作来执行多级聚合的实例中,图500处理2维输入数据集502中的记录,2维输入数据集502在下表中表示成对两个关键字字段关鏺字6和关獰字7以及为一个非关键字字段^^/具有整数值的行,其中非关键字字段^^是"计数不同"操作的目标。关键字字段关锾字O与^^字段函数相关。<table>tableseeoriginaldocumentpage23</column></row><table>图500基于对^》天字段执行的"计数不同"操作产生两个1维聚合数据集和总聚合。输入文件504和516指定"汇总方案",该"汇总方案"包括输入文件504中的三个第一级关键字集和输入文件516中的三个第二级关键字集。第一级包括基于非相关关键字字段关楚字7的值进行的汇总,关键字字段关缀字7的值包括在第一级关键字集中关鑀字桌7-l{1}避字桌7画2关鑌字桌i-3在不可级联操作的多级方法中,第二级关键字集中的关键字字段不是必须仅从对应的第一级关键字集中的关键字字段选出。然而,第一级关键字集和第二级关键字集中的关键字字段被选择,以使得在第一级中聚合非相关维并在第二级中聚合相关维,正如在该实例中。在该实例中,第二级包括基于相关关键字字段关變字0的值进行的汇总,关键字字段关鑌字0的值包括在第二级关键字集中关胖桌2-l:{0}.关鑌字桌2-2:{}关,桌2國3:{1}准备组件506基于输入文件504中第一级关键字集与输入数据集502中记录的笛卡尔积产生具有合成关键字值的记录流,输入数据集502中的记录具有对于不在第一级关键字集中的任何非相关关键字字段的通配符值,如下表所示。<table>tableseeoriginaldocumentpage24</column></row><table>/匸总组件508基于合成关键字的匹配值以及移除复制记录的^痴:字段来组合记录。可选地,可从第一级合成关键字省去相关关键字字段关經字0(即在匹配中不考虑),这是因为关鑌字0的值与^标字段的值相关。所产生的记录如下表所示。<table>tableseeoriginaldocumentpage25</column></row><table>汇总组件510组合具有匹配合成关键字值(关變字0和关經字/)的记录,并对所组合记录的数目进行计数,以产生不同^》7^字段值的个数。在所产生的组合记录中不是必然地包括^^字段的值。所产生的中间记录512在下表中表示为包括1维聚合记录和2维聚合记录。<table>tableseeoriginaldocumentpage25</column></row><table>通过对上表中示出的中间记录512以及下表中示出的输入文件516中的关键字集记录执行连接操作,准备组件514产生具有第二级合成关键字的记录。关經^^桌7的值被用作连接操作的关键字。<table>tableseeoriginaldocumentpage25</column></row><table><table>tableseeoriginaldocumentpage26</column></row><table>下表示出了所产生的从准备组件514发送到/匸总组件518的连接记录(包括对于不在第二级关键字集中的关键字字段的通配符值)如下表所示。<table>tableseeoriginaldocumentpage26</column></row><table>汇总组件5i8组合具有匹配合成关键字值(关键字o和关键字i)的记录,并对"计数不同(^标)"字段中的对应值求和,以产生不同目标字段值的个数。在下表中示出的所产生的输出记录被存储在输出数据集520中。<table>tableseeoriginaldocumentpage26</column></row><table>上表中的行表示由包含整数值的关键字字段分开并在包含通配符值的关键字字段上聚合的^》天字段的不同值的个数。2.4.3增加补充级上述通过多级聚合提供的节省计算时间可扩展到补充级聚合。应该在聚合的每一级适当处理相关和非相关关键字字段,正如在以下实例中一样。例如,为了减少数据集的维数,可将通配符值添加到要被移除的关键字字段。对于非相关关键字字段,一旦通过在合成关键字和目标字段上的初始汇总设定了非相关关键字字段中的通配符值和特定值的模式,则该模式不会改变。如果非相关关键字字段在初始汇总期间获得通配符值,则该关键字字段应仅用来为省略了该关键字字段的后续汇总操作匹配值。如果非相关关键字字段在初始汇总期间保留特定值,则该关键字字段应仅用来为包括该关键字字段的后续汇总操作匹配值。在上述实例中,如果对应的第一级和第二级关键字集仅是相关关键字字段不同,则在第二级处理期间将不把通配符值引入非相关关键字字段,从而产生正确的结果。图7示出了实现3级聚合计算的示例性数据流图600。准备组件606基于包括非相关关键字字段的输入文件604中的关键字集来处理输入数据集602的记录。/匸总组件608基于目标字段和合成关键字来组合记录,以及/匸总组件609基于所有关键字字段来组合记录,从而使得中间记录610具有与输入数据集602相同的维数。输入文件614中的第二级关键字集包括非相关关键字字段以及可选地包括一些相关关键字字段,其中这些相关关键字字段适于得出具有某个指定维数的中间数据集618。输入文件622中的第三级关键字集包括用于产生具有被期望的较低维数的输出数据集626的最后关键字字段。例如,输入数据集602具有4维,其中2维相关(关經字0和关锾字7)而另外2维不相关(关鑌字2和关經字3)。输出数据集626包括基于3维中间数据集618的具有2维或更少维的聚合。对于该实例的适当3级汇总图如下表所示。<table>tableseeoriginaldocumentpage27</column></row><table><table>tableseeoriginaldocumentpage28</column></row><table>如上所述,存在或不存在非相关关键字字段在1级和3级之间没有变化。在一些情形下,通过估计适当维数的所有可能的关键字集,根据可从它们产生的预期聚合的数目对它们分级,并选择具有最大级的关键字集,则可确定关键字集的选择,正如在2.3节中描述的程序。3可选方式3.1近似函数相关利用函数相关减少聚合计算量的方法可应用到其中函数相关性由于存在例外而不严格的情形中。例如,在零售链中,可能在"客户ID"和"商店"之间存在微弱的函数相关性,这使得80%的客户只能在一家商店购物。还可能有在数据集中仅具有单一交易的"单个"客户,并因此关于该客户的所有字段均与该客户ID函数相关。通过确定单个客户的数量以及各种函数相关性的强度,输入数据集可分成能被适当处理的一些3.2高阶函数相关在一些情形中,可利用高阶函数相关性来减少计算量。一些关键字字段可与目标字段和另一个字段的组合函数相关。例如,如果存在4个非相关维并且期望所有2维聚合,则可能存在对应10次汇总操作的10次聚合。然而,如果维数1-3与维数0和目标字段的组合相关,则涉及维数0的四次汇总操作可压縮成单一汇总操作,并且汇总操作集可以从IO减少到7。3.3实现上述数据聚合方法可利用在计算机上执行的软件来实现。例如,该软件形成一个或多个计算机程序中的程序,所述一个或多个计算机程序在一个或多个已编程或可编程的计算机系统(其可以是诸如分布式、客户/服务器、或网格的各种结构)上执行,所述已编程或可编程的计算机系统均包括至少一个处理器、至少一个数据存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备或端口、以及至少一个输出设备或端口。该软件可形成较大程序的一个或多个模块,例如该软件提供与计算图形的设计和配置相关的其它服务。可将图形的节点和元素实现为存储在计算机可读取介质中的数据结构或者符合存储在数据库中的数据模型的其它有组织的数据。该软件可提供在诸如CD-ROM的介质上或通过网络传送(被编码在所传送的信号中)到执行该软件的计算机,该介质可由通用或专用可编程的计算机进行读取。所有功能可在专用计算机上执行,或者利用诸如协处理器的专用硬件来执行。该软件可实现为分布式形式,其中该软件指定的不同的计算部分由不同的计算机执行。每个这样的计算机程序优选地存储在或下载到由通用或专用可编程的计算机可读取的存储介质或设备上(例如固体存储器或介质,或者磁介质或光学介质),用于在该计算机系统读取该存储介质或设备时进行配置并操作该计算机,以执行本文描述的程序。本发明的系统还可实现为计算机可读取的存储介质,配置有计算机程序,其中如此配置该存储介质使得计算机系统以特定和预定方式操作以执行本文描述的功能。需要理解的是,前述描述意在说明而并非限制本发明的范围,本发明的范围由附加的权利要求书所限定。例如,上述的多个功能步骤可以不同的顺序来执行,实质上并不影响总体处理。其它实施例仍在所附权利要求书的范围内。权利要求1、一种用于聚合数据的方法,包括接受第一数据集(502),该第一数据集包括多个记录,每个记录保存多个字段中每一个字段的值;从该第一数据集产生第二数据集(512),该第二数据集包括一个或多个聚合记录,该第二数据集的每个聚合记录对应于来自该第一数据集的一个或多个记录,上述被该第二数据集的每个聚合记录所对应的来自该第一数据集的一个或多个记录匹配于与该聚合记录相关联的字段子集中的值;以及从该第二数据集产生第三数据集(520),该第三数据集包括一个或多个聚合记录,该第三数据集的每个聚合记录对应于该第一数据集的一个或多个聚合记录,上述被该第三数据集的每个聚合记录所对应的该第一数据集的一个或多个聚合记录匹配于与该第三数据集的聚合记录相关联的字段子集中的值;其中与该第三数据集中聚合记录相关联的聚合值表示对与来自该第一数据集的多个记录相关联的值执行不可级联操作的结果。2、如权利要求1所述的方法,其中对与来自该第一数据集的多个记录相关联的值执行不可级联操作是由以下各项组成的群组中之一确定所述值中不同值的个数,确定所述值的中间值,确定所述值的多个极值的和,以及确定所述值的多个和的极值。3、如权利要求1所述的方法,其中该不可级联操作是这样的,对一组操作数执行该不可级联操作的结果不能分解成以下的操作执行结果对所述操作数的第一子集执行该操作的第一结果,和对所述操作数的第二子集执行该操作的第二结果;其中所述第一子集和第二子集是互斥的和穷举的。4、如权利要求1所述的方法,其中所述多个字段中的至少一个字段至少部分地与所述多个字段中的另一个字段函数相关。5、如权利要求4所述的方法,其中与所述多个字段中至少一个字段相关联的至少一些值依赖于与所述多个字段中另一个字段相关联的对应值。6、如权利要求1所述的方法,其中从该第二数据集产生该第三数据集包括接收该第二数据集的聚合记录流。7、一种存储在计算机可读取介质上的软件,包括用于使计算机系统执行以下操作的指令接受第一数据集(502),该第一数据集包括多个记录,每个记录保存多个字段中每一个字段的值;从该第一数据集产生第二数据集(512),该第二数据集包括一个或多个聚合记录,该第二数据集的每个聚合记录对应于来自该第一数据集的一个或多个记录,上述被该第二数据集的每个聚合记录所对应的来自该第一数据集的一个或多个记录匹配于与该聚合记录相关联的字段子集中的值;以及从该第二数据集产生第三数据集(520),该第三数据集包括一个或多个聚合记录,该第三数据集的每个聚合记录对应于该第一数据集的一个或多个聚合记录,上述被该第三数据集的每个聚合记录所对应的该第一数据集的一个或多个聚合记录匹配于与该第三数据集的聚合记录相关联的字段子集中的值;其中与该第三数据集中聚合记录相关联的聚合值表示对与来自该第一数据集的多个记录相关联的值执行不可级联操作的结果。8、一种用于聚合数据的系统,包括用于接受第一数据集(502)的装置,该第一数据集包括多个记录,每个记录保存多个字段中每一个字段的值;用于从该第一数据集产生第二数据集(512)的装置,该第二数据集包括一个或多个聚合记录,该第二数据集的每个聚合记录对应于来自该第一数据集的一个或多个记录,上述被该第二数据集的每个聚合记录所对应的来自该第一数据集的一个或多个记录匹配于与该聚合记录相关联的字段子集中的值;以及用于从该第二数据集产生第三数据集(520)的装置,该第三数据集包括一个或多个聚合记录,该第三数据集的每个聚合记录对应于该第一数据集的一个或多个聚合记录,上述被该第三数据集的每个聚合记录所对应的该第一数据集的一个或多个聚合记录匹配于与该第三数据集的聚合记录相关联的字段子集中的值;其中与该第三数据集中聚合记录相关联的聚合值表示对与来自该第一数据集的多个记录相关联的值执行不可级联操作的结果。9、一种用于聚合包括多个记录的数据的方法,每个记录保存多个字段中每一个字段的值,该方法包括在考虑所述字段之间的函数相关性的条件下,利用不可级联操作执行在所述记录内字段的多级聚合。10、如权利要求9所述的方法,其中所述不可级联操作是由以下各项组成的群组中之一确定所述值中不同值的个数,确定所述值的中间值,确定所述值的多个极值的和,以及确定所述值的多个和的极值。11、如权利要求9所述的方法,其中该不可级联操作是这样的,对一组操作数执行该不可级联操作的结果不能分解成以下的操作执行结果对所述操作数的第一子集执行该操作的第一结果,和对所述操作数的第二子集执行该操作的第二结果;其中该第一子集和第二子集是互斥的和穷举的。12、一种用于聚合数据的方法,包括接受第一数据集(302),该第一数据集包括多个记录,每个记录保存多个字段中每一个字段的值;产生该第一数据集的记录与多个第一关键字集(304)的笛卡尔积(306),每个关键字集表示该第一数据集的字段子集;从所产生的笛卡尔积产生第二数据集(310),该第二数据集包括一个或多个聚合记录,每个聚合记录对应于来自该第一数据集的一个或多个记录,上述被每个聚合记录所对应的来自该第一数据集的一个或多个记录匹配于与该聚合记录相关联的字段子集中的值;以及从该第二数据集产生第三数据集(318),该第三数据集包括一个或多个聚合记录,该第三数据集的每个聚合记录对应于该第一数据集的一个或多个聚合记录,上述被该第三数据集的每个聚合记录所对应的该第一数据集的一个或多个聚合记录匹配于与该第三数据集的聚合记录相关联的字段子集中的值。13、如权利要求12所述的方法,其中产生该第三数据集包括对所产生的笛卡尔积和如下数据集执行连接操作,该数据集的记录包含表示所述多个第一关键字集中之一的第一值和表示多个第二关键字集中之一的第二值,所述多个第二关键字集中的每一个表示所述第二数据集的字段子集;其中该连接操作通过匹配关键字集来连接记录。14、如权利要求13所述的方法,其中产生该第三数据集包括,对于至少一些已连接的记录,以通配符值替换至少一个所述字段的值。15、如权利要求12所述的方法,其中产生该第二数据集包括,对于所产生的笛卡尔积的至少一些记录,以通配符值替换至少一个所述字段的值。16、一种存储在计算机可读取介质上的软件,包括用于使计算机系统执行以下操作的指令接受第一数据集(302),该第一数据集包括多个记录,每个记录保存多个字段中每一个字段的值;产生该第一数据集的记录与多个第一关键字集(304)的笛卡尔积(306),每个关键字集表示该第一数据集的字段子集;从所产生的笛卡尔积产生第二数据集(310),该第二数据集包括一个或多个聚合记录,每个聚合记录对应于来自该第一数据集的一个或多个记录,上述被每个聚合记录所对应的来自该第一数据集的一个或多个记录匹配于与该聚合记录相关联的字段子集中的值;以及从该第二数据集产生第三数据集(318),该第三数据集包括一个或多个聚合记录,该第三数据集的每个聚合记录对应于该第一数据集的一个或多个聚合记录,上述被该第三数据集的每个聚合记录所对应的该第一数据集的一个或多个聚合记录匹配于与该第三数据集的聚合记录相关联的字段子集中的值。17、一种用于聚合数据的系统,包括用于接受第一数据集的装置(302),该第一数据集包括多个记录,每个记录保存多个字段中每一个字段的值;用于产生该第一数据集的记录与多个第一关键字集(304)的笛卡尔积(306)的装置,每个关键字集表示该第一数据集的字段子集;用于从所产生的笛卡尔积产生第二数据集(310)的装置,该第二数据集包括一个或多个聚合记录,每个聚合记录对应于来自该第一数据集的一个或多个记录,上述被每个聚合记录所对应的来自该第一数据集的一个或多个记录匹配于与该聚合记录相关联的字段子集中的值;以及用于从该第二数据集产生第三数据集(318)的装置,该第三数据集包括一个或多个聚合记录,该第三数据集的每个聚合记录对应于该第一数据集的一个或多个聚合记录,上述被该第三数据集的每个聚合记录所对应的该第一数据集的一个或多个聚合记录匹配于与该第三数据集的聚合记录相关联的字段子集中的值。全文摘要聚合数据包括接受第一数据集,该第一数据集包括多个记录,每个记录保存多个字段中每一个字段的值。从该第一数据集产生第二数据集。该第二数据集包括一个或多个聚合记录,每个聚合记录对应于来自该第一数据集的一个或多个记录,来自该第一数据集的一个或多个记录匹配于字段子集中的值。从该第二数据集产生第三数据集。该第三数据集包括一个或多个聚合记录,每个聚合记录对应于该第一数据集的一个或多个聚合记录,该第一数据集的一个或多个聚合记录匹配于字段子集中的值。与该第三数据集中的聚合记录相关联的聚合值表示对与来自该第一数据集的多个记录相关联的值执行不可级联操作的结果。文档编号G06F17/30GK101208696SQ200680023382公开日2008年6月25日申请日期2006年6月22日优先权日2005年6月27日发明者克雷格·W.·斯坦菲尔,马歇尔·A.·伊斯曼申请人:起元软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1