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