專利名稱::利用綜合操作的聚合數(shù)據(jù)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及利用綜合操作的聚合數(shù)據(jù)。
背景技術(shù):
:存在多種聯(lián)機分析處理(OLAP)技術(shù),其允許用戶分析存儲在數(shù)據(jù)庫中的多維數(shù)據(jù)。典型地,該數(shù)據(jù)庫包括具有多個維度(或"關(guān)鍵字字段")和多個屬性(或"非關(guān)鍵字字段")的"事實表",其中維度存儲用作進入多維數(shù)據(jù)的索引的值、屬性存儲其它值。用戶可以執(zhí)行涉及計算多維數(shù)據(jù)聚合的數(shù)據(jù)查詢。為了增加此種査詢的效率,典型的OLAP方案預(yù)先計算一些可能的聚合。
發(fā)明內(nèi)容在總的方面,本發(fā)明特征在于一種用于聚合數(shù)據(jù)的方法以及相應(yīng)的軟件和系統(tǒng)。該方法包括接受第一數(shù)據(jù)集,該第一數(shù)據(jù)集包括多個記錄,每個記錄保存(holding)多個字段中每一個字段的值。從該第一數(shù)據(jù)集產(chǎn)生第二數(shù)據(jù)集,該第二數(shù)據(jù)集包括一個或多個聚合記錄。該第二數(shù)據(jù)集的每個聚合記錄對應(yīng)于來自該第一數(shù)據(jù)集的一個或多個記錄,且上述被該第二數(shù)據(jù)集的每個聚合記錄所對應(yīng)的來自該第一數(shù)據(jù)集的一個或多個記錄匹配于與該聚合記錄相關(guān)聯(lián)的字段子集中的值。從該第二數(shù)據(jù)集產(chǎn)生第三數(shù)據(jù)集,該第三數(shù)據(jù)集包括一個或多個聚合記錄。該第三數(shù)據(jù)集的每個聚合記錄對應(yīng)于該第一數(shù)據(jù)集的一個或多個聚合記錄,且上述被該第三數(shù)據(jù)集的每個聚合記錄所對應(yīng)的該第一數(shù)據(jù)集的一個或多個聚合記錄匹配于與該第三數(shù)據(jù)集的聚合記錄相關(guān)聯(lián)的字段子集中的值。與第三數(shù)據(jù)集中的聚合記錄相關(guān)聯(lián)的聚合值表示對與來自該第一數(shù)據(jù)集的多個記錄相關(guān)聯(lián)的值執(zhí)行不可級聯(lián)操作的結(jié)果。這個方面可包括一個或多個以下特征。對與來自該第一數(shù)據(jù)集的多個記錄相關(guān)聯(lián)的值執(zhí)行不可級聯(lián)操作是由以下各項組成的群組中之一確定所述值中不同值(distinctvalue)的個數(shù)確定所述值的中間值,確定所述值的多個極值的和,以及確定所述值的多個和的極值。該不可級聯(lián)操作是這樣的,對一組操作數(shù)執(zhí)行該不可級聯(lián)操作的結(jié)果不能分解成以下的操作執(zhí)行結(jié)果對該操作數(shù)的第一子集執(zhí)行該操作的第一結(jié)果,和對該操作數(shù)的第二子集執(zhí)行該操作的第二結(jié)果;其中第一子集和第二子集是互斥的和窮舉的。所述多個字段中的至少一個字段至少部分地與所述多個字段中的另一個字段函數(shù)相關(guān)。與所述多個字段中至少一個字段相關(guān)聯(lián)的至少一些值依賴于與所述多個字段中另一個字段相關(guān)聯(lián)的對應(yīng)值。從該第二數(shù)據(jù)集產(chǎn)生該第三數(shù)據(jù)集包括接收該第二數(shù)據(jù)集的聚合記錄流。在另一總的方面,本發(fā)明特征在于一種用于聚合包括多個記錄的數(shù)據(jù)的方法,每個記錄保存多個字段中每一個字段的值。該方法包括,在考慮所述字段之間的函數(shù)相關(guān)性的條件下,利用不可級聯(lián)操作執(zhí)行在所述記錄內(nèi)字段的多級聚合。這個方面可包括一個或多個以下特征。該不可級聯(lián)操作是由以下各項組成的群組中之一確定所述值中不同值的個數(shù),確定所述值的中間值,確定所述值的多個極值的和,以及確定所述值的多個和的極值。該不可級聯(lián)操作是這樣的,對一組操作數(shù)執(zhí)行該不可級聯(lián)操作的結(jié)果不能分解成以下的操作執(zhí)行結(jié)果對該操作數(shù)的第一子集執(zhí)行該操作的第一結(jié)果,和對該操作數(shù)的第二子集執(zhí)行該操作的第二個結(jié)果;其中第一子集和第二子集是互斥的和窮舉的。在另一總的方面,本發(fā)明特征在于一種用于聚合數(shù)據(jù)的方法以及相應(yīng)的軟件和系統(tǒng)。該方法包括接受第一數(shù)據(jù)集,該第一數(shù)據(jù)集包括多個記錄,每個記錄保存多個字段中每一個字段的值。該方法包括產(chǎn)生該第一數(shù)據(jù)集的記錄與多個第一關(guān)鍵字集(keyset)的笛卡爾積。每個關(guān)鍵字集表示該第一數(shù)據(jù)集的字段子集。該方法包括從所產(chǎn)生的笛卡爾積產(chǎn)生第二數(shù)據(jù)集,該第二數(shù)據(jù)集包括一個或多個聚合記錄,每個聚合記錄對應(yīng)于來自該第一數(shù)據(jù)集的一個或多個記錄,上述被每個聚合記錄所對應(yīng)的來自該第一數(shù)據(jù)集的一個或多個記錄匹配于與該聚合記錄相關(guān)聯(lián)的字段子集中的值。該方法包括從該第二數(shù)據(jù)集產(chǎn)生第三數(shù)據(jù)集,該第三數(shù)據(jù)集包括一個或多個聚合記錄,該第三數(shù)據(jù)集的每個聚合記錄對應(yīng)于該第一數(shù)據(jù)集的一個或多個聚合記錄,上述被該第三數(shù)據(jù)集的每個聚合記錄所對應(yīng)的該第一數(shù)據(jù)集的一個或多個聚合記錄匹配于與該第三數(shù)據(jù)集的聚合記錄相關(guān)聯(lián)的字段子集中的值。這個方面可包括一個或多個以下特征。產(chǎn)生該第三數(shù)據(jù)集包括對所產(chǎn)生的笛卡爾積和如下數(shù)據(jù)集執(zhí)行連接操作,該數(shù)據(jù)集的記錄包含表示所述多個第一關(guān)鍵字集中之一的第一值和表示多個第二關(guān)鍵字集中之一的第二值,所述多個第二關(guān)鍵字集中的每一個表示該第二數(shù)據(jù)集的字段子集;其中該連接操作通過匹配關(guān)鍵字集來連接記錄。產(chǎn)生該第三數(shù)據(jù)集包括,對于至少一些已連接的記錄,以通配符值替換至少一個所述字段的值。產(chǎn)生該第二數(shù)據(jù)集包括,對于所產(chǎn)生的笛卡爾積的至少一些記錄,以通配符值替換至少一個所述字段的值。本發(fā)明的上述方面可包括一個或多個以下優(yōu)點。通過利用數(shù)據(jù)集中字段之間(例如,在關(guān)鍵字字段和將對其操作的字段之間)的函數(shù)相關(guān)性,可將聚合計算分解成多級?;诓豢杉壜?lián)操作,可將考慮函數(shù)相關(guān)性的多級聚合用于聚合數(shù)據(jù)。通過將聚合計算分解成多級,可降低聚合計算的量。根據(jù)以下描述和權(quán)利要求書,本發(fā)明的其它特征和優(yōu)點將變得更明顯。圖1是數(shù)據(jù)聚合系統(tǒng);圖2A是表示多維數(shù)據(jù)的表;圖2B—2G是表示基于圖2A中數(shù)據(jù)的聚合數(shù)據(jù)的表;圖3和5是關(guān)于單級聚合的數(shù)據(jù)流圖;圖4、6和7是關(guān)于多級聚合的數(shù)據(jù)流圖。具體實施例方式1概述參考圖l,數(shù)據(jù)聚合系統(tǒng)IO包括數(shù)據(jù)聚合器12,數(shù)據(jù)聚合器12處理數(shù)據(jù)存儲器16中輸入表14內(nèi)的信息,以產(chǎn)生關(guān)于存儲在聚合表18中的信息。在一些情形下,數(shù)據(jù)聚合器12基于用戶20在用戶界面22上提出的查詢來產(chǎn)生聚合表18。在其它情形下,數(shù)據(jù)聚合器12根據(jù)預(yù)計算方案來產(chǎn)生聚合表18。這種聚合在輸入表14中提供數(shù)據(jù)總結(jié),這對用戶20是有用的。參考圖2A,表100的行1-7表示多維數(shù)據(jù)集的記錄,從該多維數(shù)據(jù)集可產(chǎn)生聚合數(shù)據(jù)。表100是4維數(shù)據(jù)集,其包括表示關(guān)鍵字字段產(chǎn)^、經(jīng)勞賓、年份和邀點的四列以及表示非關(guān)鍵字字段齢獰^和份諮的兩列。用戶查詢可詢問由年份、產(chǎn)品和地點分開并在經(jīng)銷商上聚合的銷售額總和。這種聚合被稱為3維聚合是因為,相對于原始的4個關(guān)鍵字字段,聚合了一個關(guān)鍵字字段而保留下3個關(guān)鍵字字段。與被該聚合作為基礎(chǔ)的操作相對應(yīng),具有相同的保留關(guān)鍵字字段值的記錄的組合被稱為"聚合操作"。在該情形下,聚合操作是對非關(guān)鍵字字段中的值求和。圖2B顯示了表示對此實例產(chǎn)生的3維聚合數(shù)據(jù)集的表110。如另一個實例,用戶可查詢由產(chǎn)^分開并在年汾、經(jīng)舒爲(wèi)和il點上聚合的^會激或份潛的總和(l維聚合)。在該情形下,聚合涉及組合具有相同的單獨保留關(guān)鍵字字段產(chǎn)^值的列。圖2C顯示了表示所產(chǎn)生的1維聚合數(shù)據(jù)集結(jié)果的表120。對所有四個關(guān)鍵字字段上聚合的舒獰^^口/或份諮的總和產(chǎn)生由圖2D中表130表示的0維聚合(或單一"總聚合"值)。向用戶提供聚合數(shù)據(jù)的一種方式是預(yù)計算可用在查詢多維數(shù)據(jù)中的一些或甚至所有的可能聚合。該預(yù)計算可包括會花費相當(dāng)多時間的大量計算。例如,從具有14維的多維數(shù)據(jù)集進行所有具有4維或更少維的聚合的預(yù)計算包括MG+^3+MC2+MC;+MC^1471次聚合。如果該數(shù)據(jù)集有107列數(shù)據(jù),則該預(yù)計算可包括多達L471xl0"列數(shù)據(jù)的處理。用于減少多維聚合的預(yù)計算所需的計算量的一種策略包括產(chǎn)生多級聚合、基于高維聚合來計算低維聚合。例如,通過對6維聚合的2維進行聚合^2=15次,可從單一的6維聚合計算出15次的4維聚合14^。例如,如果6維聚合具有104列數(shù)據(jù),則這些15次4維聚合的預(yù)計算涉及處理107列數(shù)據(jù)以產(chǎn)生6維聚合,并隨后處理15><104=150,000列數(shù)據(jù)以產(chǎn)生這些15次的4維聚合,總的涉及10,150,000列數(shù)據(jù)的處理。作為比較,從14維數(shù)據(jù)分別預(yù)計算這些15次4維聚合中的每一個將涉及處理15xl0,000,000=150,000,000列數(shù)據(jù)。用于處理多維數(shù)據(jù)以產(chǎn)生聚合數(shù)據(jù)(例如,預(yù)計算和/或響應(yīng)用戶查詢)的系統(tǒng)10根據(jù)所涉及操作是否"可級聯(lián)(cascadable)",對多級聚合使用不同的方式。如果對一組操作數(shù)執(zhí)行操作的結(jié)果可分解成以下結(jié)果,則該操作是可級聯(lián)的(a)對操作數(shù)的第一子集執(zhí)行操作的第一結(jié)果,以及(b)對操作數(shù)的第二子集執(zhí)行操作的第二結(jié)果(其中第一子集和第二子集是互斥的和窮舉的)。例如,加法由于加法的結(jié)合性而是可級聯(lián)的(a+b+...+z)=(a+b+...+m)+(n+o+...+z)??杉壜?lián)操作的實例包括執(zhí)行求和和確定數(shù)據(jù)列中的最大值或最小值(即"極值")。在上述實例中,表130(圖2D)內(nèi)舒會^和份^字段中的值總和可在從表100內(nèi)原始數(shù)據(jù)集的單級中計算出,或可選地,在利用例如表110(圖2B)或表120(圖2C)內(nèi)中間聚合數(shù)據(jù)集的多級中計算出。這樣使用多級是可以的,因為所涉及的求和操作是可級聯(lián)的,從而允許系統(tǒng)10利用分解字段以被聚合進中間維集的第一多級聚合過程,將在以下2.2節(jié)中詳細描述??捎脕砭酆隙嗑S數(shù)據(jù)集中記錄的不可級聯(lián)操作的實例包括確定記錄的字段不同值的個數(shù),確定字段中值的中間值,確定值集的多個極值的和(例如每一個地點的最貴產(chǎn)品的總和),以及確定值的多個和的極值(例如最大的年總銷售額)。因此即使單一的結(jié)合性操作(例如加法或查找最大值)是可級聯(lián)的,但包括兩個結(jié)合性操作的復(fù)合操作可能是不可級聯(lián)的,如上述實例中的"極值的和"與"和的極值"。圖2E和2F顯示了基于不可級聯(lián)操作聚合數(shù)據(jù)的實例。圖2E顯示表140,其表示基于對產(chǎn)^字段的不同值進行計數(shù)的操作,由經(jīng)舒裔分開的在產(chǎn)"3、牟份和邀A上聚合表100記錄的結(jié)果。圖2F顯示表150,其表示基于對產(chǎn)^字段的不同值進行計數(shù)的操作,由年^分開的在產(chǎn)^、經(jīng)徵萄和il點的上聚合表100記錄的結(jié)果。圖2G顯示表160,其表示產(chǎn)^字段不同值個數(shù)的總聚合值。在此實例中,有3個不同的產(chǎn)品A、B和C,如通過聚合表IOO記錄而確定的。由于此"計數(shù)不同"操作是不可級聯(lián)的,因此總值不是必然地從例如表140或表150中數(shù)據(jù)的中間聚合數(shù)據(jù)獲得。在此實例中,由于表100原始數(shù)據(jù)的函數(shù)相關(guān)性,因此表140中的中間"不同的產(chǎn)品"值的和給出了正確的3個不同產(chǎn)品的結(jié)果。然而,表150中的中間"不同的產(chǎn)品"值的和給出了錯誤的6個不同產(chǎn)品的結(jié)果。通過使用第二個多級聚合過程,系統(tǒng)IO可基于不可級聯(lián)操作利用函數(shù)相關(guān)性來處理用于多級聚合的數(shù)據(jù)列,將在下文2.4節(jié)中詳細描述。在此實例中,每個產(chǎn)品具有唯一的經(jīng)銷商,因此在經(jīng)勞裔和產(chǎn)/^之間存在函數(shù)相關(guān)性(即,經(jīng)勞'裔的值函數(shù)上依賴于產(chǎn)^的值)。此函數(shù)相關(guān)性使得對基于不可級聯(lián)操作的此次聚合,可通過正確選擇中間數(shù)據(jù)而從該中間數(shù)據(jù)獲得正確結(jié)果。2利用數(shù)據(jù)流圖聚合數(shù)據(jù)在系統(tǒng)10中,將關(guān)于多維數(shù)據(jù)的計算通過有向圖表示成數(shù)據(jù)流,計算要素(component)與圖的頂點相關(guān)以及各要素之間的數(shù)據(jù)流對應(yīng)于圖的鏈環(huán)(弧、邊)。實現(xiàn)此種基于圖計算的系統(tǒng)在名稱為"EXECUTINGCOMPUTATIONSEXPRESSEDASGRAPHS"的美國專利5,966,072中有描述。關(guān)于多維數(shù)據(jù)集的聚合計算實例將在下文利用"數(shù)據(jù)流圖"來描述,以實現(xiàn)系統(tǒng)10中的聚合器12。2.1單級聚合參考圖3,用于計算單級聚合的數(shù)據(jù)流圖200包括輸入數(shù)據(jù)集202(例如輸入表14)和輸出數(shù)據(jù)集210(例如聚合表18)。輸入數(shù)據(jù)集202是一系列記錄的來源,每個記錄包括一組字段的值。一些字段是輸入數(shù)據(jù)集202中多維數(shù)據(jù)的關(guān)鍵字字段。準(zhǔn)備組件206處理記錄,為/匸點(rollup)組件208的處理作準(zhǔn)備。準(zhǔn)備組件206基于指定用來聚合數(shù)據(jù)的一組或多組關(guān)鍵字的"關(guān)鍵字集"輸入文件204來處理所述記錄。,總組件208基于所選擇的操作來組合多個輸入記錄的信息,并產(chǎn)生單一輸出記錄以替換多個輸入記錄。來自/匸總組件208的聚合記錄流被存儲在輸出數(shù)據(jù)集210中。在執(zhí)行單級聚合的實例中,圖200處理2維輸入數(shù)據(jù)集202中的記錄,2維輸入數(shù)據(jù)集202在下表中表示成具有兩個關(guān)鍵字字段關(guān)經(jīng)字0和關(guān)經(jīng)字/以及一個非關(guān)鍵字字段虜絲的整數(shù)值的行。<table>tableseeoriginaldocumentpage13</column></row><table>基于由一維(關(guān)鍵字字段)分開并對另一個關(guān)鍵字字段聚合的虜絲字段中的值求和,圖200產(chǎn)生兩個1維聚合數(shù)據(jù)集。"關(guān)鍵字集"輸入文件204指定第一次聚合(通過單態(tài)集(singletset){0}消除關(guān)鑌字7并保留以及第二次聚合(通過單態(tài)集{1}消除關(guān)鑀字0并保留關(guān)^字7)。為了在計算大量聚合(由大量關(guān)鍵字集指示的)時節(jié)省時間,準(zhǔn)備組件206產(chǎn)生具有"合成關(guān)鍵字"值的記錄流,其中合成關(guān)鍵字值可被用來執(zhí)行所有待計算的聚合。例如,準(zhǔn)備組件206基于輸入文件204中關(guān)鍵字集與輸入數(shù)據(jù)集202中記錄的笛卡爾積產(chǎn)生具有合成關(guān)鍵字的記錄(例如,利用對空值{}執(zhí)行的"連接(join)"操作),該合成關(guān)鍵字由關(guān)鑌字0和關(guān)鑌字7的值組成。在下表中給出對此實例執(zhí)行這種笛卡爾積的結(jié)果。<table>tableseeoriginaldocumentpage13</column></row><table><table>tableseeoriginaldocumentpage14</column></row><table>準(zhǔn)備組件206為不是對應(yīng)關(guān)鍵字集部分的記錄(行)的關(guān)鍵字字段中的值引入"通配符"值(例如"*")。在下表中給出對此實例引入通配符值的結(jié)果。<table>tableseeoriginaldocumentpage14</column></row><table>由準(zhǔn)備組件206產(chǎn)生的記錄流隨后由/匸總組件208處理。/匸總組件208對記錄進行屬性字段中的值求和,其中所述記錄的合成關(guān)鍵字值相匹配(在此通配符值僅匹配其它通配符值)。下表表示所產(chǎn)生的輸出數(shù)據(jù)集,該輸出數(shù)據(jù)集包括由圖200產(chǎn)生的兩個1維聚合數(shù)據(jù)集。<table>tableseeoriginaldocumentpage14</column></row><table>前兩行表示由關(guān)鍰字0分開并在關(guān)齄字7上聚合的虜絲字段中值的和。后兩行表示由關(guān)楚字7分開并在關(guān)鑌字0上聚合的厲絲字段中值的和??捎酶鞣N表示方式中的任何一個來存儲與數(shù)據(jù)流中記錄相關(guān)聯(lián)的合成關(guān)鍵字。例如,代替用于此實例中的關(guān)鍵字字段值陣列(其中一些是通配符),每個記錄可與非通配符值的關(guān)鍵字值對的陣列相關(guān)聯(lián)(當(dāng)數(shù)據(jù)集的維數(shù)比關(guān)鍵字集的維數(shù)大時,這可能是更有效的表示法)。2.2可級聯(lián)操作的多級聚合參考圖4,用于計算多級聚合的數(shù)據(jù)流圖300包括輸入數(shù)據(jù)集302和輸出數(shù)據(jù)集318。基于指定用來聚合數(shù)據(jù)的一組或多組關(guān)鍵字的第一集的輸入文件304,輸入數(shù)據(jù)集302是將由準(zhǔn)吝組件306和C總組件308處理的一系列記錄的來源。//T^組件308的輸出是表示聚合數(shù)據(jù)集的記錄流310,其中該聚合數(shù)據(jù)集的維數(shù)介于輸入數(shù)據(jù)集302的維數(shù)和輸出數(shù)據(jù)集318的維數(shù)之間。該中間數(shù)據(jù)可存儲在數(shù)據(jù)集中以用于后續(xù)査詢或數(shù)據(jù)處理,或可選地,可保留記錄流而非必然地存儲在文件中?;谥付ㄓ脕砭酆蠑?shù)據(jù)的一組或多組關(guān)鍵字的第二集的輸入文件314,由準(zhǔn)備組件312和/廠,點組件316處理記錄310。將來自/匸總組件316的聚合記錄流存儲在輸出數(shù)據(jù)集318中。在執(zhí)行可級聯(lián)操作的多級聚合的實例中,圖300處理4維輸入數(shù)據(jù)集302中的記錄并產(chǎn)生包括所有六個2維求和聚合的數(shù)據(jù)集,4維輸入數(shù)據(jù)集302在下表中表示成具有四個關(guān)鍵字字段關(guān)鑀字0、關(guān)變字A關(guān)經(jīng)字2和關(guān)鍰字3以及一個非關(guān)鍵字字段虜絲的整數(shù)值的行。<table>tableseeoriginaldocumentpage15</column></row><table>輸入文件304和314指定"匯總方案(rollupplan)",該匯總方案包括輸入文件304中的六個第一級關(guān)鍵字集以及輸入文件314中的六個第二級關(guān)鍵字集。特別地,在此實例中,基于由二維(關(guān)鍵字字段)分開并在另外兩個上聚合的慮絲字段中值的和,圖300產(chǎn)生六個2維聚合數(shù)據(jù)集。下面六個第一級關(guān)鍵字集中的每一個表示保留在三個3維中間聚合數(shù)據(jù)集中之一的三個關(guān)鍵字字段(在記錄310內(nèi))關(guān)獰字桌7-l:{0,1,2}關(guān)變字桌7-2:{0,1,2}關(guān)獰字桌7-3:{0,1,2}關(guān)經(jīng)字桌7-4:{0,1,3}關(guān)經(jīng)字桌/-5:{0,1,3}關(guān)楚字桌7-6:{0,2,3}下面六個第二級關(guān)鍵字集中的每一個表示保留在六個2維輸出聚合數(shù)據(jù)集中之一的兩個關(guān)鍵字字段關(guān)經(jīng)字桌2-l:{0,1}關(guān)獰字桌2-2:{0,2},字桌2-3:{1,2}關(guān)獰字桌H{0,3}避字桌2-5:{1,3}關(guān)胖桌;6:{2,3}第二級關(guān)鍵字集中的每個關(guān)鍵字字段選自對應(yīng)第一級關(guān)鍵字集中的關(guān)鍵字字段(其中關(guān)楚字桌2-n對應(yīng)關(guān)鑌字桌7-n)。選擇第一級關(guān)鍵字集中的關(guān)鍵字字段,使得兩個字段的六種可能組合中的每一種可表示在第二級關(guān)鍵字集中。為了在生成合成關(guān)鍵字集值中的應(yīng)用,輸入文件314在記錄中存儲每個第二級關(guān)鍵字集(例如關(guān)經(jīng)孕:桌2-l)以及與其相關(guān)的第一級關(guān)鍵字集(例如關(guān)經(jīng)字桌7-l),以下將詳細描述。根據(jù)在第一級和第二級中聚合的維數(shù),在一些情況下,選擇使用哪個第一級關(guān)鍵字集將影響需要產(chǎn)生多少中間聚合數(shù)據(jù)集,以計算給定數(shù)目的輸出聚合數(shù)據(jù)集(這將影響總計算的效率)。在此實例中,不管四個可能中間聚合數(shù)據(jù)集中的哪三個被選擇,都需要三個中間聚合數(shù)據(jù)集來計算六個輸出聚合數(shù)據(jù)集。將在下面2.3節(jié)中描述用于選擇第一級關(guān)鍵字集的程序,在某種程度上該程序減少一些情況下所需的中間聚合數(shù)據(jù)集的數(shù)量。準(zhǔn)備組件306基于輸入文件304中不同關(guān)鍵字集(在此例中為3個不同關(guān)鍵字集)與輸入數(shù)據(jù)集302中記錄的笛卡爾積來產(chǎn)生具有一級合成關(guān)鍵字的記錄。準(zhǔn)備組件306還為不是對應(yīng)關(guān)鍵字集部分的記錄(行)的關(guān)鍵字字段中的值引入通配符值。在下表中給出了對此實例執(zhí)行笛卡爾積并引入通配符值的結(jié)果。<table>tableseeoriginaldocumentpage16</column></row><table><table>tableseeoriginaldocumentpage17</column></row><table>前兩行表示由關(guān)鑌字0、關(guān)鍵字J和關(guān)鍵字2分開并在關(guān)鑀字7上聚合的虜絲字段中的值的和。接下來的兩行表示由關(guān)經(jīng)字O、關(guān)獰字/和關(guān)經(jīng)字3分開并在關(guān)鍰字2上聚合的虜絲字段中的值的和。最后三行表示由關(guān)變字0、關(guān)鑌字2和關(guān)鑀字3分開并在關(guān)經(jīng)字7上聚合的^f絲字段中的值的和。通過對在上表中示出的中間記錄310以及在下表中示出的輸入文件314中的關(guān)鍵字集記錄執(zhí)行連接操作,準(zhǔn)備組件312產(chǎn)生具有第二級合成關(guān)鍵字的記錄。將關(guān)鑌字桌l的值用作連接操作的關(guān)鍵字。<table>tableseeoriginaldocumentpage17</column></row><table><table>tableseeoriginaldocumentpage18</column></row><table><table>tableseeoriginaldocumentpage19</column></row><table>上表中的行表示由包含整數(shù)值的關(guān)鍵字字段分開并在包含通配符值的關(guān)鍵字字段上聚合的虜絲字段中的值的和。23關(guān)鍵字集的選擇以下是由數(shù)據(jù)流圖的準(zhǔn)吝組件用來選擇表示中間聚合數(shù)據(jù)集的字段的第一級關(guān)鍵字集的示例性程序。根據(jù)選擇影響所需的中間聚合數(shù)的實例來描述該程序。該實例經(jīng)由3維的中間聚合從5維數(shù)據(jù)(具有關(guān)鍵字字段0、1、2、3、4)產(chǎn)生2維數(shù)據(jù),其產(chǎn)生IO個可能的2維輸出聚合數(shù)據(jù)集(因為A"0)。通過選擇表示第一中間聚合數(shù)據(jù)集中字段的任何一個第一3維關(guān)鍵字集{4,3,2},該組件啟動。該組件確定可從第一中間聚合數(shù)據(jù)集產(chǎn)生哪些輸出聚合數(shù)據(jù)集{4,3}、{4,2}、{3,2}。然后該組件搜索第二關(guān)鍵字集{4,1,0},從該第二關(guān)鍵字集中可產(chǎn)生剩下的輸出聚合數(shù)據(jù)集的最大數(shù),其可產(chǎn)生{4,1}、{4,0}、{1,0}。重復(fù)此步驟直到產(chǎn)生所有2維輸出聚合數(shù)據(jù)集,這為總的四個第一級關(guān)鍵字集產(chǎn)生另外的關(guān)鍵字集{3,2,1}和{3,2,0}。第一級關(guān)鍵字集的其它選擇產(chǎn)生較高數(shù),從該較高數(shù)可產(chǎn)生所有2維輸出聚合數(shù)據(jù)集。例如,以下列順序{4,3,2}、{4,3,1}、{4,3,0}、{4,2,1}、{4,2,0}、{3,2,0}選擇第一級關(guān)鍵字集產(chǎn)生六個第一級關(guān)鍵字集。因此在存在數(shù)百或數(shù)千可能的中間關(guān)鍵字集的一些情況下,根據(jù)上述程序選擇關(guān)鍵字集可減少需要產(chǎn)生的中間聚合數(shù)據(jù)集的數(shù)量。2.4不可級聯(lián)操作的聚合在一些情形中,基于不可級聯(lián)操作來計算多維數(shù)據(jù)的聚合涉及直接從原始數(shù)據(jù)集計算大部分的期望聚合,這是因為計算這些聚合所需的一些信息在中間維數(shù)的聚合中丟失了。然而,在其它情形中,中間維數(shù)的聚合包含計算這些聚合中某些的信息。這種情形之一是數(shù)據(jù)集中一個關(guān)鍵字字段的值依賴于另一個關(guān)鍵字字段的值。2.4.1沒有函數(shù)相關(guān)的單級聚合在描述一種通過利用函數(shù)相關(guān)性將計算分解成多級來減少聚合計算大小的情形之前,描述基于對目標(biāo)字段執(zhí)行不可級聯(lián)的"計數(shù)不同"操作來計算聚合的單級方式是有用的。參考圖5,用于計算單級聚合的數(shù)據(jù)流圖400包括輸入數(shù)據(jù)集402和輸出數(shù)據(jù)集412。圖400包括準(zhǔn)備組件406,其基于輸入文件404處理記錄以產(chǎn)生包括對應(yīng)于期望聚合的合成關(guān)鍵字的記錄流。圖400被設(shè)置成利用/廠,點組件408和/匸忌組件410執(zhí)行"計數(shù)不同"的操作。C總組件408基于目標(biāo)字段值來組合記錄,使得每個不同值對每個合成關(guān)鍵字值出現(xiàn)一次。此第一匯總操作使得/r,總組件410可通過計數(shù)具有匹配合成關(guān)鍵字的記錄來確定目標(biāo)字段中不同值的個數(shù)。來自;r:總組件410的聚合記錄流被存儲在輸出數(shù)據(jù)集412中。即使數(shù)據(jù)流圖400包括多個匯總組件,其執(zhí)行的聚合計算是單級聚合,這是因為其輸出并不是基于中間維數(shù)的數(shù)據(jù)產(chǎn)生的。在基于不可級聯(lián)的"計數(shù)不同"操作來執(zhí)行單級聚合的實例中,圖400處理2維輸入數(shù)據(jù)集402中的記錄,2維輸入數(shù)據(jù)集402在下表中表示成對兩個關(guān)鍵字字段關(guān)經(jīng)字0和關(guān)鑌字7以及一個非關(guān)鍵字字段^標(biāo)具有整數(shù)值的行,其中非關(guān)鍵字字段^^是"計數(shù)不同"操作的目標(biāo)。<table>tableseeoriginaldocumentpage20</column></row><table>基于在^-7字段上執(zhí)行的"計數(shù)不同"操作,圖400產(chǎn)生兩個1維聚合數(shù)據(jù)集和總聚合。輸入文件404為1維聚合指定對應(yīng)的關(guān)鍵字集為{0}和{1},為總聚合指定為{}。準(zhǔn)備組件406基于輸入文件404中這些關(guān)鍵字集與輸入數(shù)據(jù)集402中記錄的笛卡爾積產(chǎn)生具有合成關(guān)鍵字值的記錄流,輸入數(shù)據(jù)集402中的記錄具有對于不在該關(guān)鍵字集中的關(guān)鍵字字段的通配符值,如下表所示。<table>complextableseeoriginaldocumentpage21</column></row><table><table>tableseeoriginaldocumentpage22</column></row><table>/匸總組件410組合具有匹配合成關(guān)鍵字值(關(guān)^字0和關(guān)變字7)的記錄,并對所組合記錄的數(shù)目進行計數(shù),以產(chǎn)生不同^^字段值的個數(shù)。通過圖400產(chǎn)生的輸出數(shù)據(jù)集包括兩個1維聚合數(shù)據(jù)集和總聚合,如下表所示。<table>tableseeoriginaldocumentpage22</column></row><table>前三行表示由關(guān)經(jīng)字o分開并在關(guān)^字/上聚合的^癡字段中的不同值的個數(shù)。接下來的兩行表示由關(guān)經(jīng)字7分開并在關(guān)變字o上聚合的^參天字段中不同值的個數(shù)。最后一行表示同時在二個關(guān)鍵字字段上聚合的^癡字段中不同值的總數(shù)。2.4.2基于函數(shù)相關(guān)的級在不可級聯(lián)操作的多級方法中,為了確保中間維數(shù)聚合包含基于這些中間維數(shù)聚合產(chǎn)生期望聚合所需的信息,至少一個關(guān)鍵字字段應(yīng)至少部分地與另一關(guān)鍵字字段函數(shù)相關(guān)。字段值之間(例如,關(guān)鍵字字段和目標(biāo)字段之間)的函數(shù)相關(guān)性可以各種數(shù)據(jù)類型出現(xiàn)。例如,如果一個字段值表示個體(例如,客戶ID),則表示諸如性別、民族、或出生曰期的屬性的另一個字段值將與該字段值函數(shù)相關(guān)。當(dāng)函數(shù)相關(guān)性中存在例外時,則一個字段"部分"或"近似"地與另一個字段函數(shù)相關(guān),將在以下3.1節(jié)中詳細描述。圖6顯示包括第一級的數(shù)據(jù)流圖500,該第一級產(chǎn)生相對于輸入數(shù)據(jù)集502的降維聚合記錄512。該第一級包括準(zhǔn)吝組件506以及兩個/匸總組件508和510,;T,總組件508和510起到同上述圖400中的作用。輸入文件504包括關(guān)鍵字集,其中該關(guān)鍵字集包括與聚合操作的目標(biāo)字段不相關(guān)的"非相關(guān)"關(guān)鍵字字段。圖500還包括第二級,該第二級基于包括與目標(biāo)字段相關(guān)的"相關(guān)"關(guān)鍵字字段的輸入文件516中的關(guān)鍵字集進一步聚合記錄512。也就是說,與目標(biāo)字段相關(guān)的任何字段在最后一級被率A沐no在基于不可級聯(lián)的"計數(shù)不同"操作來執(zhí)行多級聚合的實例中,圖500處理2維輸入數(shù)據(jù)集502中的記錄,2維輸入數(shù)據(jù)集502在下表中表示成對兩個關(guān)鍵字字段關(guān)鏺字6和關(guān)獰字7以及為一個非關(guān)鍵字字段^^/具有整數(shù)值的行,其中非關(guān)鍵字字段^^是"計數(shù)不同"操作的目標(biāo)。關(guān)鍵字字段關(guān)鍰字O與^^字段函數(shù)相關(guān)。<table>tableseeoriginaldocumentpage23</column></row><table>圖500基于對^》天字段執(zhí)行的"計數(shù)不同"操作產(chǎn)生兩個1維聚合數(shù)據(jù)集和總聚合。輸入文件504和516指定"匯總方案",該"匯總方案"包括輸入文件504中的三個第一級關(guān)鍵字集和輸入文件516中的三個第二級關(guān)鍵字集。第一級包括基于非相關(guān)關(guān)鍵字字段關(guān)楚字7的值進行的匯總,關(guān)鍵字字段關(guān)綴字7的值包括在第一級關(guān)鍵字集中關(guān)鑀字桌7-l{1}避字桌7畫2關(guān)鑌字桌i-3在不可級聯(lián)操作的多級方法中,第二級關(guān)鍵字集中的關(guān)鍵字字段不是必須僅從對應(yīng)的第一級關(guān)鍵字集中的關(guān)鍵字字段選出。然而,第一級關(guān)鍵字集和第二級關(guān)鍵字集中的關(guān)鍵字字段被選擇,以使得在第一級中聚合非相關(guān)維并在第二級中聚合相關(guān)維,正如在該實例中。在該實例中,第二級包括基于相關(guān)關(guān)鍵字字段關(guān)變字0的值進行的匯總,關(guān)鍵字字段關(guān)鑌字0的值包括在第二級關(guān)鍵字集中關(guān)胖桌2-l:{0}.關(guān)鑌字桌2-2:{}關(guān),桌2國3:{1}準(zhǔn)備組件506基于輸入文件504中第一級關(guān)鍵字集與輸入數(shù)據(jù)集502中記錄的笛卡爾積產(chǎn)生具有合成關(guān)鍵字值的記錄流,輸入數(shù)據(jù)集502中的記錄具有對于不在第一級關(guān)鍵字集中的任何非相關(guān)關(guān)鍵字字段的通配符值,如下表所示。<table>tableseeoriginaldocumentpage24</column></row><table>/匸總組件508基于合成關(guān)鍵字的匹配值以及移除復(fù)制記錄的^癡:字段來組合記錄??蛇x地,可從第一級合成關(guān)鍵字省去相關(guān)關(guān)鍵字字段關(guān)經(jīng)字0(即在匹配中不考慮),這是因為關(guān)鑌字0的值與^標(biāo)字段的值相關(guān)。所產(chǎn)生的記錄如下表所示。<table>tableseeoriginaldocumentpage25</column></row><table>匯總組件510組合具有匹配合成關(guān)鍵字值(關(guān)變字0和關(guān)經(jīng)字/)的記錄,并對所組合記錄的數(shù)目進行計數(shù),以產(chǎn)生不同^》7^字段值的個數(shù)。在所產(chǎn)生的組合記錄中不是必然地包括^^字段的值。所產(chǎn)生的中間記錄512在下表中表示為包括1維聚合記錄和2維聚合記錄。<table>tableseeoriginaldocumentpage25</column></row><table>通過對上表中示出的中間記錄512以及下表中示出的輸入文件516中的關(guān)鍵字集記錄執(zhí)行連接操作,準(zhǔn)備組件514產(chǎn)生具有第二級合成關(guān)鍵字的記錄。關(guān)經(jīng)^^桌7的值被用作連接操作的關(guān)鍵字。<table>tableseeoriginaldocumentpage25</column></row><table><table>tableseeoriginaldocumentpage26</column></row><table>下表示出了所產(chǎn)生的從準(zhǔn)備組件514發(fā)送到/匸總組件518的連接記錄(包括對于不在第二級關(guān)鍵字集中的關(guān)鍵字字段的通配符值)如下表所示。<table>tableseeoriginaldocumentpage26</column></row><table>匯總組件5i8組合具有匹配合成關(guān)鍵字值(關(guān)鍵字o和關(guān)鍵字i)的記錄,并對"計數(shù)不同(^標(biāo))"字段中的對應(yīng)值求和,以產(chǎn)生不同目標(biāo)字段值的個數(shù)。在下表中示出的所產(chǎn)生的輸出記錄被存儲在輸出數(shù)據(jù)集520中。<table>tableseeoriginaldocumentpage26</column></row><table>上表中的行表示由包含整數(shù)值的關(guān)鍵字字段分開并在包含通配符值的關(guān)鍵字字段上聚合的^》天字段的不同值的個數(shù)。2.4.3增加補充級上述通過多級聚合提供的節(jié)省計算時間可擴展到補充級聚合。應(yīng)該在聚合的每一級適當(dāng)處理相關(guān)和非相關(guān)關(guān)鍵字字段,正如在以下實例中一樣。例如,為了減少數(shù)據(jù)集的維數(shù),可將通配符值添加到要被移除的關(guān)鍵字字段。對于非相關(guān)關(guān)鍵字字段,一旦通過在合成關(guān)鍵字和目標(biāo)字段上的初始匯總設(shè)定了非相關(guān)關(guān)鍵字字段中的通配符值和特定值的模式,則該模式不會改變。如果非相關(guān)關(guān)鍵字字段在初始匯總期間獲得通配符值,則該關(guān)鍵字字段應(yīng)僅用來為省略了該關(guān)鍵字字段的后續(xù)匯總操作匹配值。如果非相關(guān)關(guān)鍵字字段在初始匯總期間保留特定值,則該關(guān)鍵字字段應(yīng)僅用來為包括該關(guān)鍵字字段的后續(xù)匯總操作匹配值。在上述實例中,如果對應(yīng)的第一級和第二級關(guān)鍵字集僅是相關(guān)關(guān)鍵字字段不同,則在第二級處理期間將不把通配符值引入非相關(guān)關(guān)鍵字字段,從而產(chǎn)生正確的結(jié)果。圖7示出了實現(xiàn)3級聚合計算的示例性數(shù)據(jù)流圖600。準(zhǔn)備組件606基于包括非相關(guān)關(guān)鍵字字段的輸入文件604中的關(guān)鍵字集來處理輸入數(shù)據(jù)集602的記錄。/匸總組件608基于目標(biāo)字段和合成關(guān)鍵字來組合記錄,以及/匸總組件609基于所有關(guān)鍵字字段來組合記錄,從而使得中間記錄610具有與輸入數(shù)據(jù)集602相同的維數(shù)。輸入文件614中的第二級關(guān)鍵字集包括非相關(guān)關(guān)鍵字字段以及可選地包括一些相關(guān)關(guān)鍵字字段,其中這些相關(guān)關(guān)鍵字字段適于得出具有某個指定維數(shù)的中間數(shù)據(jù)集618。輸入文件622中的第三級關(guān)鍵字集包括用于產(chǎn)生具有被期望的較低維數(shù)的輸出數(shù)據(jù)集626的最后關(guān)鍵字字段。例如,輸入數(shù)據(jù)集602具有4維,其中2維相關(guān)(關(guān)經(jīng)字0和關(guān)鍰字7)而另外2維不相關(guān)(關(guān)鑌字2和關(guān)經(jīng)字3)。輸出數(shù)據(jù)集626包括基于3維中間數(shù)據(jù)集618的具有2維或更少維的聚合。對于該實例的適當(dāng)3級匯總圖如下表所示。<table>tableseeoriginaldocumentpage27</column></row><table><table>tableseeoriginaldocumentpage28</column></row><table>如上所述,存在或不存在非相關(guān)關(guān)鍵字字段在1級和3級之間沒有變化。在一些情形下,通過估計適當(dāng)維數(shù)的所有可能的關(guān)鍵字集,根據(jù)可從它們產(chǎn)生的預(yù)期聚合的數(shù)目對它們分級,并選擇具有最大級的關(guān)鍵字集,則可確定關(guān)鍵字集的選擇,正如在2.3節(jié)中描述的程序。3可選方式3.1近似函數(shù)相關(guān)利用函數(shù)相關(guān)減少聚合計算量的方法可應(yīng)用到其中函數(shù)相關(guān)性由于存在例外而不嚴(yán)格的情形中。例如,在零售鏈中,可能在"客戶ID"和"商店"之間存在微弱的函數(shù)相關(guān)性,這使得80%的客戶只能在一家商店購物。還可能有在數(shù)據(jù)集中僅具有單一交易的"單個"客戶,并因此關(guān)于該客戶的所有字段均與該客戶ID函數(shù)相關(guān)。通過確定單個客戶的數(shù)量以及各種函數(shù)相關(guān)性的強度,輸入數(shù)據(jù)集可分成能被適當(dāng)處理的一些3.2高階函數(shù)相關(guān)在一些情形中,可利用高階函數(shù)相關(guān)性來減少計算量。一些關(guān)鍵字字段可與目標(biāo)字段和另一個字段的組合函數(shù)相關(guān)。例如,如果存在4個非相關(guān)維并且期望所有2維聚合,則可能存在對應(yīng)10次匯總操作的10次聚合。然而,如果維數(shù)1-3與維數(shù)0和目標(biāo)字段的組合相關(guān),則涉及維數(shù)0的四次匯總操作可壓縮成單一匯總操作,并且匯總操作集可以從IO減少到7。3.3實現(xiàn)上述數(shù)據(jù)聚合方法可利用在計算機上執(zhí)行的軟件來實現(xiàn)。例如,該軟件形成一個或多個計算機程序中的程序,所述一個或多個計算機程序在一個或多個已編程或可編程的計算機系統(tǒng)(其可以是諸如分布式、客戶/服務(wù)器、或網(wǎng)格的各種結(jié)構(gòu))上執(zhí)行,所述已編程或可編程的計算機系統(tǒng)均包括至少一個處理器、至少一個數(shù)據(jù)存儲系統(tǒng)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設(shè)備或端口、以及至少一個輸出設(shè)備或端口。該軟件可形成較大程序的一個或多個模塊,例如該軟件提供與計算圖形的設(shè)計和配置相關(guān)的其它服務(wù)??蓪D形的節(jié)點和元素實現(xiàn)為存儲在計算機可讀取介質(zhì)中的數(shù)據(jù)結(jié)構(gòu)或者符合存儲在數(shù)據(jù)庫中的數(shù)據(jù)模型的其它有組織的數(shù)據(jù)。該軟件可提供在諸如CD-ROM的介質(zhì)上或通過網(wǎng)絡(luò)傳送(被編碼在所傳送的信號中)到執(zhí)行該軟件的計算機,該介質(zhì)可由通用或?qū)S每删幊痰挠嬎銠C進行讀取。所有功能可在專用計算機上執(zhí)行,或者利用諸如協(xié)處理器的專用硬件來執(zhí)行。該軟件可實現(xiàn)為分布式形式,其中該軟件指定的不同的計算部分由不同的計算機執(zhí)行。每個這樣的計算機程序優(yōu)選地存儲在或下載到由通用或?qū)S每删幊痰挠嬎銠C可讀取的存儲介質(zhì)或設(shè)備上(例如固體存儲器或介質(zhì),或者磁介質(zhì)或光學(xué)介質(zhì)),用于在該計算機系統(tǒng)讀取該存儲介質(zhì)或設(shè)備時進行配置并操作該計算機,以執(zhí)行本文描述的程序。本發(fā)明的系統(tǒng)還可實現(xiàn)為計算機可讀取的存儲介質(zhì),配置有計算機程序,其中如此配置該存儲介質(zhì)使得計算機系統(tǒng)以特定和預(yù)定方式操作以執(zhí)行本文描述的功能。需要理解的是,前述描述意在說明而并非限制本發(fā)明的范圍,本發(fā)明的范圍由附加的權(quán)利要求書所限定。例如,上述的多個功能步驟可以不同的順序來執(zhí)行,實質(zhì)上并不影響總體處理。其它實施例仍在所附權(quán)利要求書的范圍內(nèi)。權(quán)利要求1、一種用于聚合數(shù)據(jù)的方法,包括接受第一數(shù)據(jù)集(502),該第一數(shù)據(jù)集包括多個記錄,每個記錄保存多個字段中每一個字段的值;從該第一數(shù)據(jù)集產(chǎn)生第二數(shù)據(jù)集(512),該第二數(shù)據(jù)集包括一個或多個聚合記錄,該第二數(shù)據(jù)集的每個聚合記錄對應(yīng)于來自該第一數(shù)據(jù)集的一個或多個記錄,上述被該第二數(shù)據(jù)集的每個聚合記錄所對應(yīng)的來自該第一數(shù)據(jù)集的一個或多個記錄匹配于與該聚合記錄相關(guān)聯(lián)的字段子集中的值;以及從該第二數(shù)據(jù)集產(chǎn)生第三數(shù)據(jù)集(520),該第三數(shù)據(jù)集包括一個或多個聚合記錄,該第三數(shù)據(jù)集的每個聚合記錄對應(yīng)于該第一數(shù)據(jù)集的一個或多個聚合記錄,上述被該第三數(shù)據(jù)集的每個聚合記錄所對應(yīng)的該第一數(shù)據(jù)集的一個或多個聚合記錄匹配于與該第三數(shù)據(jù)集的聚合記錄相關(guān)聯(lián)的字段子集中的值;其中與該第三數(shù)據(jù)集中聚合記錄相關(guān)聯(lián)的聚合值表示對與來自該第一數(shù)據(jù)集的多個記錄相關(guān)聯(lián)的值執(zhí)行不可級聯(lián)操作的結(jié)果。2、如權(quán)利要求1所述的方法,其中對與來自該第一數(shù)據(jù)集的多個記錄相關(guān)聯(lián)的值執(zhí)行不可級聯(lián)操作是由以下各項組成的群組中之一確定所述值中不同值的個數(shù),確定所述值的中間值,確定所述值的多個極值的和,以及確定所述值的多個和的極值。3、如權(quán)利要求1所述的方法,其中該不可級聯(lián)操作是這樣的,對一組操作數(shù)執(zhí)行該不可級聯(lián)操作的結(jié)果不能分解成以下的操作執(zhí)行結(jié)果對所述操作數(shù)的第一子集執(zhí)行該操作的第一結(jié)果,和對所述操作數(shù)的第二子集執(zhí)行該操作的第二結(jié)果;其中所述第一子集和第二子集是互斥的和窮舉的。4、如權(quán)利要求1所述的方法,其中所述多個字段中的至少一個字段至少部分地與所述多個字段中的另一個字段函數(shù)相關(guān)。5、如權(quán)利要求4所述的方法,其中與所述多個字段中至少一個字段相關(guān)聯(lián)的至少一些值依賴于與所述多個字段中另一個字段相關(guān)聯(lián)的對應(yīng)值。6、如權(quán)利要求1所述的方法,其中從該第二數(shù)據(jù)集產(chǎn)生該第三數(shù)據(jù)集包括接收該第二數(shù)據(jù)集的聚合記錄流。7、一種存儲在計算機可讀取介質(zhì)上的軟件,包括用于使計算機系統(tǒng)執(zhí)行以下操作的指令接受第一數(shù)據(jù)集(502),該第一數(shù)據(jù)集包括多個記錄,每個記錄保存多個字段中每一個字段的值;從該第一數(shù)據(jù)集產(chǎn)生第二數(shù)據(jù)集(512),該第二數(shù)據(jù)集包括一個或多個聚合記錄,該第二數(shù)據(jù)集的每個聚合記錄對應(yīng)于來自該第一數(shù)據(jù)集的一個或多個記錄,上述被該第二數(shù)據(jù)集的每個聚合記錄所對應(yīng)的來自該第一數(shù)據(jù)集的一個或多個記錄匹配于與該聚合記錄相關(guān)聯(lián)的字段子集中的值;以及從該第二數(shù)據(jù)集產(chǎn)生第三數(shù)據(jù)集(520),該第三數(shù)據(jù)集包括一個或多個聚合記錄,該第三數(shù)據(jù)集的每個聚合記錄對應(yīng)于該第一數(shù)據(jù)集的一個或多個聚合記錄,上述被該第三數(shù)據(jù)集的每個聚合記錄所對應(yīng)的該第一數(shù)據(jù)集的一個或多個聚合記錄匹配于與該第三數(shù)據(jù)集的聚合記錄相關(guān)聯(lián)的字段子集中的值;其中與該第三數(shù)據(jù)集中聚合記錄相關(guān)聯(lián)的聚合值表示對與來自該第一數(shù)據(jù)集的多個記錄相關(guān)聯(lián)的值執(zhí)行不可級聯(lián)操作的結(jié)果。8、一種用于聚合數(shù)據(jù)的系統(tǒng),包括用于接受第一數(shù)據(jù)集(502)的裝置,該第一數(shù)據(jù)集包括多個記錄,每個記錄保存多個字段中每一個字段的值;用于從該第一數(shù)據(jù)集產(chǎn)生第二數(shù)據(jù)集(512)的裝置,該第二數(shù)據(jù)集包括一個或多個聚合記錄,該第二數(shù)據(jù)集的每個聚合記錄對應(yīng)于來自該第一數(shù)據(jù)集的一個或多個記錄,上述被該第二數(shù)據(jù)集的每個聚合記錄所對應(yīng)的來自該第一數(shù)據(jù)集的一個或多個記錄匹配于與該聚合記錄相關(guān)聯(lián)的字段子集中的值;以及用于從該第二數(shù)據(jù)集產(chǎn)生第三數(shù)據(jù)集(520)的裝置,該第三數(shù)據(jù)集包括一個或多個聚合記錄,該第三數(shù)據(jù)集的每個聚合記錄對應(yīng)于該第一數(shù)據(jù)集的一個或多個聚合記錄,上述被該第三數(shù)據(jù)集的每個聚合記錄所對應(yīng)的該第一數(shù)據(jù)集的一個或多個聚合記錄匹配于與該第三數(shù)據(jù)集的聚合記錄相關(guān)聯(lián)的字段子集中的值;其中與該第三數(shù)據(jù)集中聚合記錄相關(guān)聯(lián)的聚合值表示對與來自該第一數(shù)據(jù)集的多個記錄相關(guān)聯(lián)的值執(zhí)行不可級聯(lián)操作的結(jié)果。9、一種用于聚合包括多個記錄的數(shù)據(jù)的方法,每個記錄保存多個字段中每一個字段的值,該方法包括在考慮所述字段之間的函數(shù)相關(guān)性的條件下,利用不可級聯(lián)操作執(zhí)行在所述記錄內(nèi)字段的多級聚合。10、如權(quán)利要求9所述的方法,其中所述不可級聯(lián)操作是由以下各項組成的群組中之一確定所述值中不同值的個數(shù),確定所述值的中間值,確定所述值的多個極值的和,以及確定所述值的多個和的極值。11、如權(quán)利要求9所述的方法,其中該不可級聯(lián)操作是這樣的,對一組操作數(shù)執(zhí)行該不可級聯(lián)操作的結(jié)果不能分解成以下的操作執(zhí)行結(jié)果對所述操作數(shù)的第一子集執(zhí)行該操作的第一結(jié)果,和對所述操作數(shù)的第二子集執(zhí)行該操作的第二結(jié)果;其中該第一子集和第二子集是互斥的和窮舉的。12、一種用于聚合數(shù)據(jù)的方法,包括接受第一數(shù)據(jù)集(302),該第一數(shù)據(jù)集包括多個記錄,每個記錄保存多個字段中每一個字段的值;產(chǎn)生該第一數(shù)據(jù)集的記錄與多個第一關(guān)鍵字集(304)的笛卡爾積(306),每個關(guān)鍵字集表示該第一數(shù)據(jù)集的字段子集;從所產(chǎn)生的笛卡爾積產(chǎn)生第二數(shù)據(jù)集(310),該第二數(shù)據(jù)集包括一個或多個聚合記錄,每個聚合記錄對應(yīng)于來自該第一數(shù)據(jù)集的一個或多個記錄,上述被每個聚合記錄所對應(yīng)的來自該第一數(shù)據(jù)集的一個或多個記錄匹配于與該聚合記錄相關(guān)聯(lián)的字段子集中的值;以及從該第二數(shù)據(jù)集產(chǎn)生第三數(shù)據(jù)集(318),該第三數(shù)據(jù)集包括一個或多個聚合記錄,該第三數(shù)據(jù)集的每個聚合記錄對應(yīng)于該第一數(shù)據(jù)集的一個或多個聚合記錄,上述被該第三數(shù)據(jù)集的每個聚合記錄所對應(yīng)的該第一數(shù)據(jù)集的一個或多個聚合記錄匹配于與該第三數(shù)據(jù)集的聚合記錄相關(guān)聯(lián)的字段子集中的值。13、如權(quán)利要求12所述的方法,其中產(chǎn)生該第三數(shù)據(jù)集包括對所產(chǎn)生的笛卡爾積和如下數(shù)據(jù)集執(zhí)行連接操作,該數(shù)據(jù)集的記錄包含表示所述多個第一關(guān)鍵字集中之一的第一值和表示多個第二關(guān)鍵字集中之一的第二值,所述多個第二關(guān)鍵字集中的每一個表示所述第二數(shù)據(jù)集的字段子集;其中該連接操作通過匹配關(guān)鍵字集來連接記錄。14、如權(quán)利要求13所述的方法,其中產(chǎn)生該第三數(shù)據(jù)集包括,對于至少一些已連接的記錄,以通配符值替換至少一個所述字段的值。15、如權(quán)利要求12所述的方法,其中產(chǎn)生該第二數(shù)據(jù)集包括,對于所產(chǎn)生的笛卡爾積的至少一些記錄,以通配符值替換至少一個所述字段的值。16、一種存儲在計算機可讀取介質(zhì)上的軟件,包括用于使計算機系統(tǒng)執(zhí)行以下操作的指令接受第一數(shù)據(jù)集(302),該第一數(shù)據(jù)集包括多個記錄,每個記錄保存多個字段中每一個字段的值;產(chǎn)生該第一數(shù)據(jù)集的記錄與多個第一關(guān)鍵字集(304)的笛卡爾積(306),每個關(guān)鍵字集表示該第一數(shù)據(jù)集的字段子集;從所產(chǎn)生的笛卡爾積產(chǎn)生第二數(shù)據(jù)集(310),該第二數(shù)據(jù)集包括一個或多個聚合記錄,每個聚合記錄對應(yīng)于來自該第一數(shù)據(jù)集的一個或多個記錄,上述被每個聚合記錄所對應(yīng)的來自該第一數(shù)據(jù)集的一個或多個記錄匹配于與該聚合記錄相關(guān)聯(lián)的字段子集中的值;以及從該第二數(shù)據(jù)集產(chǎn)生第三數(shù)據(jù)集(318),該第三數(shù)據(jù)集包括一個或多個聚合記錄,該第三數(shù)據(jù)集的每個聚合記錄對應(yīng)于該第一數(shù)據(jù)集的一個或多個聚合記錄,上述被該第三數(shù)據(jù)集的每個聚合記錄所對應(yīng)的該第一數(shù)據(jù)集的一個或多個聚合記錄匹配于與該第三數(shù)據(jù)集的聚合記錄相關(guān)聯(lián)的字段子集中的值。17、一種用于聚合數(shù)據(jù)的系統(tǒng),包括用于接受第一數(shù)據(jù)集的裝置(302),該第一數(shù)據(jù)集包括多個記錄,每個記錄保存多個字段中每一個字段的值;用于產(chǎn)生該第一數(shù)據(jù)集的記錄與多個第一關(guān)鍵字集(304)的笛卡爾積(306)的裝置,每個關(guān)鍵字集表示該第一數(shù)據(jù)集的字段子集;用于從所產(chǎn)生的笛卡爾積產(chǎn)生第二數(shù)據(jù)集(310)的裝置,該第二數(shù)據(jù)集包括一個或多個聚合記錄,每個聚合記錄對應(yīng)于來自該第一數(shù)據(jù)集的一個或多個記錄,上述被每個聚合記錄所對應(yīng)的來自該第一數(shù)據(jù)集的一個或多個記錄匹配于與該聚合記錄相關(guān)聯(lián)的字段子集中的值;以及用于從該第二數(shù)據(jù)集產(chǎn)生第三數(shù)據(jù)集(318)的裝置,該第三數(shù)據(jù)集包括一個或多個聚合記錄,該第三數(shù)據(jù)集的每個聚合記錄對應(yīng)于該第一數(shù)據(jù)集的一個或多個聚合記錄,上述被該第三數(shù)據(jù)集的每個聚合記錄所對應(yīng)的該第一數(shù)據(jù)集的一個或多個聚合記錄匹配于與該第三數(shù)據(jù)集的聚合記錄相關(guān)聯(lián)的字段子集中的值。全文摘要聚合數(shù)據(jù)包括接受第一數(shù)據(jù)集,該第一數(shù)據(jù)集包括多個記錄,每個記錄保存多個字段中每一個字段的值。從該第一數(shù)據(jù)集產(chǎn)生第二數(shù)據(jù)集。該第二數(shù)據(jù)集包括一個或多個聚合記錄,每個聚合記錄對應(yīng)于來自該第一數(shù)據(jù)集的一個或多個記錄,來自該第一數(shù)據(jù)集的一個或多個記錄匹配于字段子集中的值。從該第二數(shù)據(jù)集產(chǎn)生第三數(shù)據(jù)集。該第三數(shù)據(jù)集包括一個或多個聚合記錄,每個聚合記錄對應(yīng)于該第一數(shù)據(jù)集的一個或多個聚合記錄,該第一數(shù)據(jù)集的一個或多個聚合記錄匹配于字段子集中的值。與該第三數(shù)據(jù)集中的聚合記錄相關(guān)聯(lián)的聚合值表示對與來自該第一數(shù)據(jù)集的多個記錄相關(guān)聯(lián)的值執(zhí)行不可級聯(lián)操作的結(jié)果。文檔編號G06F17/30GK101208696SQ200680023382公開日2008年6月25日申請日期2006年6月22日優(yōu)先權(quán)日2005年6月27日發(fā)明者克雷格·W.·斯坦菲爾,馬歇爾·A.·伊斯曼申請人:起元軟件有限公司