欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

規(guī)定用于關(guān)系olap引擎的多維計(jì)算的制作方法

文檔序號(hào):6375061閱讀:206來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):規(guī)定用于關(guān)系olap引擎的多維計(jì)算的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及規(guī)定用于關(guān)系(relational)在線(xiàn)分析處理(on-line analyticalprocessing,OLAP)引擎的多維計(jì)算。
背景技術(shù)
在線(xiàn)分析處理(OLAP)日益變得普及。代替查閱成堆的打印在綠欄紙上的靜態(tài)報(bào)告,OLAP分析者可以交互地探查商業(yè)結(jié)果,動(dòng)態(tài)地調(diào)整數(shù)據(jù)視圖和詢(xún)問(wèn)問(wèn)題,并且?guī)缀跫磿r(shí)地得到答案。從靜態(tài)答案到固定時(shí)間表上的固定問(wèn)題的這一自由允許商業(yè)分析者更有效地工作并且實(shí)現(xiàn)商業(yè)操作上的改善。
Nigel Pendse引入了術(shù)語(yǔ)“FASMI”來(lái)表現(xiàn)OLAP系統(tǒng)的特征。FASMI特征是快速、分析、共享、多維和信息。關(guān)于進(jìn)一步的信息,參見(jiàn)N.Pendse,“What is OLAP?”,The OLAP Report,http//www.olapreport.com/fasmi.htm。
關(guān)于快速,與OLAP中“O”的精神保持一致,該系統(tǒng)需要非常迅速地提供結(jié)果,這通常是在僅僅幾秒內(nèi),并且很少超過(guò)20或30秒。這一性能級(jí)別對(duì)于允許分析者有效地工作而不會(huì)分心是關(guān)鍵的。
關(guān)于分析,考慮OLAP中的“A”,OLAP系統(tǒng)通常以最小量的編程來(lái)提供適于給定應(yīng)用的豐富分析功能。
關(guān)于共享,OLAP系統(tǒng)通常是共享資源。這意味著要求OLAP系統(tǒng)提供適當(dāng)?shù)陌踩院屯暾蕴匦浴W罱K,這可意味著對(duì)數(shù)據(jù)庫(kù)的不同單元提供不同的訪(fǎng)問(wèn)控制。
關(guān)于多維,多維性是OLAP系統(tǒng)的主要要求。OLAP產(chǎn)品在多維框架中呈現(xiàn)其數(shù)據(jù)。維是該系統(tǒng)的數(shù)據(jù)值的相關(guān)標(biāo)識(shí)符或?qū)傩?attribute)(例如,產(chǎn)品、市場(chǎng)、時(shí)間、渠道、場(chǎng)景或客戶(hù))的集合。屬于特定維的此集合的標(biāo)識(shí)符(例如,“The Lord of the Rings-DVD”,“SanJose,California”,“2002”,“Retail Rental”和“John Q.Public”)通常具有某種結(jié)構(gòu),例如分級(jí)結(jié)構(gòu)。有時(shí),對(duì)于這些標(biāo)識(shí)符,存在多于一個(gè)自然結(jié)構(gòu)。
多維特征意味著OLAP系統(tǒng)可以在各個(gè)維方向之間以及在一維的各個(gè)子集和結(jié)構(gòu)排列之間快速地切換。由于OLAP系統(tǒng)的多維性質(zhì),它們所實(shí)現(xiàn)的數(shù)據(jù)集合被稱(chēng)作立方體(cube)。關(guān)于信息,OLAP系統(tǒng)存儲(chǔ)并計(jì)算信息。OLAP系統(tǒng)的數(shù)據(jù)經(jīng)常來(lái)自一個(gè)或多個(gè)操作系統(tǒng)。對(duì)這些數(shù)據(jù)應(yīng)用分析模型,并且在該系統(tǒng)中存儲(chǔ)或者在查詢(xún)時(shí)生成結(jié)果。特定OLAP系統(tǒng)可管理的信息量是該系統(tǒng)的一個(gè)特征。
很多年來(lái),企業(yè)一直是使用星形或雪花模式(schema)在關(guān)系數(shù)據(jù)庫(kù)中存儲(chǔ)多維數(shù)據(jù)。隨著時(shí)間的過(guò)去,關(guān)系數(shù)據(jù)庫(kù)廠(chǎng)商對(duì)這些模式增加了增強(qiáng)查詢(xún)性能的優(yōu)化。在二十世紀(jì)九十年代期間,開(kāi)發(fā)了很多專(zhuān)用數(shù)據(jù)庫(kù),其可以處理增加的計(jì)算復(fù)雜度,并且其性能通常好于關(guān)系引擎的性能。
多維OLAP(MOLAP)是指這樣的OLAP系統(tǒng)系列,其中使用專(zhuān)用文件系統(tǒng)或索引來(lái)存儲(chǔ)立方體數(shù)據(jù)。Express Web Publisher,EssbaseTM,TM1和Pilot Suite是基于專(zhuān)用存儲(chǔ)和索引建立技術(shù)的產(chǎn)品的少數(shù)例子。Microsoft的OLAP出售品也包括MOLAP引擎。這些系統(tǒng)經(jīng)常是只讀系統(tǒng),其周期性地被裝載基本數(shù)據(jù),然后對(duì)派生結(jié)果進(jìn)行計(jì)算、存儲(chǔ)和索引建立。MOLAP系統(tǒng)的可伸縮性經(jīng)常受限于在其內(nèi)計(jì)算和存儲(chǔ)派生結(jié)果的批窗口的大小。為了改善可伸縮性,該系統(tǒng)經(jīng)常具有用于將一些派生結(jié)果的計(jì)算推遲到查詢(xún)時(shí)候的手段。
對(duì)于關(guān)系OLAP(ROLAP),很多年來(lái)都是使用星形模式作為用于在關(guān)系數(shù)據(jù)庫(kù)中表示多維數(shù)據(jù)的手段。很多商業(yè)軟件開(kāi)發(fā)公司,例如MicroStrategy,Brio,Business Objects,Metacube,Hyperion和Metaphor為關(guān)系星形模式開(kāi)發(fā)了批方式或交互式多維報(bào)告和探查接口。這些系統(tǒng)全都是在將超級(jí)聚合(aggregate)操作符添加到結(jié)構(gòu)化查詢(xún)語(yǔ)言(SQL)語(yǔ)言定義之前設(shè)計(jì)和實(shí)現(xiàn)的。
具體地說(shuō),直到幾年前為止,關(guān)系數(shù)據(jù)庫(kù)對(duì)于每個(gè)查詢(xún)僅允許在單個(gè)級(jí)別上進(jìn)行聚合計(jì)算。例如,一個(gè)帶GROUP BY子句的SELECT語(yǔ)句將用來(lái)在季度的級(jí)別上(即,針對(duì)季度的集合)檢索結(jié)果集,而另一個(gè)帶GROUP BY子句的SELECT語(yǔ)句將用來(lái)在月的級(jí)別上(即針對(duì)月的集合)檢索結(jié)果集。這迫使關(guān)系OLAP系統(tǒng)對(duì)數(shù)據(jù)庫(kù)運(yùn)行多個(gè)查詢(xún),以便在不同的級(jí)別上計(jì)算單元。
為了幫助OLAP類(lèi)型查詢(xún)的創(chuàng)建,并且提供更高級(jí)的優(yōu)化,可從國(guó)際商業(yè)機(jī)器公司獲得的DB2關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)實(shí)現(xiàn)了三個(gè)新的超級(jí)聚合操作符ROLLUP、CUBE和GROUPING SETS,其被添加到SQL標(biāo)準(zhǔn),以便允許單個(gè)查詢(xún)生成多個(gè)聚合。這些超級(jí)聚合操作符是對(duì)GROUP BY子句的擴(kuò)展,并且規(guī)定在多個(gè)級(jí)別上生成聚合。例如,一個(gè)SELECT語(yǔ)句可用來(lái)獲得多個(gè)級(jí)別(例如,季度和月)上的聚合計(jì)算的結(jié)果集。
注意,這些超級(jí)聚合操作符不僅僅是用于生成多個(gè)編組集合(grouping set)的簡(jiǎn)化表示。由于在單個(gè)語(yǔ)句中請(qǐng)求多個(gè)編組集合,因此DB2 RDBMS可以構(gòu)建執(zhí)行規(guī)劃,其中該執(zhí)行規(guī)劃以對(duì)于計(jì)算所需的每個(gè)輸入行僅被引用一次的方式生成所有編組集合。這可導(dǎo)致多個(gè)數(shù)量級(jí)的性能改善,尤其是當(dāng)輸入行集合未裝入(fit in)緩沖池(即高速緩存)時(shí),更是如此。
現(xiàn)有技術(shù)的系統(tǒng)被設(shè)計(jì)成通過(guò)發(fā)出多個(gè)查詢(xún)來(lái)產(chǎn)生表示具有不同粒度級(jí)別的結(jié)果的多維報(bào)告。為該多個(gè)查詢(xún)獲得多個(gè)結(jié)果集,并且合并這些結(jié)果集來(lái)形成單個(gè)報(bào)告。這樣的系統(tǒng)取決于對(duì)星形模式中表和列的角色的某種描述(元數(shù)據(jù)),其用于生成必要的SQL語(yǔ)句來(lái)檢索數(shù)據(jù)以便產(chǎn)生多維報(bào)告。確切的元數(shù)據(jù)隨著產(chǎn)品而不同。
多維在線(xiàn)分析處理(OLAP)系統(tǒng)(例如,出自諸如Hyperion,Cognos和Microsoft的公司)被設(shè)計(jì)成,當(dāng)被提供多維立方體每條邊的成員集時(shí),自然地返回多維結(jié)果集。該多維OLAP系統(tǒng)還被設(shè)計(jì)成預(yù)先計(jì)算任何查詢(xún)的一些或全部結(jié)果。
自從引入了關(guān)系數(shù)據(jù)庫(kù)以來(lái)一直是使用SQL進(jìn)行多維分析,但是關(guān)系OLAP系統(tǒng)不能自然地返回多維結(jié)果集,或者預(yù)先計(jì)算查詢(xún)的一些或全部結(jié)果。
因此,在本技術(shù)領(lǐng)域內(nèi)需要一種改進(jìn)的關(guān)系OLAP系統(tǒng)。

發(fā)明內(nèi)容
從而,在第一方面,本發(fā)明提供了一種用于規(guī)定多維計(jì)算的方法,包括接收從事實(shí)(facts)元數(shù)據(jù)對(duì)象和一個(gè)或多個(gè)維(dimension)元數(shù)據(jù)對(duì)象生成的立方體模型元數(shù)據(jù)對(duì)象的子集的選擇,其中事實(shí)元數(shù)據(jù)對(duì)象引用一個(gè)或多個(gè)度量(measure)元數(shù)據(jù)對(duì)象;以及使用立方體模型元數(shù)據(jù)對(duì)象和該一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象中的元數(shù)據(jù)生成用于檢索多維信息的語(yǔ)句,其中度量元數(shù)據(jù)對(duì)象的每一個(gè)規(guī)定一個(gè)或多個(gè)聚合。
優(yōu)選地,該語(yǔ)句是結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句。
優(yōu)選地,度量元數(shù)據(jù)對(duì)象的每一個(gè)規(guī)定一個(gè)或多個(gè)結(jié)構(gòu)化查詢(xún)語(yǔ)言表達(dá)式。
優(yōu)選地,結(jié)構(gòu)化查詢(xún)語(yǔ)言表達(dá)式的每一個(gè)包括用于構(gòu)建查詢(xún)語(yǔ)言表達(dá)式的模板。
優(yōu)選地,該模板使用從列、屬性和度量的列表中引用特定列、屬性或度量的標(biāo)記表示法(token notation)。
優(yōu)選地,結(jié)構(gòu)化查詢(xún)語(yǔ)言表達(dá)式的每一個(gè)包括列、屬性和度量的列表。
優(yōu)選地,基于每一個(gè)度量元數(shù)據(jù)對(duì)象中所規(guī)定的一個(gè)或多個(gè)聚合而生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句。
優(yōu)選地,聚合列表包括聚合函數(shù)和對(duì)應(yīng)的維集的列表。
優(yōu)選地,維集為對(duì)應(yīng)的聚合函數(shù)規(guī)定NULL,以便包括除了聚合列表內(nèi)的另一個(gè)聚合函數(shù)中所規(guī)定的維之外的所有其它可用維。
優(yōu)選地,度量元數(shù)據(jù)對(duì)象規(guī)定一個(gè)或多個(gè)結(jié)構(gòu)化查詢(xún)語(yǔ)言表達(dá)式,并且其中使用結(jié)構(gòu)化查詢(xún)語(yǔ)言表達(dá)式作為對(duì)聚合列表中的聚合的輸入。
優(yōu)選地,使用分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象中的元數(shù)據(jù)生成語(yǔ)句來(lái)構(gòu)建ROLLUP子句。
優(yōu)選地,度量元數(shù)據(jù)對(duì)象引用另一個(gè)度量元數(shù)據(jù)對(duì)象。
優(yōu)選地,生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句還包括生成用于總計(jì)(grandtotal)查詢(xún)的SELECT語(yǔ)句。
優(yōu)選地,生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句還包括生成用于立方體模型元數(shù)據(jù)對(duì)象的子集切片(slice)的SELECT語(yǔ)句。
優(yōu)選地,生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句還包括生成用于立方體模型元數(shù)據(jù)對(duì)象的子集的SELECT語(yǔ)句。
優(yōu)選地,該方法還包括分離在該一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象中定義的對(duì)稱(chēng)度量和非對(duì)稱(chēng)度量;為對(duì)稱(chēng)度量生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句;為非對(duì)稱(chēng)度量生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句;以及將對(duì)稱(chēng)和非對(duì)稱(chēng)度量的結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句組合成單個(gè)結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句。
優(yōu)選地,該組合包括使用連接(join)。
優(yōu)選地,該方法還包括確定度量是否與一個(gè)或多個(gè)度量兼容;并且如果度量與一個(gè)或多個(gè)度量不兼容,則確定是否可以改寫(xiě)這些度量的任一個(gè);并且如果可以改寫(xiě)這些度量的任一個(gè),則改寫(xiě)這些度量。
優(yōu)選地,該方法還包括基于立方體模型元數(shù)據(jù)對(duì)象的子集的選擇而生成立方體元數(shù)據(jù)對(duì)象,包括生成用于創(chuàng)建立方體視圖的結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句,其中從該一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象中的元數(shù)據(jù)生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句。
優(yōu)選地,該方法還包括在應(yīng)用程序的控制之下,使用立方體模型元數(shù)據(jù)對(duì)象和一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象,生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句來(lái)檢索多維信息。
在第二方面,本發(fā)明提供了一種用于規(guī)定多維計(jì)算的系統(tǒng),包括具有至少一個(gè)可編程組件以運(yùn)行至少一個(gè)用于以下操作的程序的計(jì)算機(jī)系統(tǒng)接收從事實(shí)元數(shù)據(jù)對(duì)象和一個(gè)或多個(gè)維元數(shù)據(jù)對(duì)象生成的立方體模型元數(shù)據(jù)對(duì)象的子集的選擇,其中事實(shí)元數(shù)據(jù)對(duì)象引用一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象;以及使用立方體模型元數(shù)據(jù)對(duì)象和該一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象中的元數(shù)據(jù)生成用于檢索多維信息的語(yǔ)句,其中度量元數(shù)據(jù)對(duì)象的每一個(gè)規(guī)定一個(gè)或多個(gè)聚合。
優(yōu)選地,該語(yǔ)句是結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句。
優(yōu)選地,度量元數(shù)據(jù)對(duì)象的每一個(gè)規(guī)定一個(gè)或多個(gè)結(jié)構(gòu)化查詢(xún)語(yǔ)言表達(dá)式。
優(yōu)選地,結(jié)構(gòu)化查詢(xún)語(yǔ)言表達(dá)式的每一個(gè)包括用于構(gòu)建查詢(xún)語(yǔ)言表達(dá)式的模板。
優(yōu)選地,該模板使用從列、屬性和度量的列表中引用特定列、屬性或度量的標(biāo)記表示法。
優(yōu)選地,結(jié)構(gòu)化查詢(xún)語(yǔ)言表達(dá)式的每一個(gè)包括列、屬性和度量的列表。
優(yōu)選地,基于每一個(gè)度量元數(shù)據(jù)對(duì)象中所規(guī)定的一個(gè)或多個(gè)聚合而生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句。
優(yōu)選地,聚合列表包括聚合函數(shù)和對(duì)應(yīng)的維集的列表。
優(yōu)選地,維集為對(duì)應(yīng)的聚合函數(shù)規(guī)定NULL,以便包括除了聚合列表內(nèi)的另一個(gè)聚合函數(shù)中所規(guī)定的維之外的所有其它可用維。
優(yōu)選地,度量元數(shù)據(jù)對(duì)象規(guī)定一個(gè)或多個(gè)結(jié)構(gòu)化查詢(xún)語(yǔ)言表達(dá)式,并且其中使用結(jié)構(gòu)化查詢(xún)語(yǔ)言表達(dá)式作為對(duì)聚合列表中的聚合的輸入。
優(yōu)選地,使用分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象中的元數(shù)據(jù)生成語(yǔ)句來(lái)構(gòu)建ROLLUP子句。
優(yōu)選地,度量元數(shù)據(jù)對(duì)象引用另一個(gè)度量元數(shù)據(jù)對(duì)象。
優(yōu)選地,該至少一個(gè)程序還包括生成用于總計(jì)查詢(xún)的SELECT語(yǔ)句。
優(yōu)選地,該至少一個(gè)程序還包括生成用于立方體模型元數(shù)據(jù)對(duì)象的子集的SELECT語(yǔ)句。
優(yōu)選地,該至少一個(gè)程序還包括生成用于立方體模型元數(shù)據(jù)對(duì)象的子集的SELECT語(yǔ)句。
優(yōu)選地,該至少一個(gè)程序還包括分離在該一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象中定義的對(duì)稱(chēng)度量和非對(duì)稱(chēng)度量;為對(duì)稱(chēng)度量生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句;為非對(duì)稱(chēng)度量生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句;以及將對(duì)稱(chēng)和非對(duì)稱(chēng)度量的結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句組合成單個(gè)結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句。
優(yōu)選地,該組合包括使用連接。
優(yōu)選地,該至少一個(gè)程序還包括確定度量是否與一個(gè)或多個(gè)度量兼容;并且如果度量與一個(gè)或多個(gè)度量不兼容,則確定是否可以改寫(xiě)這些度量的任一個(gè);并且如果可以改寫(xiě)這些度量的任一個(gè),則改寫(xiě)這些度量。
優(yōu)選地,該至少一個(gè)程序還包括基于立方體模型元數(shù)據(jù)對(duì)象的子集的選擇而生成立方體元數(shù)據(jù)對(duì)象,包括生成用于創(chuàng)建立方體視圖的結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句,其中從該一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象中的元數(shù)據(jù)生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句。
優(yōu)選地,該至少一個(gè)程序還包括在應(yīng)用程序的控制之下,使用立方體模型元數(shù)據(jù)對(duì)象和一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象,生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句來(lái)檢索多維信息。
在第三方面,本發(fā)明提供了一種計(jì)算機(jī)程序,其包括當(dāng)被裝載到計(jì)算機(jī)系統(tǒng)中并且在其上執(zhí)行時(shí)使該計(jì)算機(jī)系統(tǒng)執(zhí)行根據(jù)第一方面的方法的所有步驟的計(jì)算機(jī)程序代碼。
該計(jì)算機(jī)程序可被實(shí)施在包括用于規(guī)定多維計(jì)算的程序的產(chǎn)品中,其中該程序?qū)е聢?zhí)行多個(gè)操作,這些操作包括接收從事實(shí)元數(shù)據(jù)對(duì)象和一個(gè)或多個(gè)維元數(shù)據(jù)對(duì)象生成的立方體模型元數(shù)據(jù)對(duì)象的子集的選擇,其中事實(shí)元數(shù)據(jù)對(duì)象引用一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象;以及使用立方體模型元數(shù)據(jù)對(duì)象和該一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象中的元數(shù)據(jù)生成用于檢索多維信息的語(yǔ)句,其中度量元數(shù)據(jù)對(duì)象的每一個(gè)規(guī)定一個(gè)或多個(gè)聚合。
優(yōu)選地,該語(yǔ)句是結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句。
優(yōu)選地,度量元數(shù)據(jù)對(duì)象的每一個(gè)規(guī)定一個(gè)或多個(gè)結(jié)構(gòu)化查詢(xún)語(yǔ)言表達(dá)式。
優(yōu)選地,結(jié)構(gòu)化查詢(xún)語(yǔ)言表達(dá)式的每一個(gè)包括用于構(gòu)建查詢(xún)語(yǔ)言表達(dá)式的模板。
優(yōu)選地,該模板使用從列、屬性和度量的列表中引用特定列、屬性或度量的標(biāo)記表示法。
優(yōu)選地,結(jié)構(gòu)化查詢(xún)語(yǔ)言表達(dá)式的每一個(gè)包括列、屬性和度量的列表。
優(yōu)選地,基于每一個(gè)度量元數(shù)據(jù)對(duì)象中所規(guī)定的一個(gè)或多個(gè)聚合而生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句。
優(yōu)選地,聚合列表包括聚合函數(shù)和對(duì)應(yīng)的維集的列表。
優(yōu)選地,維集為對(duì)應(yīng)的聚合函數(shù)規(guī)定NULL,以便包括除了聚合列表內(nèi)的另一個(gè)聚合函數(shù)中所規(guī)定的維之外的所有其它可用維。
優(yōu)選地,度量元數(shù)據(jù)對(duì)象規(guī)定一個(gè)或多個(gè)結(jié)構(gòu)化查詢(xún)語(yǔ)言表達(dá)式,并且其中使用結(jié)構(gòu)化查詢(xún)語(yǔ)言表達(dá)式作為對(duì)聚合列表中的聚合的輸入。
優(yōu)選地,使用分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象中的元數(shù)據(jù)生成語(yǔ)句來(lái)構(gòu)建ROLLUP子句。
優(yōu)選地,度量元數(shù)據(jù)對(duì)象引用另一個(gè)度量元數(shù)據(jù)對(duì)象。
優(yōu)選地,用于生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句的操作還包括生成用于總計(jì)查詢(xún)的SELECT語(yǔ)句。
優(yōu)選地,用于生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句的操作還包括生成用于立方體模型元數(shù)據(jù)對(duì)象的子集切片的SELECT語(yǔ)句。
優(yōu)選地,用于生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句的操作還包括生成用于立方體模型元數(shù)據(jù)對(duì)象的子集的SELECT語(yǔ)句。
優(yōu)選地,這些操作還包括分離在該一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象中定義的對(duì)稱(chēng)度量和非對(duì)稱(chēng)度量;為對(duì)稱(chēng)度量生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句;為非對(duì)稱(chēng)度量生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句;以及將對(duì)稱(chēng)和非對(duì)稱(chēng)度量的結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句組合成單個(gè)結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句。
優(yōu)選地,該組合包括使用連接。
優(yōu)選地,這些操作還包括確定度量是否與一個(gè)或多個(gè)度量兼容;并且如果度量與一個(gè)或多個(gè)度量不兼容,則確定是否可以改寫(xiě)這些度量的任一個(gè);并且如果可以改寫(xiě)這些度量的任一個(gè),則改寫(xiě)這些度量。
優(yōu)選地,這些操作還包括基于立方體模型元數(shù)據(jù)對(duì)象的子集的選擇而生成立方體元數(shù)據(jù)對(duì)象,包括生成用于創(chuàng)建立方體視圖的結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句,其中從該一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象中的元數(shù)據(jù)生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句。
優(yōu)選地,這些操作還包括在應(yīng)用程序的控制之下,使用立方體模型元數(shù)據(jù)對(duì)象和一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象,生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句來(lái)檢索多維信息。
這樣,優(yōu)選地,提供了一種用于規(guī)定多維計(jì)算的方法、系統(tǒng)和程序。接收從事實(shí)元數(shù)據(jù)對(duì)象和一個(gè)或多個(gè)維元數(shù)據(jù)對(duì)象生成的立方體模型元數(shù)據(jù)對(duì)象的子集的選擇。事實(shí)元數(shù)據(jù)對(duì)象引用一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象。使用立方體模型元數(shù)據(jù)對(duì)象和度量元數(shù)據(jù)對(duì)象中的元數(shù)據(jù)生成用于檢索多維信息的語(yǔ)句,其中度量元數(shù)據(jù)對(duì)象的每一個(gè)規(guī)定一個(gè)或多個(gè)聚合。
本發(fā)明的所述實(shí)現(xiàn)提供了一種在關(guān)系OLAP系統(tǒng)中規(guī)定多維計(jì)算的方法、系統(tǒng)和程序。


現(xiàn)在參照附圖,其中相同的附圖標(biāo)記始終表示對(duì)應(yīng)的部件
圖1以方框圖的形式示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的計(jì)算環(huán)境。
圖2示出了根據(jù)本發(fā)明的特定實(shí)現(xiàn)事實(shí)元數(shù)據(jù)對(duì)象和度量元數(shù)據(jù)對(duì)象與關(guān)系數(shù)據(jù)相關(guān)。
圖3示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的樣例星形連接模式。
圖4示出了根據(jù)本發(fā)明的特定實(shí)現(xiàn)從關(guān)系表構(gòu)建維元數(shù)據(jù)對(duì)象。
圖5示出了根據(jù)本發(fā)明的特定實(shí)現(xiàn),元數(shù)據(jù)對(duì)象一起裝入(fit in)立方體模型,并且映射到關(guān)系表的關(guān)系星形模式。
圖6示出了根據(jù)本發(fā)明的特定實(shí)現(xiàn)將概念元數(shù)據(jù)對(duì)象分類(lèi)成三層。
圖7示出了根據(jù)本發(fā)明的特定實(shí)現(xiàn)創(chuàng)建與基本/關(guān)系層對(duì)應(yīng)的元數(shù)據(jù)對(duì)象。
圖8示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的來(lái)自基本/關(guān)系層的附加元數(shù)據(jù)對(duì)象。
圖9示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的基于星形連接模式而創(chuàng)建的多維層元數(shù)據(jù)對(duì)象。
圖10示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的用來(lái)定義立方體的元數(shù)據(jù)對(duì)象的實(shí)例。
圖11示出了根據(jù)本發(fā)明的特定實(shí)現(xiàn)創(chuàng)建在線(xiàn)分析處理(OLAP)層中每個(gè)元數(shù)據(jù)對(duì)象的一個(gè)實(shí)例。
圖12示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的平衡分級(jí)結(jié)構(gòu)的例子。
圖13示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的非平衡分級(jí)結(jié)構(gòu)的例子。
圖14示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的不規(guī)則(ragged)分級(jí)結(jié)構(gòu)。
圖15示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的網(wǎng)絡(luò)分級(jí)結(jié)構(gòu)。
圖16示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的一些元數(shù)據(jù)對(duì)象之間的一些關(guān)系。
圖17示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的由兩個(gè)維表和一個(gè)事實(shí)表組成的星形模式。
圖18A-18E示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的可以針對(duì)星形模式生成的元數(shù)據(jù)對(duì)象實(shí)例的可能集合以及元數(shù)據(jù)對(duì)象的一些屬性(property)。
圖19示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的表A,其表示基本數(shù)據(jù)。
圖20示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的表B,其表示具有聚合SUM(Market)和Min(Time)的度量。
圖21A-21D示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的表C,其表示具有聚合SUM(Product)(即產(chǎn)品之和)、AVG(Time)(即時(shí)間上的平均值)和Max(Market)(即市場(chǎng)的最大值)的度量。
圖22示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的兩個(gè)全加性度量元數(shù)據(jù)對(duì)象的創(chuàng)建。
圖23示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的半加性度量的創(chuàng)建。
圖24示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的具有聚合的復(fù)合度量的創(chuàng)建。
圖25示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的沒(méi)有聚合的復(fù)合度量的創(chuàng)建。
圖26示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的具有OLAP函數(shù)的度量的創(chuàng)建。
圖27示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的具有聚合和多個(gè)輸入的度量。
圖28示出了根據(jù)本發(fā)明一些實(shí)現(xiàn)的來(lái)自圖22-27的所有定義的度量元數(shù)據(jù)對(duì)象。
圖29A、29B、29C、29D和29E示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的用于為一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象生成SQL語(yǔ)句的邏輯。
圖30示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的表D,其列出一些度量并且表示哪些度量是對(duì)稱(chēng)的或者非對(duì)稱(chēng)的。
圖31示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的表E,其列出一些聚合函數(shù)并且表示哪些聚合函數(shù)是分布式的(distributive)而哪些是非分布式的(non-distributive)。
圖32示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的表F,其列出多個(gè)度量,以及如何可將聚合步驟分解成用于這些度量的多個(gè)聚合步驟。
圖33示出了計(jì)算機(jī)系統(tǒng)體系結(jié)構(gòu)的一種實(shí)現(xiàn)。
具體實(shí)施例方式
在下面描述中,參考形成本文一部分且示出了本發(fā)明的若干實(shí)現(xiàn)的附圖。應(yīng)當(dāng)理解,在不脫離本發(fā)明的范圍的情況下,可以采用其它實(shí)現(xiàn)并且可以進(jìn)行結(jié)構(gòu)和操作上的改變。
A.多維元數(shù)據(jù)介紹
在特定實(shí)現(xiàn)中,本發(fā)明提供了多維元數(shù)據(jù)對(duì)象以及用于使用多維元數(shù)據(jù)對(duì)象的技術(shù)。為便于引用起見(jiàn),本發(fā)明的優(yōu)選實(shí)施例在此將被稱(chēng)作“OLAP多維元數(shù)據(jù)系統(tǒng)100”,并且度量元數(shù)據(jù)對(duì)象將被稱(chēng)作“元數(shù)據(jù)對(duì)象”。
在特定實(shí)現(xiàn)中,OLAP多維元數(shù)據(jù)系統(tǒng)100在從國(guó)際商業(yè)機(jī)器公司獲得的DB2通用數(shù)據(jù)庫(kù)(UDB)RDBMS中實(shí)現(xiàn)。雖然本說(shuō)明書(shū)描述了使用IBM的DB2UDB RDBMS軟件,但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到本發(fā)明可使用其它RDBMS軟件,例如從Oracle、IBMInformix、Sybase獲得的RDBMS軟件。另外,本發(fā)明可以在使用各種操作系統(tǒng)例如IBM z/OS、IBM AIX、Microsoft Windows2000、Microsoft WindowsXP、Linux、Solaris、HP-UX的計(jì)算機(jī)上運(yùn)行。
圖1以方框圖的形式示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的計(jì)算環(huán)境。關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)110包括多維元數(shù)據(jù)軟件120(例如,存儲(chǔ)過(guò)程應(yīng)用編程接口(API))和用戶(hù)接口150。RDBMS 110訪(fǎng)問(wèn)多維元數(shù)據(jù)對(duì)象130和關(guān)系數(shù)據(jù)庫(kù)140。在特定實(shí)現(xiàn)中,多維元數(shù)據(jù)對(duì)象130和關(guān)系數(shù)據(jù)庫(kù)140中的數(shù)據(jù)可以被存儲(chǔ)在單個(gè)數(shù)據(jù)庫(kù)中。
OLAP多維元數(shù)據(jù)系統(tǒng)100包括多維元數(shù)據(jù)軟件120(例如,存儲(chǔ)過(guò)程應(yīng)用編程接口(API))、用戶(hù)接口150和多維元數(shù)據(jù)對(duì)象130。多維元數(shù)據(jù)軟件120用來(lái)創(chuàng)建、存儲(chǔ)和訪(fǎng)問(wèn)多維元數(shù)據(jù)對(duì)象130??蛇x地,可以向用戶(hù)或管理員提供用戶(hù)接口150,以向多維元數(shù)據(jù)軟件120發(fā)送命令。用戶(hù)可以通過(guò)經(jīng)由用戶(hù)接口150提交命令來(lái)創(chuàng)建、訪(fǎng)問(wèn)、修改或刪除多維元數(shù)據(jù)對(duì)象130。由多維元數(shù)據(jù)軟件120接收并處理這些命令。例如,多維元數(shù)據(jù)軟件120可以創(chuàng)建并存儲(chǔ)多維元數(shù)據(jù)對(duì)象130。
在特定實(shí)現(xiàn)中,OLAP多維元數(shù)據(jù)系統(tǒng)100為RDBMS 110如DB2通用數(shù)據(jù)庫(kù)(在此被稱(chēng)作DB2UDB)提供附加特性,其改善RDBMS 110執(zhí)行OLAP處理的能力。本發(fā)明的優(yōu)選實(shí)施例以流水線(xiàn)的方式進(jìn)行(streamline)OLAP解決方案的部署和管理,并且改善OLAP工具和應(yīng)用的性能。
具體地說(shuō),OLAP多維元數(shù)據(jù)系統(tǒng)100提供元數(shù)據(jù)對(duì)象。新的元數(shù)據(jù)對(duì)象被存儲(chǔ)在例如數(shù)據(jù)庫(kù)目錄(例如,DB2UDB目錄)中,其中該數(shù)據(jù)庫(kù)目錄描述現(xiàn)有關(guān)系數(shù)據(jù)的維模型和OLAP構(gòu)造。數(shù)據(jù)庫(kù)目錄提供OLAP應(yīng)用可以從其捕捉(capture)多維元數(shù)據(jù)的單個(gè)知識(shí)庫(kù)(repository)。在特定實(shí)現(xiàn)中,元數(shù)據(jù)對(duì)象可以駐留在不同于數(shù)據(jù)庫(kù)目錄的數(shù)據(jù)存儲(chǔ)庫(kù)上,或者可以駐留在多個(gè)數(shù)據(jù)存儲(chǔ)庫(kù)之間。通過(guò)中央知識(shí)庫(kù)中的信息,數(shù)據(jù)庫(kù)優(yōu)化器能夠使用特定于星形模式的技術(shù),以便優(yōu)化查詢(xún)的執(zhí)行。
通過(guò)元數(shù)據(jù)對(duì)象,本發(fā)明可以通過(guò)在匯總表中聚合數(shù)據(jù)并且創(chuàng)建索引來(lái)優(yōu)化OLAP查詢(xún)性能。OLAP多維元數(shù)據(jù)系統(tǒng)100還提供元數(shù)據(jù)編程接口。具體地說(shuō),OLAP多維元數(shù)據(jù)系統(tǒng)100為OLAP工具和應(yīng)用開(kāi)發(fā)者提供基于SQL和基于可擴(kuò)展標(biāo)記語(yǔ)言(XML)的應(yīng)用編程接口(API)。例如通過(guò)命令行接口(CLI)、開(kāi)放數(shù)據(jù)庫(kù)連接性(ODBC)、或Java數(shù)據(jù)庫(kù)連接性(JDBCTM)連接,或者例如通過(guò)使用DB2UDB的嵌入SQL,應(yīng)用和工具可使用單個(gè)存儲(chǔ)過(guò)程(即,多維元數(shù)據(jù)軟件120的例子)來(lái)創(chuàng)建、修改和檢索元數(shù)據(jù)對(duì)象。在特定實(shí)現(xiàn)中,多個(gè)存儲(chǔ)過(guò)程可以提供用于創(chuàng)建、修改和檢索元數(shù)據(jù)對(duì)象的功能性。
OLAP多維元數(shù)據(jù)系統(tǒng)100的元數(shù)據(jù)對(duì)象描述作為智能OLAP結(jié)構(gòu)的關(guān)系信息,但是由本發(fā)明提供的多維元數(shù)據(jù)對(duì)象不同于傳統(tǒng)的OLAP對(duì)象。本發(fā)明的元數(shù)據(jù)對(duì)象存儲(chǔ)元數(shù)據(jù),這意味著元數(shù)據(jù)對(duì)象存儲(chǔ)關(guān)于基本表中的數(shù)據(jù)的信息。元數(shù)據(jù)對(duì)象描述有關(guān)數(shù)據(jù)位于何處,并且還能描述基本數(shù)據(jù)內(nèi)的關(guān)系。例如,事實(shí)元數(shù)據(jù)對(duì)象是存儲(chǔ)關(guān)于相關(guān)度量、屬性和連接的信息的特定元數(shù)據(jù)對(duì)象,但是不包括特定地來(lái)自基本事實(shí)表的數(shù)據(jù)。
元數(shù)據(jù)提供從其理解數(shù)據(jù)的新角度。在沒(méi)有元數(shù)據(jù)對(duì)象的情況下,數(shù)據(jù)庫(kù)目錄僅僅知道表和列名稱(chēng),并且不能存儲(chǔ)關(guān)于這些表和列的意義或者這些表和列如何彼此相關(guān)的信息。通過(guò)元數(shù)據(jù)對(duì)象,可以存儲(chǔ)該信息。
每個(gè)元數(shù)據(jù)對(duì)象完成表示關(guān)系數(shù)據(jù)的意義是什么的總畫(huà)面(the bigpicture)的一個(gè)片斷。一些元數(shù)據(jù)對(duì)象擔(dān)當(dāng)通過(guò)對(duì)數(shù)據(jù)進(jìn)行聚合或者直接對(duì)應(yīng)于關(guān)系表中的特定列來(lái)直接訪(fǎng)問(wèn)關(guān)系數(shù)據(jù)的基礎(chǔ)。其它元數(shù)據(jù)對(duì)象描述基本元數(shù)據(jù)對(duì)象之間的關(guān)系,并且將這些基本元數(shù)據(jù)對(duì)象鏈接在一起。最終,所有元數(shù)據(jù)對(duì)象都可以通過(guò)彼此之間的關(guān)系而被一起編組到被稱(chēng)作立方體模型的元數(shù)據(jù)對(duì)象中。立方體模型表示關(guān)系表的特定編組和配置。立方體模型的目的是向給定應(yīng)用或工具描述OLAP結(jié)構(gòu)。立方體模型往往針對(duì)正被分析的數(shù)據(jù)描述不同用戶(hù)可能想要的所有立方體。立方體模型對(duì)維和事實(shí)進(jìn)行編組,并且為維提供多個(gè)分級(jí)結(jié)構(gòu)的靈活性。立方體模型傳達(dá)生成對(duì)星形模式數(shù)據(jù)庫(kù)的復(fù)雜查詢(xún)的查詢(xún)?cè)O(shè)計(jì)工具和應(yīng)用所需的結(jié)構(gòu)信息。
多維元數(shù)據(jù)對(duì)象模型被設(shè)計(jì)成描述在關(guān)系數(shù)據(jù)庫(kù)中用來(lái)表示多維數(shù)據(jù)的模式。組織這樣的數(shù)據(jù)的一種方法是通過(guò)使用星形或雪花模式(在雪花模式中,維表被規(guī)格化)。然而,該模型靈活得足以處理任何類(lèi)型的模式(例如,更加規(guī)格化的模式)。
A.1多維元數(shù)據(jù)概述
多維元數(shù)據(jù)使得能夠維護(hù)關(guān)于存儲(chǔ)在數(shù)據(jù)倉(cāng)庫(kù)中的OLAP結(jié)構(gòu)的信息。該信息先前不能在數(shù)據(jù)庫(kù)目錄中獲得,并且時(shí)常地不被數(shù)據(jù)倉(cāng)庫(kù)元數(shù)據(jù)知識(shí)庫(kù)記載(document)。多維元數(shù)據(jù)幫助數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)者表示表及其列之間的結(jié)構(gòu)關(guān)系。一旦該元數(shù)據(jù)存在于數(shù)據(jù)庫(kù)目錄中,則RDBMS110的其它組件例如數(shù)據(jù)庫(kù)優(yōu)化器(例如,DB2UDB優(yōu)化器)可以利用該結(jié)構(gòu)信息,并且更快地對(duì)由這些新的OLAP元數(shù)據(jù)對(duì)象描述的數(shù)據(jù)執(zhí)行查詢(xún)。元數(shù)據(jù)對(duì)象還能通過(guò)提供生成對(duì)數(shù)據(jù)倉(cāng)庫(kù)的多維查詢(xún)所需的基本結(jié)構(gòu)信息來(lái)協(xié)助商業(yè)智能工具。為了捕捉OLAP結(jié)構(gòu)信息,OLAP多維元數(shù)據(jù)系統(tǒng)100定義若干新的元數(shù)據(jù)對(duì)象。這些元數(shù)據(jù)對(duì)象能夠描述頻繁地用來(lái)對(duì)OLAP數(shù)據(jù)進(jìn)行建模的模式例如星形連接和雪花模式的重要方面。
將元數(shù)據(jù)對(duì)象添加到數(shù)據(jù)庫(kù)目錄提供了完全的功能性以及與其它數(shù)據(jù)庫(kù)組件的集成。新的元數(shù)據(jù)對(duì)象以與常規(guī)表相同的方式由模式擁有。元數(shù)據(jù)對(duì)象的另一個(gè)設(shè)計(jì)點(diǎn)是它們的大部分單獨(dú)地是有用的。也就是,元數(shù)據(jù)對(duì)象提供關(guān)于底層關(guān)系模式、元數(shù)據(jù)對(duì)象是否包括在更復(fù)雜的多維結(jié)構(gòu)中的信息。
立方體模型可以以多種方式來(lái)構(gòu)造,但是經(jīng)常被構(gòu)建成表示關(guān)系星形模式或雪花模式?;诤?jiǎn)單星形模式的立方體模型圍繞著中央事實(shí)元數(shù)據(jù)對(duì)象來(lái)構(gòu)建,其中該中央事實(shí)元數(shù)據(jù)對(duì)象描述來(lái)自事實(shí)表的聚合關(guān)系數(shù)據(jù)。度量元數(shù)據(jù)對(duì)象描述根據(jù)關(guān)系表中的多列的數(shù)據(jù)計(jì)算,并且被連接在一起以創(chuàng)建事實(shí)元數(shù)據(jù)對(duì)象。圖2示出了根據(jù)本發(fā)明的特定實(shí)現(xiàn)事實(shí)元數(shù)據(jù)對(duì)象210和度量元數(shù)據(jù)對(duì)象220、230與關(guān)系數(shù)據(jù)250相關(guān)。
在立方體模型中維元數(shù)據(jù)對(duì)象連接到事實(shí)元數(shù)據(jù)對(duì)象,就像是在星形模式中維表連接到事實(shí)表一樣。來(lái)自關(guān)系表的數(shù)據(jù)的列由連接在一起以構(gòu)成維元數(shù)據(jù)對(duì)象的屬性元數(shù)據(jù)對(duì)象表示。
圖3示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的樣例星形連接模式。星形連接模式具有連至中央Sales(銷(xiāo)售)事實(shí)表300的Time(時(shí)間)310、Product(產(chǎn)品)320和Region(地區(qū))330維表。為關(guān)系表中的相關(guān)維和事實(shí)表300、310、320、330列創(chuàng)建屬性。每個(gè)維表310、320、330具有維鍵屬性,如TimeID(時(shí)間ID)、ProductID(產(chǎn)品ID)或RegionID(地區(qū)ID)。地區(qū)維表330還具有City(城市)和City_Population(城市人口)屬性以及名稱(chēng)為“CityProp AR”的屬性關(guān)系。該屬性關(guān)系表達(dá)City屬性中的每一個(gè)值確定City_Population屬性中的對(duì)應(yīng)值的函數(shù)相關(guān)性。在事實(shí)表內(nèi),存在Sales(銷(xiāo)售)和Costs(成本)的兩個(gè)度量以及三個(gè)維鍵屬性TimeID、ProductID和RegionID。
三個(gè)連接通過(guò)對(duì)應(yīng)的維鍵屬性將每個(gè)維表310、320、330連接到中央事實(shí)表300。在本例中,維表310、320、330基于TimeID、ProductID或RegionID屬性與事實(shí)表300相連。圖4示出了根據(jù)本發(fā)明的特定實(shí)現(xiàn)從關(guān)系表450構(gòu)建維元數(shù)據(jù)對(duì)象406、410。例如,在元數(shù)據(jù)對(duì)象中,維元數(shù)據(jù)對(duì)象406基于屬性元數(shù)據(jù)對(duì)象408而構(gòu)建,并且屬性元數(shù)據(jù)對(duì)象408連接到關(guān)系表中的屬性452。維元數(shù)據(jù)對(duì)象410基于屬性元數(shù)據(jù)對(duì)象412、414和連接元數(shù)據(jù)對(duì)象416而構(gòu)建。這些屬性元數(shù)據(jù)對(duì)象連接到關(guān)系表450中的屬性454和456。
分級(jí)結(jié)構(gòu)存儲(chǔ)關(guān)于維內(nèi)的屬性如何彼此相關(guān)和被結(jié)構(gòu)化的信息。作為元數(shù)據(jù)對(duì)象,分級(jí)結(jié)構(gòu)提供對(duì)維進(jìn)行計(jì)算和導(dǎo)航的方法。每維具有對(duì)應(yīng)的分級(jí)結(jié)構(gòu),其具有針對(duì)每個(gè)成員屬性而定義的級(jí)別。例如,Region維具有RegionH分級(jí)結(jié)構(gòu),其具有針對(duì)State(州)和City(城市)屬性而定義的級(jí)別,并且還引用CityPop AR屬性關(guān)系。在立方體模型中,每維可具有多個(gè)分級(jí)結(jié)構(gòu),但是本示例星形模式對(duì)于每維只定義了一個(gè)分級(jí)結(jié)構(gòu)。
在星形模式中,所有維元數(shù)據(jù)對(duì)象以星形連接到中央事實(shí)元數(shù)據(jù)對(duì)象,以便創(chuàng)建立方體模型。連接元數(shù)據(jù)對(duì)象可以連接表以創(chuàng)建事實(shí)元數(shù)據(jù)對(duì)象或維元數(shù)據(jù)對(duì)象。元數(shù)據(jù)連接還能通過(guò)將事實(shí)元數(shù)據(jù)對(duì)象連接到維元數(shù)據(jù)對(duì)象而擔(dān)當(dāng)立方體模型內(nèi)的膠粘劑(glue)。維元數(shù)據(jù)對(duì)象具有關(guān)于所有其組成分級(jí)結(jié)構(gòu)、屬性、屬性關(guān)系和相關(guān)連接的信息。事實(shí)元數(shù)據(jù)對(duì)象具有關(guān)于所有其組成度量、屬性和相關(guān)連接的信息。
圖5示出了根據(jù)本發(fā)明的特定實(shí)現(xiàn)元數(shù)據(jù)對(duì)象500一起裝入立方體模型,并且映射到關(guān)系表550的關(guān)系星形模式。立方體模型元數(shù)據(jù)對(duì)象510基于維元數(shù)據(jù)對(duì)象512、514、連接元數(shù)據(jù)對(duì)象516、518以及事實(shí)元數(shù)據(jù)對(duì)象520而構(gòu)建。
立方體模型元數(shù)據(jù)對(duì)象是靈活的元數(shù)據(jù)對(duì)象,其組成部分可以被復(fù)用以針對(duì)特定的應(yīng)用創(chuàng)建更精確的立方體元數(shù)據(jù)對(duì)象。例如,立方體模型元數(shù)據(jù)對(duì)象可以具有37個(gè)事實(shí),但是從該立方體模型元數(shù)據(jù)對(duì)象生成的一個(gè)立方體元數(shù)據(jù)對(duì)象可以去除一個(gè)或多個(gè)維元數(shù)據(jù)對(duì)象、維元數(shù)據(jù)對(duì)象的一個(gè)或多個(gè)級(jí)別和/或一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象。
除了立方體模型元數(shù)據(jù)對(duì)象之外,還存在被稱(chēng)作立方體元數(shù)據(jù)對(duì)象的更特定元數(shù)據(jù)對(duì)象。立方體元數(shù)據(jù)對(duì)象是與OLAP概念立方體最接近的元數(shù)據(jù)對(duì)象。立方體元數(shù)據(jù)對(duì)象是立方體模型元數(shù)據(jù)對(duì)象的特定實(shí)例或子集。立方體元數(shù)據(jù)對(duì)象具有從父立方體模型元數(shù)據(jù)對(duì)象派生的特定一組類(lèi)似但更受限制的元數(shù)據(jù)對(duì)象,其包括立方體維、立方體分級(jí)結(jié)構(gòu)和立方體事實(shí)。例如,RegionCubeDim是作為從Region維派生的屬性的子集的立方體維。ReglonCubeDim引用State和City屬性,但是不引用City_Population屬性或CityPop AR屬性關(guān)系。RegionCubeDim引用其界定(scope)的Region維,并且所有結(jié)構(gòu)信息包括連接信息與立方體模型Region維滯留在一起。
在特定實(shí)現(xiàn)中,立方體元數(shù)據(jù)對(duì)象具有按照每個(gè)立方體維而定義的一個(gè)立方體分級(jí)結(jié)構(gòu),而維元數(shù)據(jù)對(duì)象可以具有針對(duì)立方體模型元數(shù)據(jù)對(duì)象而定義的多個(gè)分級(jí)結(jié)構(gòu)。立方體元數(shù)據(jù)對(duì)象與立方體模型元數(shù)據(jù)對(duì)象之間的這一結(jié)構(gòu)差異允許采用單個(gè)SQL語(yǔ)句來(lái)檢索立方體元數(shù)據(jù)對(duì)象。
圖6示出了根據(jù)本發(fā)明的特定實(shí)現(xiàn)將概念元數(shù)據(jù)對(duì)象分類(lèi)成三層。這些層是基本/關(guān)系層600、多維層610和OLAP層620?;?關(guān)系層600向其它元數(shù)據(jù)對(duì)象提供基本底層結(jié)構(gòu),并且封裝關(guān)系數(shù)據(jù)庫(kù)的概念。多維層610包括引用基本/關(guān)系層600中的元數(shù)據(jù)對(duì)象以提供關(guān)系數(shù)據(jù)庫(kù)之上的多維抽象的元數(shù)據(jù)對(duì)象。OLAP層620包含表示OLAP結(jié)構(gòu)的高級(jí)元數(shù)據(jù)對(duì)象。通過(guò)對(duì)來(lái)自其它層的元數(shù)據(jù)對(duì)象進(jìn)行編組,OLAP層620提供具有不同復(fù)雜度的OLAP立方體。
為了更好地理解本實(shí)施例,提供了一個(gè)例子。本例基于在數(shù)據(jù)集市(data mart)中使用的常見(jiàn)結(jié)構(gòu),即星形連接模式。對(duì)于星形連接模式,基于基本/關(guān)系層、多維層和OLAP層而創(chuàng)建元數(shù)據(jù)對(duì)象的實(shí)例。圖3示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的簡(jiǎn)單星形連接模式,其包括事實(shí)表300即Fact、以及三個(gè)維表Time 310、Product 320和Region 340。
現(xiàn)有的數(shù)據(jù)庫(kù)目錄典型地存儲(chǔ)表和列名稱(chēng)。關(guān)于這些表和列扮演什么角色以及這些表和列如何彼此相關(guān)的信息是不存在的。然而,采用OLAP多維元數(shù)據(jù)系統(tǒng)100,通過(guò)創(chuàng)建元數(shù)據(jù)對(duì)象來(lái)捕捉該信息。
圖7示出了根據(jù)本發(fā)明的特定實(shí)現(xiàn)創(chuàng)建與基本/關(guān)系層對(duì)應(yīng)的元數(shù)據(jù)對(duì)象。為所有維表列和在連接中使用的事實(shí)表列創(chuàng)建屬性。為事實(shí)表中的每個(gè)事實(shí)列創(chuàng)建一個(gè)度量元數(shù)據(jù)對(duì)象。由三個(gè)連接元數(shù)據(jù)對(duì)象捕捉在該星形連接模式中使用的連接。連接元數(shù)據(jù)對(duì)象規(guī)定如何連接事實(shí)表和維表的對(duì)應(yīng)屬性。創(chuàng)建Region維表中的一個(gè)屬性關(guān)系,以表示City和City_Population之間的關(guān)系,以及City屬性中的每個(gè)值確定City_Population屬性中的值的事實(shí)。
圖8示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的來(lái)自基本/關(guān)系層的附加元數(shù)據(jù)對(duì)象。創(chuàng)建三個(gè)分級(jí)結(jié)構(gòu)800、810和820,其表示相關(guān)屬性之間的關(guān)系。這些分級(jí)結(jié)構(gòu)800、810和820通過(guò)多維在多維層中使用,以便創(chuàng)建用來(lái)對(duì)維進(jìn)行計(jì)算和導(dǎo)航的裝置。在RegionH分級(jí)結(jié)構(gòu)820中,引用CityPop AR屬性關(guān)系。捕捉應(yīng)用于給定分級(jí)結(jié)構(gòu)的所有屬性關(guān)系。還對(duì)于每個(gè)分級(jí)結(jié)構(gòu)創(chuàng)建一個(gè)立方體分級(jí)結(jié)構(gòu)850、860、870,以便在立方體上下文中使用。立方體分級(jí)結(jié)構(gòu)850、860、870用來(lái)界定(scope)對(duì)于給定立方體感興趣的分級(jí)結(jié)構(gòu)的級(jí)別。立方體分級(jí)結(jié)構(gòu)850、860、870還捕捉應(yīng)用于其的屬性關(guān)系。
圖9示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的基于星形連接模式而創(chuàng)建的多維層元數(shù)據(jù)對(duì)象。為事實(shí)表Fact創(chuàng)建一個(gè)事實(shí)元數(shù)據(jù)對(duì)象900。SalesFacts元數(shù)據(jù)對(duì)象900包括可用的度量以及在事實(shí)到維連接中所需的屬性。為作為星形連接模式的一部分的每個(gè)維表創(chuàng)建一個(gè)維元數(shù)據(jù)對(duì)象910、920、930。維元數(shù)據(jù)對(duì)象對(duì)高度相關(guān)的屬性進(jìn)行編組,在本例中這些屬性來(lái)自于單個(gè)維表。維元數(shù)據(jù)對(duì)象還引用應(yīng)用于維屬性上的分級(jí)結(jié)構(gòu)。維可以具有多個(gè)所定義的分級(jí)結(jié)構(gòu),但是在本例中,對(duì)于每維,僅定義了一個(gè)分級(jí)結(jié)構(gòu)。
圖10示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的用來(lái)定義立方體的元數(shù)據(jù)對(duì)象1000、1010、1020的實(shí)例。立方體事實(shí)、立方體維和立方體分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象用來(lái)界定作為立方體的一部分的屬性和度量。這些元數(shù)據(jù)對(duì)象的每一個(gè)引用正被界定的元數(shù)據(jù)對(duì)象,并且所有結(jié)構(gòu)信息如連接保留在主(即父)元數(shù)據(jù)對(duì)象中。所有立方體特定對(duì)象保存對(duì)從其定義它們的主對(duì)象的引用。例如,立方體分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象具有對(duì)從其定義該立方體分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象的分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象的引用。在特定實(shí)現(xiàn)中,對(duì)于多個(gè)立方體維,分配一個(gè)分級(jí)結(jié)構(gòu)。在本例中,創(chuàng)建立方體事實(shí)SalesCubFacts 1000,并且它列出在該立方體中使用的度量(Sales)。
OLAP層由立方體模型和立方體元數(shù)據(jù)對(duì)象組成。立方體模型元數(shù)據(jù)對(duì)象描述對(duì)于給定應(yīng)用感興趣的事實(shí)和維。立方體模型元數(shù)據(jù)對(duì)象的維可具有多個(gè)所定義的分級(jí)結(jié)構(gòu),這使立方體模型元數(shù)據(jù)對(duì)象是非常靈活的結(jié)構(gòu)。立方體元數(shù)據(jù)對(duì)象從立方體模型元數(shù)據(jù)對(duì)象派生,從而所有立方體維、立方體分級(jí)結(jié)構(gòu)和立方體事實(shí)元數(shù)據(jù)對(duì)象從立方體模型元數(shù)據(jù)對(duì)象派生。立方體模型元數(shù)據(jù)對(duì)象和立方體元數(shù)據(jù)對(duì)象之間的差異在于在立方體元數(shù)據(jù)對(duì)象中每維定義一個(gè)分級(jí)結(jié)構(gòu),這使得有可能采用單個(gè)SQL語(yǔ)句檢索立方體元數(shù)據(jù)對(duì)象。
圖11示出了根據(jù)本發(fā)明的特定實(shí)現(xiàn)創(chuàng)建OLAP層中每個(gè)元數(shù)據(jù)對(duì)象的一個(gè)實(shí)例。在本例中創(chuàng)建的立方體模型捕捉從圖3的示例星形連接模式生成的一個(gè)可能的立方體模型1100?;诹⒎襟w維TimeCubeDim、ProductCubeDim、RegionCubeDim和立方體事實(shí)SalesCubeFacts來(lái)創(chuàng)建立方體1150。
A.2元數(shù)據(jù)對(duì)象屬性
每個(gè)元數(shù)據(jù)對(duì)象具有一組通用屬性,以及元數(shù)據(jù)對(duì)象特定屬性。通用屬性用來(lái)標(biāo)識(shí)元數(shù)據(jù)對(duì)象實(shí)例,描述元數(shù)據(jù)對(duì)象實(shí)例的使用或角色,并且跟蹤元數(shù)據(jù)對(duì)象實(shí)例變化。在特定實(shí)現(xiàn)中,以對(duì)其它數(shù)據(jù)庫(kù)元數(shù)據(jù)對(duì)象命名的相同方式,使用模式對(duì)元數(shù)據(jù)對(duì)象命名。當(dāng)不希望缺省用戶(hù)名模式時(shí),可能需要元數(shù)據(jù)對(duì)象的完全限定(qualification)。
表1描述了根據(jù)本發(fā)明特定實(shí)現(xiàn)的對(duì)于所有元數(shù)據(jù)對(duì)象都存在的通用屬性。
表1
除了由所有元數(shù)據(jù)對(duì)象共享的公共一組通用屬性之外,每個(gè)元數(shù)據(jù)對(duì)象具有一組元數(shù)據(jù)對(duì)象特定屬性。這些元數(shù)據(jù)對(duì)象特定屬性描述定義元數(shù)據(jù)對(duì)象的組成部分和特性(quality)。立方體模型是邏輯星形模式的表示。立方體模型是圍繞著中央事實(shí)元數(shù)據(jù)對(duì)象的相關(guān)維元數(shù)據(jù)對(duì)象的編組。每維可以具有多個(gè)分級(jí)結(jié)構(gòu),這提高了立方體模型的靈活性。關(guān)于如何連接由事實(shí)和維元數(shù)據(jù)對(duì)象使用的表的結(jié)構(gòu)信息被存儲(chǔ)在立方體模型中。另外,存儲(chǔ)在立方體模型中的是檢索OLAP數(shù)據(jù)的足夠信息。理解立方體模型并且可處理特定維的多個(gè)分級(jí)結(jié)構(gòu)的其它報(bào)告和OLAP工具可以受益于立方體模型的使用。
立方體模型定義復(fù)雜的一組關(guān)系,并且可用來(lái)選擇性地向應(yīng)用暴露相關(guān)事實(shí)和維。將維連接到中央事實(shí)元數(shù)據(jù)對(duì)象的每個(gè)連接元數(shù)據(jù)對(duì)象作為集合與對(duì)應(yīng)的維存儲(chǔ)在一起。立方體模型組成部分的子集可以由用于不同分析目的很多立方體使用。
可以創(chuàng)建沒(méi)有事實(shí)元數(shù)據(jù)對(duì)象或任何維的空立方體模型。然而,在創(chuàng)建對(duì)應(yīng)立方體之前完成立方體模型。OLAP多維元數(shù)據(jù)系統(tǒng)100通過(guò)確保立方體模型包括事實(shí)元數(shù)據(jù)對(duì)象、至少一維和現(xiàn)有事實(shí)與維之間的連接,以及所有屬性引用合法的表來(lái)驗(yàn)證立方體模型。認(rèn)為立方體模型完整不要求分級(jí)結(jié)構(gòu),但是,為了能夠從立方體模型定義立方體,定義每維的至少一個(gè)分級(jí)結(jié)構(gòu)。
每個(gè)元數(shù)據(jù)對(duì)象具有一組元數(shù)據(jù)對(duì)象特定屬性,其描述定義元數(shù)據(jù)對(duì)象的組成部分和特性。根據(jù)本發(fā)明的特定實(shí)現(xiàn),表2描述了立方體模型的元數(shù)據(jù)對(duì)象特定屬性。
表2
事實(shí)元數(shù)據(jù)對(duì)象編組對(duì)于給定應(yīng)用感興趣的相關(guān)度量。多個(gè)關(guān)系事實(shí)表可以通過(guò)特定屬性來(lái)連接,以便映射附加的相關(guān)度量。事實(shí)元數(shù)據(jù)對(duì)象存儲(chǔ)關(guān)于在事實(shí)到維連接中使用的屬性、以及用來(lái)跨越多個(gè)數(shù)據(jù)庫(kù)表映射附加度量的屬性和連接的信息。因此,除了一組度量之外,事實(shí)元數(shù)據(jù)對(duì)象存儲(chǔ)一組屬性和一組連接。事實(shí)元數(shù)據(jù)對(duì)象在立方體模型中用作星形模式的中心。
事實(shí)元數(shù)據(jù)對(duì)象在星形模式中扮演事實(shí)表的角色。如同事實(shí)表所做的一樣,事實(shí)元數(shù)據(jù)對(duì)象收集在數(shù)據(jù)庫(kù)目錄中通過(guò)度量表示的測(cè)量實(shí)體。它們不需要來(lái)自相同的表,從而允許設(shè)計(jì)者根據(jù)任何OLAP應(yīng)用的要求來(lái)對(duì)度量進(jìn)行編組。
根據(jù)本發(fā)明的特定實(shí)現(xiàn),在表3中描述了事實(shí)元數(shù)據(jù)對(duì)象的元數(shù)據(jù)對(duì)象特定屬性。
表3
維元數(shù)據(jù)對(duì)象扮演星形模式中的維表的角色。維對(duì)相關(guān)屬性進(jìn)行編組,其中這些相關(guān)屬性一起描述一個(gè)或多個(gè)度量的某方面。因此,維元數(shù)據(jù)對(duì)象提供對(duì)一起描述度量的一方面的一組相關(guān)屬性進(jìn)行分類(lèi)的方法。在立方體模型中使用維來(lái)根據(jù)諸如Region、Prouduct或Time的邏輯類(lèi)別來(lái)組織事實(shí)元數(shù)據(jù)對(duì)象中的數(shù)據(jù)。在維元數(shù)據(jù)對(duì)象特定屬性中定義相關(guān)屬性和將這些屬性編組在一起所需的連接。
維引用一個(gè)或多個(gè)分級(jí)結(jié)構(gòu)。分級(jí)結(jié)構(gòu)描述維屬性的關(guān)系和結(jié)構(gòu),并且可用來(lái)驅(qū)動(dòng)維的導(dǎo)航和計(jì)算。
維還具有描述維是否是面向時(shí)間的類(lèi)型。例如,被稱(chēng)作Time的維可能包含諸如Year(年)、Quarter(季度)和Month(月)的屬性,并且它將是時(shí)間類(lèi)型。被稱(chēng)作Region的另一維可能包含諸如Country(國(guó)家)、 State(州)、City(城市)和Population(人口)的屬性,并且它將是常規(guī)類(lèi)型。類(lèi)型信息可以由應(yīng)用用來(lái)智能且適當(dāng)?shù)貓?zhí)行時(shí)間相關(guān)函數(shù)。
根據(jù)本發(fā)明的特定實(shí)現(xiàn),在下表4中描述了維元數(shù)據(jù)對(duì)象的元數(shù)據(jù)對(duì)象特定屬性。
表4
分級(jí)結(jié)構(gòu)定義立方體模型的給定維內(nèi)的一個(gè)或多個(gè)屬性的集合之間的關(guān)系。定義這些關(guān)系提供了遍歷(traverse)給定維的導(dǎo)航和計(jì)算裝置。可以為立方體模型的維定義多個(gè)分級(jí)結(jié)構(gòu)。分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象還引用一組將該分級(jí)結(jié)構(gòu)中的屬性鏈接到其它相關(guān)屬性的屬性關(guān)系。通過(guò)屬性關(guān)系直接相關(guān)的屬性可以作為分級(jí)結(jié)構(gòu)的一部分來(lái)查詢(xún)。例如,Region維的分級(jí)結(jié)構(gòu)可具有City屬性,并且屬性關(guān)系可以將City鏈接到City_Population屬性。該分級(jí)結(jié)構(gòu)可以在包括City的查詢(xún)中包括City_Population信息。
分級(jí)結(jié)構(gòu)描述了屬性之間的父子關(guān)系。該信息由維參考(refer to),以表示可以如何瀏覽維成員、以及如何聚合該維中的數(shù)據(jù)。
分級(jí)結(jié)構(gòu)類(lèi)型描述了該分級(jí)結(jié)構(gòu)內(nèi)的屬性之間的關(guān)系。支持以下四種分級(jí)結(jié)構(gòu)類(lèi)型平衡、非平衡、不規(guī)則(ragged)和網(wǎng)絡(luò)。
圖12示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的平衡分級(jí)結(jié)構(gòu)1200的例子。平衡分級(jí)結(jié)構(gòu)是這樣一種分級(jí)結(jié)構(gòu),其有意義級(jí)別和分支具有一致的深度。每個(gè)屬性的邏輯父位于直接在該屬性之上的級(jí)別。平衡分級(jí)結(jié)構(gòu)1200表示每個(gè)級(jí)別例如年1210、季度1220和月1230的意義和深度是一致的時(shí)間。
圖13示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的非平衡分級(jí)結(jié)構(gòu)1300的例子。非平衡分級(jí)結(jié)構(gòu)是這樣一種分級(jí)結(jié)構(gòu),其級(jí)別具有一致的父子關(guān)系,但是對(duì)于特定級(jí)別中的所有成員具有不一致的語(yǔ)義意義。另外,分級(jí)結(jié)構(gòu)分支具有不一致的深度。
非平衡分級(jí)結(jié)構(gòu)可以表示組織圖。例如,非平衡分級(jí)結(jié)構(gòu)1300在該分級(jí)結(jié)構(gòu)的最高級(jí)別表示CEO,并且在其下可以分支出至少兩種人,包括運(yùn)營(yíng)總裁(chief operating officer)和執(zhí)行秘書(shū)。運(yùn)營(yíng)總裁也分支出更多的人,但是執(zhí)行秘書(shū)不這樣。在CEO與向CEO匯報(bào)的所有人之間都存在一致的父子關(guān)系。然而,直接在CEO之下的級(jí)別的語(yǔ)義意義由于該級(jí)別中不同的雇員類(lèi)型而是不一致的。
不規(guī)則分級(jí)結(jié)構(gòu)是這樣一種分級(jí)結(jié)構(gòu),其中每個(gè)級(jí)別具有一致的意義,但是這些分支具有不一致的深度,因?yàn)榉种Ъ?jí)別中的至少一個(gè)成員屬性未被填充。不規(guī)則分級(jí)結(jié)構(gòu)可以表示地理分級(jí)結(jié)構(gòu),其中一致地使用每個(gè)級(jí)別的意義如城市或國(guó)家,但是該分級(jí)結(jié)構(gòu)的深度不同。圖14示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的不規(guī)則分級(jí)結(jié)構(gòu)1400。不規(guī)則分級(jí)結(jié)構(gòu)1400表示定義有洲、國(guó)家、省/州和城市級(jí)別的地理分級(jí)結(jié)構(gòu)。一個(gè)分支具有作為洲的北美、作為國(guó)家的美國(guó)、作為省/州的加利福尼亞、以及作為城市的舊金山。然而,當(dāng)一個(gè)成員沒(méi)有在所有級(jí)別上都具有條目時(shí),分級(jí)結(jié)構(gòu)1400變得不規(guī)則。例如,另一個(gè)分支具有作為洲的歐洲、作為國(guó)家的希臘以及作為城市的雅典,但是對(duì)于省/州級(jí)別沒(méi)有條目,因?yàn)檫@一級(jí)別不適用于希臘。在本例中,希臘和美國(guó)分支降至不同的深度,從而創(chuàng)建了不規(guī)則分級(jí)結(jié)構(gòu)1400。
網(wǎng)絡(luò)分級(jí)結(jié)構(gòu)是這樣一種分級(jí)結(jié)構(gòu),其中不規(guī)定級(jí)別的次序(order),但是級(jí)別確實(shí)具有語(yǔ)義意義。圖15示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的網(wǎng)絡(luò)分級(jí)結(jié)構(gòu)1500,其描述諸如Color(顏色)、Size(尺寸)和PackageType(包裝類(lèi)型)的產(chǎn)品屬性。由于這些屬性級(jí)別不具有內(nèi)在的父子關(guān)系,因此級(jí)別的次序可以改變。裝飾品公司可能具有諸如這樣的成員條目,即針對(duì)顏色的白色、針對(duì)尺寸的小以及針對(duì)包裝類(lèi)型的熱縮塑料包。第二成員條目可能具有針對(duì)顏色的紅色、針對(duì)尺寸的大以及針對(duì)包裝類(lèi)型的盒裝。
分級(jí)結(jié)構(gòu)(平衡、非平衡、不規(guī)則或網(wǎng)絡(luò))還規(guī)定用于該分級(jí)結(jié)構(gòu)的部署機(jī)制。部署機(jī)制定義如何解釋分級(jí)結(jié)構(gòu)的屬性。支持下面兩個(gè)部署機(jī)制標(biāo)準(zhǔn)和遞歸。
標(biāo)準(zhǔn)部署機(jī)制使用分級(jí)結(jié)構(gòu)的級(jí)別定義,其中該分級(jí)結(jié)構(gòu)中的每個(gè)屬性定義一個(gè)級(jí)別。例如,Time維的平衡分級(jí)結(jié)構(gòu)將由包括年、季度和月的每個(gè)所定義級(jí)別組織。標(biāo)準(zhǔn)部署可以用于所有四個(gè)分級(jí)結(jié)構(gòu)類(lèi)型。表5示出了根據(jù)本發(fā)明的特定實(shí)現(xiàn)使用標(biāo)準(zhǔn)部署來(lái)組織Time維的一些平衡分級(jí)結(jié)構(gòu)屬性。
表5
遞歸部署機(jī)制使用分級(jí)結(jié)構(gòu)的屬性之間的內(nèi)在父子關(guān)系。使用遞歸部署的非平衡分級(jí)結(jié)構(gòu)以父子屬性對(duì)表示。例如,表6示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的非平衡分級(jí)結(jié)構(gòu)的屬性對(duì),其描述圖13所示的組織圖。這些父子屬性對(duì)包括執(zhí)行總裁和執(zhí)行秘書(shū)、執(zhí)行總裁和運(yùn)營(yíng)總裁、運(yùn)營(yíng)總裁和通信總監(jiān)(director of communications)、通信總監(jiān)和通信專(zhuān)家。遞歸部署可以用于非平衡分級(jí)結(jié)構(gòu)。
表6
根據(jù)本發(fā)明的特定實(shí)現(xiàn),在下表7中描述了分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象的元數(shù)據(jù)對(duì)象特定屬性。
表7
度量元數(shù)據(jù)對(duì)象定義測(cè)量實(shí)體,并且用于事實(shí)元數(shù)據(jù)對(duì)象中。度量在維的上下文內(nèi)變得有意義。例如,300的總收益本身沒(méi)有意義。當(dāng)將收益度量置于諸如Region的維的上下文中,該度量變得有意義。例如,佛蒙特州的收益是300。度量元數(shù)據(jù)對(duì)象的常見(jiàn)例子是Revenue(收益)、Cost(成本)和Profit(利潤(rùn))。
度量對(duì)象使測(cè)量實(shí)體的存在變得顯式。度量由一個(gè)或多個(gè)SQL表達(dá)式定義,其中該SQL表達(dá)式可以簡(jiǎn)單到映射至一個(gè)表列,或者可以涉及多個(gè)列或者其它度量或?qū)傩?。?duì)于每個(gè)度量,定義聚合的列表以便在立方體模型或立方體的上下文中計(jì)算。該列表中的每個(gè)聚合規(guī)定諸如SUM、COUNT、MIN、MAX的聚合函數(shù)和應(yīng)用聚合函數(shù)的維列表。聚合中的空維集表示要使用在該度量中未被顯式引用的所有其余維。當(dāng)所使用的第一聚合函數(shù)需要多于一個(gè)輸入例如CORRELATION時(shí),度量將具有多于一個(gè)SQL表達(dá)式模板。當(dāng)度量具有單個(gè)SQL表達(dá)式模板時(shí),度量可具有空的聚合列表,并且它僅參考其它度量。在這種情況下,發(fā)生被引用度量的聚合。度量和屬性共享相同的名稱(chēng)空間,這意味著當(dāng)由模式完全限定時(shí)名稱(chēng)在度量和屬性之間必須是唯一的。度量的常見(jiàn)例子是Sales(銷(xiāo)售額)、Costs(成本)、Profit(利潤(rùn))等。
度量由SQL表達(dá)式的聚合來(lái)定義。表、列、屬性和度量被映射到模板,以構(gòu)建SQL表達(dá)式(即“SQL表達(dá)式模板”)。然后,使用所得到的SQL表達(dá)式作為對(duì)該度量的第一聚合函數(shù)的輸入。如果度量具有多于一個(gè)聚合,則按照所列次序執(zhí)行聚合函數(shù),其中每個(gè)后繼聚合以前一聚合的結(jié)果作為輸入。如果度量元數(shù)據(jù)對(duì)象的SQL表達(dá)式僅引用其它度量,則由于被引用的度量描述任何所需聚合而省略聚合函數(shù)。
度量的SQL表達(dá)式通過(guò)兩個(gè)屬性的組合來(lái)創(chuàng)建SQL表達(dá)式模板以及列、屬性和度量的列表。SQL表達(dá)式模板使用標(biāo)記表示法,其中{$$n}是標(biāo)記,并且n從列表中引用特定列、屬性或度量。列、屬性和度量的列表是有序的,并且列、屬性或度量的列表中的位置對(duì)應(yīng)于標(biāo)記“n”值。
SQL表達(dá)式用作對(duì)第一聚合的輸入。每個(gè)聚合規(guī)定應(yīng)用于對(duì)應(yīng)維集的函數(shù)。聚合函數(shù)可以是由底層數(shù)據(jù)庫(kù)支持的任何聚合函數(shù),例如包括SUM、COUNT、MIN、MAX和CORRELATION。在特定實(shí)現(xiàn)中,每維由度量元數(shù)據(jù)對(duì)象聚合一次。如果維集為空,則將聚合函數(shù)應(yīng)用于未被該列表中的另一個(gè)聚合特定使用的立方體或立方體模型中的所有維。在特定實(shí)現(xiàn)中,聚合函數(shù)是由RDBMS 110支持的用戶(hù)定義的聚合函數(shù)。
簡(jiǎn)單度量的例子是Revenue(收益)。可以為具有三維Product(產(chǎn)品)、Market(市場(chǎng))和Time(時(shí)間)的立方體模型創(chuàng)建Revenue度量。Revenue具有SQL表達(dá)式模板(template=“{$$1}”),其表示到在列、屬性和度量的單項(xiàng)目列表中規(guī)定的列的簡(jiǎn)單映射,其中l(wèi)ist=“ColumnFact.Rev”。聚合列表是(SUM,<NULL>),其中SUM是聚合函數(shù),并且<NULL>是空維集。該SQL表達(dá)式用作對(duì)SUM聚合函數(shù)的輸入,從而產(chǎn)生這樣的SQLSUM(Fact.Rev)。
更復(fù)雜的度量Profit(利潤(rùn))可能具有SQL表達(dá)式模板(template=“{$$1}-{$$2}”),其中屬性、列和度量的列表是list=“MeasureRevenue,Column Fact.Cost”。通過(guò)以正確的引用替換標(biāo)記,SQL表達(dá)式變成“Revenue-Fact.Cost”。通過(guò)將收益度量引用擴(kuò)展成其列引用,SQL表達(dá)式變成“Fact.Rev-Fact.Cost”。Profit度量的聚合列表是(SUM,<NULL>)。使用利潤(rùn)SQL表達(dá)式作為SUM聚合函數(shù)的輸入,Profit度量的SQL是SUM(Fact.Rev-Fact.Cost)。
如果度量具有需要兩個(gè)或更多參數(shù)的聚合函數(shù)例如CORRELATION,則該度量將具有這一數(shù)目的該函數(shù)要求其作為輸入的SQL表達(dá)式。也就是,參數(shù)的數(shù)目匹配SQL表達(dá)式的數(shù)目。例如,如果CORRELATION需要兩個(gè)參數(shù),則將存在兩個(gè)SQL表達(dá)式。
度量還具有基于SQL數(shù)據(jù)類(lèi)型的數(shù)據(jù)類(lèi)型。OLAP多維元數(shù)據(jù)系統(tǒng)100自動(dòng)地確定度量的數(shù)據(jù)類(lèi)型。另外,度量和屬性共享相同的名稱(chēng)空間。因此,當(dāng)由模式完全限定時(shí),每個(gè)名稱(chēng)在度量和屬性之間是唯一的。根據(jù)本發(fā)明的特定實(shí)現(xiàn),在下表8中描述了度量元數(shù)據(jù)對(duì)象的元數(shù)據(jù)對(duì)象特定屬性。
表8
屬性表示數(shù)據(jù)庫(kù)表列的基本抽象。屬性由SQL表達(dá)式定義,其中該SQL表達(dá)式可以是到一個(gè)表列的簡(jiǎn)單映射,可以涉及多個(gè)列和其它屬性,并且可以涉及底層數(shù)據(jù)庫(kù)的所有功能性,例如用戶(hù)定義的函數(shù)。在特定實(shí)現(xiàn)中,當(dāng)在定義的SQL表達(dá)式中使用其它屬性時(shí),其它屬性不能形成屬性引用環(huán)。例如,如果屬性A引用屬性B,則屬性B不能引用屬性A。
屬性的SQL表達(dá)式定義通過(guò)組合兩個(gè)屬性SQL表達(dá)式模板以及列和屬性的列表來(lái)創(chuàng)建。SQL表達(dá)式模板使用標(biāo)記表示法,其中{$$n}是標(biāo)記,其中n從該列表中引用特定列或?qū)傩?。列和屬性的列表是有序的,并且列或?qū)傩缘牧斜碇械奈恢脤?duì)應(yīng)于標(biāo)記“n”值。
例如,SQL表達(dá)式模板(template=“{$$1}||″||{$$2}”)可以與對(duì)應(yīng)的列表例如list=“Column CUSTOMER.FIRSTNAME,AttributeLastName”一起使用以串接客戶(hù)的名和姓,其中在名和姓之間留有一個(gè)空格。通過(guò)以正確的列表引用替換SQL表達(dá)式模板標(biāo)記,SQL表達(dá)式是“Customer.FirstName||″||LastName”。屬性引用進(jìn)一步被擴(kuò)展為列引用以形成SQL表達(dá)式“Customer.FirstName||″||Customer.LastName”。
在數(shù)據(jù)倉(cāng)庫(kù)或數(shù)據(jù)集市的設(shè)計(jì)中,屬性可以擔(dān)當(dāng)多個(gè)角色。屬性可擔(dān)當(dāng)?shù)慕巧羌?jí)別、描述、維屬性、維鍵或鍵。
級(jí)別屬性用于分級(jí)結(jié)構(gòu)中。常見(jiàn)的級(jí)別屬性的例子是年和季度、州和城市。描述屬性用于描述類(lèi)型的屬性關(guān)系中,并且將附加的描述信息關(guān)聯(lián)到另一個(gè)屬性。例如,被稱(chēng)作Product(產(chǎn)品)的表可能具有產(chǎn)品代碼的屬性以及文本描述的描述屬性。維屬性用于維類(lèi)型的屬性關(guān)系中,并且定義另一個(gè)屬性的特定特征和特性。常見(jiàn)的維屬性的例子是Population(人口)、Size(尺寸)和Weight(重量)。維鍵屬性用來(lái)連接事實(shí)和維元數(shù)據(jù)對(duì)象,并且表示維表中的主鍵,或者要在事實(shí)表中使用的來(lái)自維表的外鍵。鍵屬性用來(lái)連接事實(shí)或維元數(shù)據(jù)對(duì)象內(nèi)的表。鍵屬性經(jīng)常用于雪花模式中。
屬性和度量共享相同的名稱(chēng)空間。因此,當(dāng)由模式完全限定時(shí),每個(gè)名稱(chēng)在屬性和度量之間是唯一的。屬性和度量元數(shù)據(jù)對(duì)象是關(guān)系數(shù)據(jù)庫(kù)列的抽象。然而,它們由可包括多列的SQL表達(dá)式定義。度量比屬性更特殊化(specialized)-它們包括用來(lái)從較低級(jí)別數(shù)據(jù)計(jì)算較高級(jí)別匯總的聚合函數(shù)(列函數(shù))。
表9描述了根據(jù)本發(fā)明特定實(shí)現(xiàn)的定義屬性元數(shù)據(jù)對(duì)象的元數(shù)據(jù)對(duì)象特定屬性。
表9
屬性關(guān)系一般地描述屬性的關(guān)系。這些關(guān)系由左和右屬性、類(lèi)型、基數(shù)(cardinality)以及關(guān)系是否確定函數(shù)相關(guān)性來(lái)描述。該類(lèi)型定義右屬性相對(duì)于左屬性是什么角色。例如,ProductName(產(chǎn)品名稱(chēng))右屬性描述ProductCode(產(chǎn)品代碼)左屬性。ProductName與ProductCode之間的關(guān)系類(lèi)型是DESCRIPTION(描述)?;鶖?shù)描述左和右屬性的實(shí)例如何相關(guān),并且基于基數(shù)來(lái)解釋它。在1∶1基數(shù)中,對(duì)于每個(gè)右屬性實(shí)例,存在最多一個(gè)左屬性實(shí)例。在1∶N基數(shù)中,對(duì)于每個(gè)右屬性實(shí)例,存在最多一個(gè)左屬性實(shí)例,而對(duì)于每個(gè)左屬性實(shí)例,存在任意數(shù)目的右屬性實(shí)例。在N∶1基數(shù)中,對(duì)于每個(gè)右屬性實(shí)例,存在任意數(shù)目的左屬性實(shí)例,而對(duì)于每個(gè)左屬性實(shí)例,存在最多一個(gè)右屬性實(shí)例。在N∶N基數(shù)中,對(duì)于每個(gè)右屬性實(shí)例,存在任意數(shù)目的左屬性實(shí)例,并且對(duì)于每個(gè)左屬性實(shí)例,存在任意數(shù)目的右屬性實(shí)例。
函數(shù)相關(guān)性屬性(property)告訴該屬性關(guān)系是否還能用作函數(shù)相關(guān)性。函數(shù)相關(guān)性定義兩個(gè)屬性之間的函數(shù)關(guān)系。例如,可以在諸如City(城市)和Mayor(市長(zhǎng))或者Product(產(chǎn)品)和Color(顏色)的屬性之間定義函數(shù)相關(guān)性。函數(shù)相關(guān)性告訴每一個(gè)City值確定Mayor值,或者每一個(gè)Product值確定Color值。這意味著在該關(guān)系中描述的基數(shù)由設(shè)計(jì)者設(shè)置,這對(duì)于查詢(xún)優(yōu)化是有用的。
屬性關(guān)系的一個(gè)使用在維中的分級(jí)結(jié)構(gòu)的上下文內(nèi)。與分級(jí)結(jié)構(gòu)屬性直接相關(guān)的屬性可以作為分級(jí)結(jié)構(gòu)的一部分來(lái)查詢(xún)。這允許分級(jí)結(jié)構(gòu)的每個(gè)級(jí)別定義補(bǔ)充給定級(jí)別的信息的屬性。例如,分級(jí)結(jié)構(gòu)可以具有City(城市)屬性。City屬性可以通過(guò)屬性關(guān)系與City_Population(城市人口)屬性相關(guān)。通過(guò)該屬性關(guān)系信息,City_Population信息可以包括在包括City的查詢(xún)中。
根據(jù)本發(fā)明的特定實(shí)現(xiàn),在下表10中描述了定義屬性關(guān)系元數(shù)據(jù)對(duì)象的元數(shù)據(jù)對(duì)象特定屬性。
表10
連接元數(shù)據(jù)對(duì)象連接由兩個(gè)元數(shù)據(jù)對(duì)象引用的關(guān)系表。兩個(gè)元數(shù)據(jù)對(duì)象可以通過(guò)一對(duì)或多對(duì)映射到關(guān)系表列的屬性元數(shù)據(jù)對(duì)象來(lái)連接。在事實(shí)到維連接中,連接元數(shù)據(jù)對(duì)象連接來(lái)自事實(shí)元數(shù)據(jù)對(duì)象的屬性與來(lái)自維元數(shù)據(jù)對(duì)象的屬性。在復(fù)合連接中,屬性對(duì)的集合來(lái)自相同的表集合。例如,為了連接具有復(fù)合鍵FirstName(名)和LastName(名)的關(guān)系表1與具有復(fù)合鍵FName和Lname的關(guān)系表2,使用一個(gè)具有兩個(gè)連接謂詞(predicate)的關(guān)系連接;一個(gè)連接謂詞用于Table1.FirstName和Table2.Fname,第二連接謂詞用于Table1.LastName和Table2.LName。關(guān)于該復(fù)合連接的信息被存儲(chǔ)在一個(gè)連接元數(shù)據(jù)對(duì)象中。
連接元數(shù)據(jù)對(duì)象由左屬性、右屬性和連接操作符的列表定義。另外,規(guī)定了連接類(lèi)型和預(yù)期基數(shù)??梢栽趦蓚€(gè)事實(shí)、兩維或一個(gè)事實(shí)和一維之間使用連接。連接元數(shù)據(jù)對(duì)象被立方體模型、事實(shí)和維對(duì)象參考。
根據(jù)本發(fā)明的特定實(shí)現(xiàn),在下表11中描述了定義連接元數(shù)據(jù)對(duì)象的元數(shù)據(jù)對(duì)象特定屬性。
表11
立方體是可以使用單個(gè)SQL語(yǔ)句表達(dá)(deliver)的OLAP立方體的非常精確定義。每個(gè)立方體從單個(gè)立方體模型派生。立方體事實(shí)和立方體維的列表是被引用的立方體模型中立方體事實(shí)和立方體維的列表的子集。立方體視圖名稱(chēng)也被定義,其表示數(shù)據(jù)庫(kù)中的立方體。因?yàn)榱⒎襟w維允許每個(gè)立方體維存在一個(gè)立方體分級(jí)結(jié)構(gòu),所以立方體適于不使用多個(gè)分級(jí)結(jié)構(gòu)的工具和應(yīng)用。
立方體的目的是定義OLAP結(jié)構(gòu)的標(biāo)準(zhǔn)關(guān)系視圖。除了關(guān)系視圖之外,立方體提供按照多維描述其列的角色的擴(kuò)展描述(例如,XML文檔)。在定義立方體的過(guò)程中,設(shè)計(jì)者選擇可能元素的子集,為每維選擇單個(gè)分級(jí)結(jié)構(gòu)。這確保了立方體無(wú)歧義地定義單個(gè)關(guān)系結(jié)果集。立方體的簡(jiǎn)單性使得立方體有用于較不復(fù)雜的OLAP應(yīng)用,例如由萬(wàn)維網(wǎng)(“Web”)服務(wù)支持的便攜式設(shè)備。
根據(jù)本發(fā)明的特定實(shí)現(xiàn),在下表12中描述了立方體元數(shù)據(jù)對(duì)象的元數(shù)據(jù)對(duì)象特定屬性。
表12
立方體事實(shí)元數(shù)據(jù)對(duì)象具有來(lái)自特定事實(shí)元數(shù)據(jù)對(duì)象的有序列表中的度量的子集。立方體事實(shí)元數(shù)據(jù)對(duì)象向立方體提供了界定立方體模型的事實(shí)的靈活性。從父事實(shí)元數(shù)據(jù)對(duì)象引用諸如連接和屬性的結(jié)構(gòu)信息。根據(jù)本發(fā)明的特定實(shí)現(xiàn),在下表13中描述了定義立方體事實(shí)元數(shù)據(jù)對(duì)象的元數(shù)據(jù)對(duì)象特定屬性。
表13
立方體維元數(shù)據(jù)對(duì)象用來(lái)界定要在立方體中使用的維。立方體維元數(shù)據(jù)對(duì)象引用從其派生它的維以及給定立方體的相關(guān)立方體分級(jí)結(jié)構(gòu)。在特定實(shí)現(xiàn)中,一個(gè)立方體分級(jí)結(jié)構(gòu)可以應(yīng)用于立方體維。從維定義中引用應(yīng)用于立方體維的連接和屬性。根據(jù)本發(fā)明的特定實(shí)現(xiàn),在下表14中描述了定義立方體維元數(shù)據(jù)對(duì)象的元數(shù)據(jù)對(duì)象特定屬性。
表14
立方體分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象是分級(jí)結(jié)構(gòu)的被界定(scoped)版本,并且在立方體中使用。立方體分級(jí)結(jié)構(gòu)引用從其派生它的分級(jí)結(jié)構(gòu),并且可具有來(lái)自父分級(jí)結(jié)構(gòu)的屬性的子集。另外,立方體分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象引用應(yīng)用于立方體上的屬性關(guān)系。在特定實(shí)現(xiàn)中,可以為立方體的立方體維定義一個(gè)立方體分級(jí)結(jié)構(gòu)。立方體分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象具有與從其派生該立方體分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象的分級(jí)結(jié)構(gòu)相同的分級(jí)結(jié)構(gòu)類(lèi)型和部署機(jī)制。
立方體分級(jí)結(jié)構(gòu)非常類(lèi)似于分級(jí)結(jié)構(gòu);然而,立方體維參考單個(gè)立方體分級(jí)結(jié)構(gòu)。這允許單個(gè)SELECT語(yǔ)句計(jì)算立方體的各個(gè)單元。
根據(jù)本發(fā)明的特定實(shí)現(xiàn),在下表15中描述了定義立方體分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象的元數(shù)據(jù)對(duì)象特定屬性。
表15
圖16示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的一些元數(shù)據(jù)對(duì)象之間的一些關(guān)系。箭頭表示元數(shù)據(jù)對(duì)象引用另一個(gè)元數(shù)據(jù)對(duì)象。例如,立方體元數(shù)據(jù)對(duì)象1610引用立方體模型元數(shù)據(jù)對(duì)象1600。根據(jù)本發(fā)明的特定實(shí)現(xiàn),在下表16中示出了更詳細(xì)的元數(shù)據(jù)對(duì)象的關(guān)系描述。
表16
根據(jù)特定實(shí)現(xiàn),存在用于命名的元數(shù)據(jù)對(duì)象命名約定和規(guī)則??梢允褂门c在此所述不同的命名約定和規(guī)則而不脫離本發(fā)明的范圍。存在兩個(gè)不同的命名約定來(lái)對(duì)對(duì)象命名普通和定界(delimited)。對(duì)于元數(shù)據(jù)對(duì)象,由于其靈活性,當(dāng)對(duì)對(duì)象進(jìn)行命名和引用數(shù)據(jù)庫(kù)表和列時(shí),使用定界約定。定界約定允許混合大小寫(xiě)名稱(chēng)、空格和特殊字符如國(guó)家語(yǔ)言字符。完整的字符集由對(duì)象所在數(shù)據(jù)庫(kù)的代碼頁(yè)確定。
在特定實(shí)現(xiàn)中,除了命名約定之外,還對(duì)對(duì)象中的不同標(biāo)識(shí)符應(yīng)用一些規(guī)則。例如,模式具有1-30字節(jié)的長(zhǎng)度,并且模式名稱(chēng)不以‘SYS’開(kāi)頭;名稱(chēng)具有1-128字節(jié)的長(zhǎng)度;商業(yè)名稱(chēng)具有1-128字節(jié)的長(zhǎng)度;注釋具有0-254字節(jié)的長(zhǎng)度;表模式(在引用列時(shí)使用)具有1-128字節(jié)的長(zhǎng)度;表名稱(chēng)(在引用列時(shí)使用)具有1-128字節(jié)的長(zhǎng)度,并且列名稱(chēng)(在引用列時(shí)使用)具有1-128字節(jié)的長(zhǎng)度。
除了所施行(enforce)的關(guān)系之外,還為每個(gè)元數(shù)據(jù)對(duì)象描述附加規(guī)則。也就是,每一個(gè)元數(shù)據(jù)對(duì)象具有其自己的規(guī)則集,并且如果元數(shù)據(jù)對(duì)象遵循該元數(shù)據(jù)對(duì)象的所有元數(shù)據(jù)對(duì)象規(guī)則,則元數(shù)據(jù)對(duì)象的實(shí)例是合法的。這些規(guī)則分成三個(gè)類(lèi)別基本規(guī)則、立方體模型完整性規(guī)則和優(yōu)化規(guī)則。下面對(duì)特定規(guī)則的討論提供了用于本發(fā)明特定實(shí)現(xiàn)的規(guī)則集。在其它實(shí)現(xiàn)中,可以修改用于一個(gè)或多個(gè)元數(shù)據(jù)對(duì)象的規(guī)則集而不脫離本發(fā)明的范圍。
立方體模型元數(shù)據(jù)對(duì)象的基本規(guī)則是(1)立方體模型元數(shù)據(jù)對(duì)象參考零個(gè)或一個(gè)事實(shí)元數(shù)據(jù)對(duì)象;(2)立方體模型元數(shù)據(jù)對(duì)象參考零個(gè)或更多個(gè)維;(3)維-連接對(duì)具有維和連接兩者;(4)如果在事實(shí)元數(shù)據(jù)對(duì)象的屬性列表中找到連接一側(cè)的所有屬性并且在維元數(shù)據(jù)對(duì)象的屬性列表中找到所有另一側(cè)屬性,則與維相關(guān)聯(lián)的連接是合法的;以及(5)對(duì)于在立方體模型的事實(shí)中引用的每個(gè)度量,由立方體模型引用度量聚合中的所有顯式維引用。當(dāng)立方體模型引用至少一維時(shí),具有空維集的聚合匹配前面未被引用的立方體模型中的至少一維。
立方體元數(shù)據(jù)對(duì)象的基本規(guī)則是(1)立方體元數(shù)據(jù)對(duì)象參考一個(gè)立方體事實(shí);(2)立方體元數(shù)據(jù)對(duì)象參考至少一個(gè)立方體維;(3)立方體事實(shí)從在立方體模型中使用的事實(shí)派生;以及(4)立方體維從在立方體模型中使用的維派生。
事實(shí)元數(shù)據(jù)對(duì)象的基本規(guī)則是(1)事實(shí)元數(shù)據(jù)對(duì)象參考至少一個(gè)度量;(2)由事實(shí)引用的所有屬性和度量是可連接的;(3)在事實(shí)元數(shù)據(jù)對(duì)象上下文中,可以在兩個(gè)給定表之間定義單個(gè)連接;(4)在事實(shí)元數(shù)據(jù)對(duì)象中不存在連接環(huán);以及(5)由事實(shí)元數(shù)據(jù)對(duì)象引用的所有連接參考事實(shí)元數(shù)據(jù)對(duì)象屬性。
維元數(shù)據(jù)對(duì)象的基本規(guī)則是(1)維元數(shù)據(jù)對(duì)象參考至少一個(gè)屬性;(2)由維引用的屬性是可連接的;(3)不存在連接環(huán);(4)在維上下文中,在任何兩個(gè)給定表之間定義單個(gè)連接;(5)由維引用的分級(jí)結(jié)構(gòu)參考該維的屬性;(6)由維的分級(jí)結(jié)構(gòu)引用的屬性關(guān)系參考該維的屬性;以及(7)由維引用的連接參考該維的屬性。
立方體事實(shí)元數(shù)據(jù)對(duì)象的基本規(guī)則是(1)立方體事實(shí)元數(shù)據(jù)對(duì)象參考至少一個(gè)事實(shí);(2)立方體事實(shí)元數(shù)據(jù)對(duì)象參考至少一個(gè)度量;以及(3)由立方體事實(shí)元數(shù)據(jù)對(duì)象引用的度量是事實(shí)元數(shù)據(jù)對(duì)象的一部分。
立方體維元數(shù)據(jù)對(duì)象的基本規(guī)則如下(1)立方體維元數(shù)據(jù)對(duì)象參考一維;(2)立方體維元數(shù)據(jù)對(duì)象參考立方體分級(jí)結(jié)構(gòu);以及(3)由立方體維元數(shù)據(jù)對(duì)象引用的立方體分級(jí)結(jié)構(gòu)從由立方體維元數(shù)據(jù)對(duì)象的維引用的分級(jí)結(jié)構(gòu)派生。
分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象的基本規(guī)則是(1)分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象參考至少一個(gè)屬性;(2)對(duì)于遞歸部署,要求兩個(gè)屬性;(3)分級(jí)結(jié)構(gòu)內(nèi)的每一個(gè)屬性關(guān)系具有左屬性作為該分級(jí)結(jié)構(gòu)的一部分;(4)該分級(jí)結(jié)構(gòu)內(nèi)的每一個(gè)屬性關(guān)系具有1∶1或N∶1的基數(shù);以及(5)根據(jù)本發(fā)明的特定實(shí)現(xiàn)如表17所示允許分級(jí)結(jié)構(gòu)類(lèi)型和分級(jí)結(jié)構(gòu)部署的特定組合。
表17
立方體分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象的基本規(guī)則是(1)立方體分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象參考一個(gè)分級(jí)結(jié)構(gòu);(2)立方體分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象參考至少一個(gè)屬性;(3)由立方體分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象引用的屬性是該分級(jí)結(jié)構(gòu)的一部分;(4)立方體分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象中屬性的次序與該分級(jí)結(jié)構(gòu)中的相同(被定義為網(wǎng)絡(luò)的分級(jí)結(jié)構(gòu)除外);(5)分級(jí)結(jié)構(gòu)內(nèi)的每一個(gè)屬性關(guān)系具有左屬性作為該分級(jí)結(jié)構(gòu)的一部分;以及(6)在立方體分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象中引用的屬性關(guān)系也在定義立方體分級(jí)結(jié)構(gòu)的分級(jí)結(jié)構(gòu)中被引用。
度量元數(shù)據(jù)對(duì)象的基本規(guī)則是(1)度量元數(shù)據(jù)對(duì)象可以具有屬性、列、度量,或者不具有它們中的任一個(gè),作為每個(gè)SQL表達(dá)式模板的參數(shù);(2)用作SQL模板參數(shù)的屬性和度量不能在屬性和/或度量之間產(chǎn)生相關(guān)環(huán);(3)在度量元數(shù)據(jù)對(duì)象中定義的每一個(gè)SQL模板不是空字符串;(4)SQL模板不使用聚合函數(shù);(5)如果引用至少一個(gè)度量以及僅僅引用度量,則不需要聚合;(6)如果存在聚合,則SQL模板的數(shù)目匹配第一聚合函數(shù)的參數(shù)數(shù)目;(7)具有多個(gè)SQL模板的度量元數(shù)據(jù)對(duì)象在聚合腳本中定義至少一個(gè)聚合步驟;(8)如果度量元數(shù)據(jù)對(duì)象A參考定義多個(gè)SQL模板的度量元數(shù)據(jù)對(duì)象B,則度量元數(shù)據(jù)對(duì)象A沒(méi)有聚合腳本;該規(guī)則適用于度量引用樹(shù)中的所有級(jí)別;(9)多參數(shù)聚合函數(shù)用作第一聚合;(10)如果度量元數(shù)據(jù)對(duì)象定義一個(gè)或多個(gè)聚合,則一個(gè)聚合可具有空維集;(11)在度量元數(shù)據(jù)對(duì)象內(nèi),維不可以在聚合內(nèi)或者跨越聚合被引用多于一次;(12)在SQL表達(dá)式模板內(nèi),標(biāo)記指示符(即{$$#})以1開(kāi)始編號(hào),并且是連續(xù)的而無(wú)編號(hào)間斷;以及(13)在SQL表達(dá)式內(nèi),每個(gè)列、屬性和度量被引用至少一次。
屬性元數(shù)據(jù)對(duì)象的基本規(guī)則是(1)屬性元數(shù)據(jù)對(duì)象可以具有屬性、列表或者不具有它們中的任一個(gè)作為SQL模板的參數(shù);(2)用作SQL模板參數(shù)的屬性不能在屬性之間產(chǎn)生相關(guān)環(huán);(3)SQL模板不能是空字符串或空白字符串;(4)不允許聚合函數(shù)是SQL模板的一部分;(5)在SQL表達(dá)式模板內(nèi),標(biāo)記指示符(即{$$#})以1開(kāi)始編號(hào),并且是連續(xù)的而無(wú)編號(hào)間斷;以及(6)在SQL表達(dá)式內(nèi),每個(gè)列、屬性和度量被引用至少一次。
屬性關(guān)系元數(shù)據(jù)對(duì)象的基本規(guī)則是(1)屬性關(guān)系元數(shù)據(jù)對(duì)象參考兩個(gè)屬性;以及(2)屬性關(guān)系元數(shù)據(jù)對(duì)象不能被定義為具有基數(shù)=N∶N和函數(shù)相關(guān)性=是。
連接元數(shù)據(jù)對(duì)象的基本規(guī)則是(1)連接元數(shù)據(jù)對(duì)象參考至少一個(gè)由左屬性、右屬性和操作符號(hào)組成的三元組;(2)連接元數(shù)據(jù)對(duì)象中的所有左屬性解析(resolve)成單個(gè)表的一個(gè)或多個(gè)列;(3)連接元數(shù)據(jù)對(duì)象中的所有右屬性解析成單個(gè)表的一個(gè)或多個(gè)列;以及(4)連接元數(shù)據(jù)對(duì)象的每個(gè)三元組定義合法操作;左和右屬性的數(shù)據(jù)類(lèi)型,以及為它們定義的操作是兼容的。
立方體模型完整性規(guī)則擴(kuò)展基本規(guī)則,以便確保立方體模型具有所需的與其它元數(shù)據(jù)對(duì)象的鏈接,以便允許形成有效的倉(cāng)庫(kù)SQL查詢(xún)。立方體模型元數(shù)據(jù)對(duì)象的立方體模型完整性規(guī)則是(1)立方體模型元數(shù)據(jù)對(duì)象參考一個(gè)事實(shí);(2)立方體模型元數(shù)據(jù)對(duì)象參考一個(gè)或多個(gè)維。
優(yōu)化規(guī)則擴(kuò)展立方體模型完整性規(guī)則,以便確??梢詧?zhí)行倉(cāng)庫(kù)SQL查詢(xún)的優(yōu)化。
立方體模型元數(shù)據(jù)對(duì)象的優(yōu)化規(guī)則是(1)在事實(shí)到維中使用的連接具有1∶1或N∶1的基數(shù),并且將事實(shí)表連接到維的主表。
維元數(shù)據(jù)對(duì)象的優(yōu)化規(guī)則是(1)考慮由維的連接形成的連接網(wǎng)絡(luò),存在至少一個(gè)表、主表,其中從該表輻射的所有連接具有N∶1或1∶1的基數(shù)。
連接元數(shù)據(jù)對(duì)象的優(yōu)化規(guī)則是(1)在參與連接的列上定義有約束;如果連接是自連接,即在等式(equality)的兩側(cè)都使用相同的列集,則定義匹配該列集的主鍵;在所有其它情況下,當(dāng)一側(cè)的列集不同于連接的另一側(cè),則主鍵匹配連接一側(cè)的列,并且外鍵匹配其它列集以及引用該主鍵;(2)連接基數(shù)是1∶1、N∶1或1∶N;如果連接是自連接,則基數(shù)是1∶1,在所有其它連接的情況下,基數(shù)在定義了主鍵的一側(cè)為1,而在定義了外鍵的一側(cè)為N;如果外鍵側(cè)也具有在其上定義的主鍵,則使用1作為基數(shù);(3)在連接中使用的所有屬性都解析成不可為空的SQL表達(dá)式;以及(4)連接類(lèi)型是內(nèi)部連接。
A.4元數(shù)據(jù)對(duì)象例子
圖17示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的由兩個(gè)維表1710、1720和事實(shí)表1700組成的星形模式。兩條線(xiàn)1730、1740表示事實(shí)表1700與維表1710、1720之間的連接。在特定實(shí)現(xiàn)中,數(shù)據(jù)庫(kù)設(shè)計(jì)者使用建模工具或用戶(hù)接口150可以創(chuàng)建元數(shù)據(jù)對(duì)象130的元數(shù)據(jù)對(duì)象實(shí)例。如果元數(shù)據(jù)對(duì)象與新的模型重疊,則在生成多維元數(shù)據(jù)期間定義的大多數(shù)元數(shù)據(jù)對(duì)象130可以被復(fù)用于新的模型
圖18A-18E示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的可以針對(duì)圖17的星形模式生成的元數(shù)據(jù)對(duì)象實(shí)例的可能集合,并且為簡(jiǎn)單起見(jiàn),示出了元數(shù)據(jù)對(duì)象的一些屬性。具體地說(shuō),圖18A-18E中的一些被省略的屬性是常見(jiàn)屬性。例如,圖18A-18E示出了立方體模型元數(shù)據(jù)對(duì)象實(shí)例1800、立方體元數(shù)據(jù)對(duì)象實(shí)例1802、事實(shí)元數(shù)據(jù)對(duì)象實(shí)例1804、立方體事實(shí)元數(shù)據(jù)對(duì)象實(shí)例1806、度量元數(shù)據(jù)對(duì)象實(shí)例1808、1810、維元數(shù)據(jù)對(duì)象實(shí)例1812、1814、立方體維元數(shù)據(jù)對(duì)象實(shí)例1816、1818、分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象實(shí)例1820、1822、1824、立方體分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象實(shí)例1826、1828、連接元數(shù)據(jù)對(duì)象實(shí)例1830、1832以及屬性元數(shù)據(jù)對(duì)象實(shí)例1834-1848。
用戶(hù)可以使用用戶(hù)接口150來(lái)創(chuàng)建元數(shù)據(jù)對(duì)象。在創(chuàng)建空的立方體模型元數(shù)據(jù)對(duì)象之后,創(chuàng)建事實(shí)元數(shù)據(jù)對(duì)象和維元數(shù)據(jù)對(duì)象,并且通過(guò)創(chuàng)建適當(dāng)?shù)倪B接元數(shù)據(jù)對(duì)象將它們連接到立方體模型元數(shù)據(jù)對(duì)象。
可以修改在此討論的元數(shù)據(jù)對(duì)象的屬性,而不脫離本發(fā)明的范圍。
B.規(guī)定用于關(guān)系在線(xiàn)分析處理(ROLAP)引擎的多維計(jì)算
OLAP多維元數(shù)據(jù)系統(tǒng)100使得能夠創(chuàng)建度量元數(shù)據(jù)對(duì)象以協(xié)助多維計(jì)算。在特定實(shí)現(xiàn)中,度量元數(shù)據(jù)對(duì)象包括在表8中定義的特定屬性。
度量元數(shù)據(jù)對(duì)象中的度量由SQL表達(dá)式的聚合來(lái)定義。具體地說(shuō),將表列、屬性和度量映射到SQL表達(dá)式模板,以構(gòu)建SQL表達(dá)式。然后,使用所得到的SQL表達(dá)式作為度量元數(shù)據(jù)對(duì)象的第一聚合函數(shù)的輸入。如果度量元數(shù)據(jù)對(duì)象具有多于一個(gè)聚合,則按照所列次序執(zhí)行聚合函數(shù),其中每個(gè)后繼聚合以前一聚合的結(jié)果作為其輸入。如果度量元數(shù)據(jù)對(duì)象的SQL表達(dá)式僅引用其它度量,則省略聚合函數(shù),這是因?yàn)楸灰玫亩攘棵枋鋈魏嗡璧木酆稀?br> 在計(jì)算度量時(shí)使用的SQL表達(dá)式通過(guò)組合兩個(gè)屬性來(lái)創(chuàng)建SQL表達(dá)式模板的列表以及列、屬性和度量的列表。SQL表達(dá)式模板使用標(biāo)記表示法,其中{$$n}是標(biāo)記,并且n引用該列表中的特定列、屬性或度量。列、屬性和度量的列表是有序的,并且列、屬性或度量的列表中的位置對(duì)應(yīng)于標(biāo)記“n”值。由于大多數(shù)聚合函數(shù)接受單個(gè)表達(dá)式作為輸入,因此對(duì)于大多數(shù)聚合函數(shù),該列表中SQL表達(dá)式模板的數(shù)目為一。然而,當(dāng)使用諸如CORRELATION的聚合函數(shù)時(shí),SQL表達(dá)式模板的數(shù)目匹配由聚合函數(shù)接受的輸入?yún)?shù)的數(shù)目。
同樣地,使用SQL表達(dá)式作為對(duì)第一聚合的輸入。每個(gè)聚合規(guī)定應(yīng)用于對(duì)應(yīng)維集的函數(shù)。該聚合函數(shù)可以是由底層RDBMS 110支持的任何聚合函數(shù),例如包括SUM、COUNT、MIN、MAX和CORRELATION。在特定實(shí)現(xiàn)中,每維由度量元數(shù)據(jù)對(duì)象聚合一次。如果維集為空,則對(duì)未被該列表中的任何其它聚合特定使用的立方體或立方體模型中的所有維應(yīng)用聚合函數(shù)。
多維元數(shù)據(jù)軟件120使用度量元數(shù)據(jù)對(duì)象中的元數(shù)據(jù),自動(dòng)地生成用于生成立方體視圖的SQL語(yǔ)句。
B.1度量要求
該章節(jié)描述根據(jù)本發(fā)明特定實(shí)現(xiàn)的一些度量要求。
度量的一個(gè)要求是支持度量?jī)?nèi)的特定計(jì)算次序。由立方體模型元數(shù)據(jù)對(duì)象或立方體元數(shù)據(jù)對(duì)象引用的度量元數(shù)據(jù)對(duì)象集的計(jì)算次序無(wú)需相同-每個(gè)度量元數(shù)據(jù)對(duì)象可以規(guī)定與任何其它度量元數(shù)據(jù)對(duì)象的計(jì)算次序不同的計(jì)算次序。例如,出售量=SUM(收益/單價(jià)),并且利潤(rùn)率=SUM(利潤(rùn))/SUM(收益)。圖19示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的表A1900,其表示基本數(shù)據(jù)。名稱(chēng)為“衣服”的成員是褲子1902、襯衫1904和領(lǐng)帶1906的父,并且衣服的出售量使用單價(jià)1910和收益1912來(lái)確定(680/40)+(780/60)+(175/25)=17+13+7=37。衣服的利潤(rùn)率使用收益1912和利潤(rùn)1914來(lái)確定(68+117+52.5)/(680+780+175)=237.5/1635=0.145。
度量的另一個(gè)要求是支持帶多個(gè)輸入?yún)?shù)的聚合函數(shù),例如相關(guān)操作(例如,CORRELATION(Revenue,Profit))。度量對(duì)象需要為每個(gè)聚合函數(shù)輸入定義獨(dú)立的表達(dá)式。
度量的另一個(gè)要求是支持半加性(semi-additive)度量,例如快照度量(例如,Inventory(庫(kù)存))。例如,對(duì)于Market和Product維,執(zhí)行求和操作(例如,SUM(Inventory))。對(duì)于Time維,執(zhí)行MIN操作(例如,MIN(Inventory))。
圖20示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的表B 2000,其表示具有聚合(SUM,Market)和(Min,Time)的度量。在表B 2000中,不帶星號(hào)(例如,*)或加號(hào)(例如,+)的數(shù)表示基本數(shù)據(jù)。帶星號(hào)的數(shù)表示(SUM,Market)的聚合。帶加號(hào)的數(shù)表示(Min,Time)的聚合。例如,針對(duì)加利福尼亞2002和2004年1月的(SUM,Market)是28,并且針對(duì)加利福尼亞2002和2006年第1季度的(Min,Time)是25。
度量的附加要求是對(duì)于每維支持一個(gè)聚合函數(shù),支持跨越多維的不同計(jì)算次序;以及針對(duì)(targeting to)復(fù)雜應(yīng)用(例如,通過(guò)(SUM,Product)、(AVG,Time),(MAX,Market)查找具有最大平均庫(kù)存的市場(chǎng)位置)。針對(duì)復(fù)雜應(yīng)用是半加性度量的更一般性表示,下面參照?qǐng)D23對(duì)此進(jìn)行進(jìn)一步的描述。另外,針對(duì)復(fù)雜應(yīng)用的要求由下面進(jìn)一步描述的非對(duì)稱(chēng)度量表示。非對(duì)稱(chēng)度量在聚合列表中定義多個(gè)聚合。
圖21A-21D示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的表C 2100,其表示具有聚合(SUM,Product)(即產(chǎn)品之和)、(AVG,Time)(即時(shí)間上的平均值)和(Max,Market)(即市場(chǎng)的最大值)的度量。在表C 2100中,不帶星號(hào)(例如,*)或加號(hào)(例如,+)或者短劃線(xiàn)(例如,-)的數(shù)表示基本數(shù)據(jù)。也就是,在圖21A中示出了基本數(shù)據(jù)。在圖21B中,在表C 2100中,添加了(SUM,Product)的聚合數(shù),并且它們以星號(hào)標(biāo)識(shí)。例如,對(duì)于衣服2102、洛杉磯2104、2105年1月,(SUM,Product)為66。在圖21C中,在表C 2100中,添加了(AVG,Time)的聚合數(shù),并且它們以加號(hào)標(biāo)識(shí)。例如,對(duì)于褲子2106、圣何塞2108、2109年第一季度(QTR1),(AVG,Time)為11。在圖21D中, 添加了(MAX,Market)的聚合數(shù),并且它們由短劃線(xiàn)(例如,-)標(biāo)識(shí)。例如,對(duì)于襯衫2110、加利福尼亞2112、2105年1月,(MAX,Market)為36。
B.2描述度量
在本發(fā)明的特定實(shí)現(xiàn)中,可以創(chuàng)建度量元數(shù)據(jù)對(duì)象,其包括表達(dá)式列表和聚合列表。在章節(jié)A中詳細(xì)地討論了度量元數(shù)據(jù)對(duì)象。為易于理解起見(jiàn),在該章節(jié)中也將討論度量元數(shù)據(jù)對(duì)象。度量元數(shù)據(jù)對(duì)象中的表達(dá)式列表包括用于每個(gè)表達(dá)式的SQL表達(dá)式模板以及用于每個(gè)SQL表達(dá)式模板的列、屬性和度量的列表。聚合列表中的每個(gè)條目包括聚合函數(shù)和對(duì)應(yīng)的維集??盏木S集意味著所有剩余維要用于聚合函數(shù)。在特定實(shí)現(xiàn)中,對(duì)于度量元數(shù)據(jù)對(duì)象,只有一個(gè)聚合可具有空的維集。
圖22示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的兩個(gè)全加性度量元數(shù)據(jù)對(duì)象(Cost 2210和Revenue 2220)的創(chuàng)建。在圖22的例子中,存在三個(gè)維,即Product 2202、Market 2204和Time 2206。每個(gè)度量元數(shù)據(jù)對(duì)象2210、2220規(guī)定<NULL>維集,其意味著所有維都用于SUM的聚合函數(shù)。
為具有三維Product 2202、Market 2204和Time 2206的立方體模型創(chuàng)建Cost度量元數(shù)據(jù)對(duì)象2210。Cost度量元數(shù)據(jù)對(duì)象2210具有SQL表達(dá)式模板2212(template=“{$$1}”),其表示到在列、屬性和度量的單項(xiàng)目列表中規(guī)定的列的簡(jiǎn)單映射(list=“Column Fact.Cost”)。也就是,對(duì)于Cost度量元數(shù)據(jù)對(duì)象2210,表達(dá)式列表參考“{$$1}”,其是在生成SQL表達(dá)式時(shí)以列Fact.Cost替換的標(biāo)記。聚合列表2214是(SUM,<NULL>),其中SUM是聚合函數(shù),并且<NULL>是空的維集。來(lái)自SQL表達(dá)式模板2212的SQL表達(dá)式用作SUM聚合函數(shù)的輸入,從而產(chǎn)生SQLSUM(Fact.Cost)。
為具有三維Product 2202、Market 2204和Time 2206的立方體模型創(chuàng)建Revenue度量元數(shù)據(jù)對(duì)象2220。Revenue度量元數(shù)據(jù)對(duì)象2220具有SQL表達(dá)式模板2222(template=“{$$1}”),其表示到在列、屬性和度量的單項(xiàng)目列表中規(guī)定的列的簡(jiǎn)單映射,其中l(wèi)ist=“ColumnFact.Rev”。也就是,對(duì)于Revenue度量元數(shù)據(jù)對(duì)象2220,表達(dá)式列表參考“{$$1}”,其是在生成SQL表達(dá)式時(shí)以列Fact.Rev替換的標(biāo)記。聚合列表2224是(SUM,<NULL>),其中SUM是聚合函數(shù),并且<NULL>是空的維集。來(lái)自SQL表達(dá)式模板2222的SQL表達(dá)式用作SUM聚合函數(shù)的輸入,從而產(chǎn)生SQLSUM(Fact.Rev)。
圖23示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的半加性度量的創(chuàng)建。Inventory(庫(kù)存)度量元數(shù)據(jù)對(duì)象2310具有SQL表達(dá)式模板2312(template=“{$$1}”),其表示到在列、屬性和度量的單項(xiàng)目列表中規(guī)定的列的簡(jiǎn)單映射,其中l(wèi)ist=“Column Fact.Inv”。在Inventory度量元數(shù)據(jù)對(duì)象2310中,聚合列表2314包括兩個(gè)聚合SUM和AVG(即平均)。Inventory度量元數(shù)據(jù)對(duì)象2310最后聚合Time維,從而聚合列表規(guī)定用于SUM的<NULL>,其意味著在該列表中未被引用的所有維(即,不同于時(shí)間的其它維,在本例中其將是產(chǎn)品和市場(chǎng)),并且規(guī)定用于Time的AVG。首先執(zhí)行SUM操作,并且使用該求和操作的結(jié)果來(lái)執(zhí)行AVG操作。所得到的SQL表達(dá)式涉及多個(gè)聚合步驟。為易于理解起見(jiàn),提供了所得到的SQL表達(dá)式的簡(jiǎn)單例子。例如,所得到的SQL表達(dá)式可以是AVG(S1),其中S1是SUM(Fact.Inv)的結(jié)果。
圖24示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的具有聚合的復(fù)合度量的創(chuàng)建。在這種情況下,Profit(利潤(rùn))度量元數(shù)據(jù)對(duì)象2410使用預(yù)定義的度量,并且確定要執(zhí)行的聚合。更復(fù)雜的度量例如Profit可能具有SQL表達(dá)式模板2412(template=“{$$1}-{$$2}”),其中列、屬性和度量的列表是list=“Measure Revenue,Column Fact.Cost”。也就是,該表達(dá)式列表包括“{$$1}-{$$2}”,其表示以來(lái)自Revenue度量元數(shù)據(jù)對(duì)象2220的聚合結(jié)果替換第一標(biāo)記{$$1},并且以來(lái)自Cost度量元數(shù)據(jù)對(duì)象2210的聚合結(jié)果替換第二標(biāo)記{$$2}。通過(guò)以正確的引用替換這些標(biāo)記,SQL表達(dá)式變成“Revenue-Fact.Cost”。通過(guò)將收益度量引用擴(kuò)展成其列引用,SQL表達(dá)式變成“Fact.Rev-Fact.Cost”。
Profit度量元數(shù)據(jù)對(duì)象2410的聚合列表2414為(SUM,<NULL>)。在聚合列表2410中,規(guī)定<NULL>維集,以表示用于SUM操作的所有維。使用利潤(rùn)SQL表達(dá)式作為對(duì)SUM聚合函數(shù)的輸入,Profit度量的SQL表達(dá)式是SUM(Fact.Rev-Fact.Cost)。也就是,通過(guò)對(duì)從收益減去成本的所有減法結(jié)果進(jìn)行求和來(lái)得到利潤(rùn)。
圖25示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的沒(méi)有聚合的復(fù)合度量的創(chuàng)建。在這種情況下,Profit Margin(利潤(rùn)率)度量元數(shù)據(jù)對(duì)象2510使用預(yù)定義的度量元數(shù)據(jù)對(duì)象(即Revenue度量元數(shù)據(jù)對(duì)象2220和Profit度量元數(shù)據(jù)對(duì)象2410),并且不要求執(zhí)行任何聚合(在聚合列表2414中以<NULL>而非聚合表示)。在這種情況下,聚合來(lái)自基本度量。
Profit Margin度量元數(shù)據(jù)對(duì)象具有SQL表達(dá)式模板2512(template=“{$$1}/{$$2}”)。第一標(biāo)記{$$1}以來(lái)自Profit度量元數(shù)據(jù)對(duì)象2410的聚合結(jié)果替換,而第二標(biāo)記{$$2}以來(lái)自Revenue度量元數(shù)據(jù)對(duì)象2220的聚合結(jié)果替換。這樣,所得到的用于Profit Margin度量的SQL表達(dá)式為SUM(Fact.Rev-Fact.Cost)/SUM(Fact.Rev)。也就是,計(jì)算利潤(rùn)之和,計(jì)算收益之和,并且通過(guò)將利潤(rùn)除以收益來(lái)獲得利潤(rùn)率。
圖26示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的具有OLAP函數(shù)的度量的創(chuàng)建。Profit Rank(利潤(rùn)排名)度量元數(shù)據(jù)對(duì)象2610利用RANK函數(shù)(例如,可從DB2 UDB RDBMS獲得)以對(duì)利潤(rùn)度量進(jìn)行排名。新的Profit Rank度量元數(shù)據(jù)對(duì)象2610不需要任何聚合。具體地說(shuō),ProfitRank度量元數(shù)據(jù)對(duì)象2610具有SQL表達(dá)式模板(template=“RANK()OVER(ORDER BY{$$1}”),其表示以來(lái)自Profit度量元數(shù)據(jù)對(duì)象2410的聚合結(jié)果替換第一標(biāo)記{$$1}。聚合列表2614通過(guò)<NULL>而非聚合函數(shù)來(lái)表示不存在聚合。所得到的用于RANK度量的SQL表達(dá)式是RANK()OVER(ORDER BY SUM(Fact.Rev-Fact.Cost))。
圖27示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的具有聚合和多個(gè)輸入的度量。RevProfit Correlation(收益利潤(rùn)相關(guān))度量元數(shù)據(jù)對(duì)象2710利用Revenue和Profit度量元數(shù)據(jù)對(duì)象2220、2410。對(duì)于RevProfitCorrelation度量元數(shù)據(jù)對(duì)象,它具有兩個(gè)SQL表達(dá)式模板2712,每一個(gè)都具有以{$$1}表示的第一標(biāo)記。對(duì)于SQL表達(dá)式模板2712(template=“{$$1}”),以來(lái)自Revenue度量元數(shù)據(jù)對(duì)象2220的聚合結(jié)果替換第一標(biāo)記{$$1}。對(duì)于SQL表達(dá)式模板2713(template=“{$$1}”),以來(lái)自Profit度量元數(shù)據(jù)對(duì)象2410的聚合結(jié)果替換第一標(biāo)記{$$1}。然后,執(zhí)行相關(guān)。相關(guān)是提供兩個(gè)數(shù)列彼此相關(guān)的程度的測(cè)量的統(tǒng)計(jì)函數(shù)。所得到的用于Correlation度量的SQL表達(dá)式是CORRELATION(Fact.Rev,(Fact.Rev-Fact.Cost))。聚合列表2714規(guī)定CORRELATION操作和用來(lái)表示所有維的<NULL>維集。
圖28示出了根據(jù)本發(fā)明某些實(shí)現(xiàn)的來(lái)自圖22-27的所有定義的度量元數(shù)據(jù)對(duì)象。一些度量元數(shù)據(jù)對(duì)象基于其它度量元數(shù)據(jù)對(duì)象而構(gòu)建。例如,RevProfit Correlation度量元數(shù)據(jù)對(duì)象2710基于Revenue度量元數(shù)據(jù)對(duì)象2220和Profit度量元數(shù)據(jù)對(duì)象2410而構(gòu)建,而Profit度量元數(shù)據(jù)對(duì)象2410基于Cost和Revenue度量元數(shù)據(jù)對(duì)象2210、2220而構(gòu)建。
B.3為以一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象表示的度量生成SQL語(yǔ)句
多維元數(shù)據(jù)軟件120生成計(jì)算由度量元數(shù)據(jù)對(duì)象表示的度量集的單個(gè)SQL語(yǔ)句。圖29A示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的用于從一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象生成SQL語(yǔ)句的邏輯??刂圃趬K2900中以這樣的操作開(kāi)始接收一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象中的每一個(gè)的度量描述并且基于這些度量描述而生成該一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象,例如圖22-28所示的度量元數(shù)據(jù)對(duì)象中的一個(gè)或多個(gè)。在塊2902中,接收引用所有度量元數(shù)據(jù)對(duì)象的事實(shí)元數(shù)據(jù)對(duì)象的事實(shí)描述,并且從該事實(shí)描述生成事實(shí)元數(shù)據(jù)對(duì)象。另外,事實(shí)描述引用屬性元數(shù)據(jù)對(duì)象和連接元數(shù)據(jù)對(duì)象。在塊2903中,接收一個(gè)或多個(gè)維元數(shù)據(jù)對(duì)象中的每一個(gè)的維描述,并且從這些維描述生成該一個(gè)或多個(gè)維元數(shù)據(jù)對(duì)象。該維描述引用一個(gè)或多個(gè)屬性元數(shù)據(jù)對(duì)象、零個(gè)或更多個(gè)連接元數(shù)據(jù)對(duì)象、以及一個(gè)或多個(gè)分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象。每個(gè)分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象包括用來(lái)構(gòu)建ROLLUP子句的信息。具體地說(shuō),立方體模型元數(shù)據(jù)對(duì)象可以引用若干可能的分級(jí)結(jié)構(gòu),但是在本發(fā)明的特定實(shí)現(xiàn)中,SQL生成要求選擇單個(gè)分級(jí)結(jié)構(gòu)。在塊2904中,接收引用事實(shí)和一個(gè)或多個(gè)維元數(shù)據(jù)對(duì)象的立方體模型元數(shù)據(jù)對(duì)象的立方體模型描述,并且從該立方體模型描述生成立方體模型元數(shù)據(jù)對(duì)象。在塊2906中,接收立方體模型元數(shù)據(jù)對(duì)象的子集的選擇。在塊2908中,根據(jù)該選擇來(lái)生成立方體元數(shù)據(jù)對(duì)象。另外,從一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象中的元數(shù)據(jù)生成用于創(chuàng)建立方體視圖的SQL語(yǔ)句。SQL語(yǔ)句的生成還可以使用其它元數(shù)據(jù)對(duì)象(例如,分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象)中的其它元數(shù)據(jù)。
具體地說(shuō),SQL語(yǔ)句的生成可以從分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象中的元數(shù)據(jù)生成一個(gè)或多個(gè)ROLLUP操作符。ROLLUP操作符,GROUP BY子句的擴(kuò)展,基于列的列表而生成多個(gè)小計(jì)編組子句。編組子句使用來(lái)自分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象的信息來(lái)生成。就OLAP而言,這在給定維中具有分級(jí)結(jié)構(gòu)計(jì)算的相同效果??紤]諸如位置的維,其具有由國(guó)家、州和城市組成的分級(jí)結(jié)構(gòu)。ROLLUP(country,state,city)子句生成表示該分級(jí)結(jié)構(gòu)的計(jì)算的編組子句。n個(gè)元素(c1,c2,...,cn-1,cn)的ROLLUP的一般規(guī)定等同于下面編組子句
(c1,c2,...,cn-1,cn)
(c1,c2,...,cn-1)
...
(c1,c2)
(c1)
注意,ROLLUP子句中的n個(gè)元素翻譯成(n+1)個(gè)編組子句。OLAP應(yīng)用可以具有多維(例如,在維元數(shù)據(jù)對(duì)象中定義)。用于每維的ROLLUP以關(guān)系方式返回表示OLAP立方體的結(jié)果。在單個(gè)語(yǔ)句中組合多于一個(gè)ROLLUP操作符產(chǎn)生為每個(gè)ROLLUP生成的編組子句的笛卡爾乘積。例如,在單個(gè)語(yǔ)句中組合下面ROLLUP操作符對(duì)ROLLUP(country,state)、ROLLUP(year,month)導(dǎo)致生成下面編組子句,其是構(gòu)成立方體的編組子句的集合
(國(guó)家,州,年,月)
(國(guó)家,州,年)
(國(guó)家,州)
(國(guó)家,年,月)
(國(guó)家,年)
(國(guó)家)
(年,月)
(年)
()
使用ROLLUP操作符的查詢(xún)?cè)趩蝹€(gè)結(jié)果集中包括所有生成的編組子句。因此,結(jié)果集包括所有編組子句列加上聚合列的聯(lián)合。為了組合不同編組集的結(jié)果,在給定行不是成員的任何編組列中返回空(null),如下面例子所示。對(duì)于單維的ROLLUP查詢(xún)的結(jié)果,參見(jiàn)表18。生成包括ROLLUP操作符的SELECT語(yǔ)句。例如,在下面SELECT語(yǔ)句中,從度量元數(shù)據(jù)對(duì)象生成“sum”操作符,并且從連接元數(shù)據(jù)對(duì)象生成連接。
SELECT country,state,sum(amt)AS revenue
FROM fact f,location l
WHERE f,lid=l.lid
GROUP BY ROLLUP(country,state)
表18
在表18的例子中,以州列中的空(以短劃線(xiàn)示出)表示具有美國(guó)的聚合收益的行。以國(guó)家和州列中的空表示具有所有國(guó)家和州的聚合收益的行。
雖然圖29A描述了使用度量元數(shù)據(jù)對(duì)象來(lái)生成立方體視圖,但是在另外的實(shí)現(xiàn)中,可以在不創(chuàng)建立方體視圖的情況下使用度量元數(shù)據(jù)對(duì)象。也就是,立方體視圖是使用度量元數(shù)據(jù)對(duì)象的定義以便規(guī)定計(jì)算的一種方式。使用度量元數(shù)據(jù)對(duì)象的定義的另一種方式是讓?xiě)?yīng)用讀取度量定義和立方體模型元數(shù)據(jù),并且從這些度量定義和立方體模型元數(shù)據(jù)直接生成SQL語(yǔ)句。
圖29B示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的用于從一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象和立方體模型元數(shù)據(jù)對(duì)象生成SQL語(yǔ)句的邏輯。控制在塊2910中以這樣的操作開(kāi)始接收一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象中的每一個(gè)的度量描述,并且基于這些度量描述而生成該一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象,例如圖22-28所示的度量元數(shù)據(jù)對(duì)象中的一個(gè)。在塊2912中,接收引用所有度量元數(shù)據(jù)對(duì)象的事實(shí)元數(shù)據(jù)對(duì)象的事實(shí)描述,并且從該事實(shí)描述生成事實(shí)元數(shù)據(jù)對(duì)象。另外,該事實(shí)描述引用屬性元數(shù)據(jù)對(duì)象和連接元數(shù)據(jù)對(duì)象。在塊2913中,接收一個(gè)或多個(gè)維元數(shù)據(jù)對(duì)象中的每一個(gè)的維描述,并且從這些維描述生成該一個(gè)或多個(gè)維元數(shù)據(jù)對(duì)象。該維描述引用一個(gè)或多個(gè)屬性元數(shù)據(jù)對(duì)象、零個(gè)或更多個(gè)連接元數(shù)據(jù)對(duì)象、以及一個(gè)或多個(gè)分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象。每個(gè)分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象包括用來(lái)構(gòu)建ROLLUP子句的信息。具體地說(shuō),立方體模型元數(shù)據(jù)對(duì)象可以引用若干可能的分級(jí)結(jié)構(gòu),但是在本發(fā)明的特定實(shí)現(xiàn)中,SQL生成要求選擇單個(gè)分級(jí)結(jié)構(gòu)。在塊2914中,接收引用事實(shí)和一個(gè)或多個(gè)維元數(shù)據(jù)對(duì)象的立方體模型元數(shù)據(jù)對(duì)象的立方體模型描述,并且從該立方體模型描述生成立方體模型元數(shù)據(jù)對(duì)象。在塊2916中,由應(yīng)用程序?qū)α⒎襟w模型元數(shù)據(jù)對(duì)象的子集進(jìn)行選擇。在塊2918中,在該應(yīng)用程序的控制之下,使用該立方體模型元數(shù)據(jù)對(duì)象和一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象,生成用來(lái)檢索多維信息的SQL語(yǔ)句。SQL語(yǔ)句的生成還可以使用其它元數(shù)據(jù)對(duì)象(例如,分級(jí)結(jié)構(gòu)元數(shù)據(jù)對(duì)象)中的其它元數(shù)據(jù)。
多維元數(shù)據(jù)軟件120解決采用單個(gè)SQL語(yǔ)句計(jì)算多個(gè)度量中的關(guān)鍵問(wèn)題(即度量的對(duì)稱(chēng)性、所涉及聚合函數(shù)的分布性、以及維在聚合腳本中出現(xiàn)的次序)。另外,多維元數(shù)據(jù)軟件120處理各種查詢(xún)類(lèi)型(例如,總計(jì)查詢(xún)、基于切片(Slice)的查詢(xún)、以及完整立方體查詢(xún))。在總計(jì)切片中,僅返回所有維的總計(jì)。切片是子立方體,而完整立方體是整個(gè)立方體。
度量被表示為度量元數(shù)據(jù)對(duì)象。當(dāng)在單個(gè)SQL語(yǔ)句中要計(jì)算多個(gè)度量時(shí),本發(fā)明的實(shí)現(xiàn)確定這些度量是否兼容。兼容度量對(duì)于它們引用的維具有相同的聚合次序規(guī)定。如果一組度量是不兼容的,則本發(fā)明確定至少一種方式來(lái)計(jì)算要在單個(gè)SQL語(yǔ)句中組合的不兼容度量。在特定實(shí)現(xiàn)中,可以使用JOIN操作(也被稱(chēng)作“連接”)來(lái)組合不兼容的度量,并且該處理在圖29C中作進(jìn)一步的描述。在特定實(shí)現(xiàn)中,可以通過(guò)重構(gòu)(restructure)聚合步驟使得它們兼容(也被稱(chēng)作“嵌套”)來(lái)組合不兼容的度量,并且該處理在圖29D中作進(jìn)一步的描述。在特定實(shí)現(xiàn)中,實(shí)現(xiàn)連接和嵌套的混合形式,其中連接一些度量集,并且嵌套一些度量集。
圖29C示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的用于組合度量的邏輯的進(jìn)一步詳情。圖29C的處理示出了用來(lái)生成用于計(jì)算所有度量的單個(gè)SQL語(yǔ)句的最高級(jí)邏輯。本發(fā)明的實(shí)現(xiàn)試圖生成最少數(shù)目的兼容度量集。另外,當(dāng)多個(gè)集合不可避免時(shí),由于度量不兼容性,因此優(yōu)選的集合組合是這樣的組合,其具有對(duì)稱(chēng)度量集,所有對(duì)稱(chēng)度量位于其中。
在圖29C中,控制在塊2940中以訪(fǎng)問(wèn)度量集開(kāi)始。度量集包括一個(gè)或多個(gè)度量。通過(guò)引用一個(gè)或多個(gè)元數(shù)據(jù)對(duì)象來(lái)訪(fǎng)問(wèn)這些度量。在塊2942中,將該一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象中的度量集分成對(duì)稱(chēng)度量集和非對(duì)稱(chēng)度量集。對(duì)稱(chēng)度量具有單個(gè)聚合操作符,并且不規(guī)定任何特定的聚合次序。在很多應(yīng)用中,這樣的度量是常見(jiàn)的。所有對(duì)稱(chēng)度量是兼容的??梢酝ㄟ^(guò)使用每維的ROLLUP操作符來(lái)生成用來(lái)計(jì)算所有對(duì)稱(chēng)度量的單個(gè)SQL語(yǔ)句。例如,在前面例子中使用的Revenue、Cost和Product度量是對(duì)稱(chēng)的。一些度量元數(shù)據(jù)對(duì)象可以引用一個(gè)或多個(gè)其它度量。例如,Profit Margin度量引用Profit和Revenue度量,其引用Income(收入)和Expense(開(kāi)支)度量。由于Income和Expense度量是對(duì)稱(chēng)的,因此Profit Margin度量在對(duì)稱(chēng)度量集中。在塊2944中,為對(duì)稱(chēng)度量集生成SQL語(yǔ)句。在塊2945中,為非對(duì)稱(chēng)度量集生成SQL語(yǔ)句??梢元?dú)立地和同時(shí)地或者以任何次序處理對(duì)稱(chēng)和非對(duì)稱(chēng)度量集。在塊2946中,組合對(duì)稱(chēng)度量集的SQL語(yǔ)句和非對(duì)稱(chēng)度量集的SQL語(yǔ)句,以形成用于檢索多維信息的單個(gè)SQL語(yǔ)句。用來(lái)組合這兩個(gè)語(yǔ)句的技術(shù)取決于非對(duì)稱(chēng)度量集的性質(zhì)。當(dāng)可以從公共的對(duì)稱(chēng)子立方體計(jì)算非對(duì)稱(chēng)集中的一些度量時(shí),可以使用嵌套來(lái)通過(guò)將對(duì)稱(chēng)計(jì)算改寫(xiě)為基于公共對(duì)稱(chēng)子立方體的計(jì)算而構(gòu)建的嵌套計(jì)算來(lái)組合這些度量和對(duì)稱(chēng)度量的計(jì)算。如果非對(duì)稱(chēng)集的任何度量要求以特定次序聚合多個(gè)維(即幾乎沒(méi)有或沒(méi)有對(duì)稱(chēng)性)或者為立方體的多個(gè)維規(guī)定沖突的計(jì)算次序,則將這些非對(duì)稱(chēng)度量劃分成共享相同計(jì)算次序的子集,并且生成通過(guò)內(nèi)部連接而組合它們的SQL語(yǔ)句。然后,通過(guò)內(nèi)部連接將這些不能通過(guò)嵌套而解析的具有不兼容性的非對(duì)稱(chēng)度量與對(duì)稱(chēng)度量和能夠通過(guò)嵌套與對(duì)稱(chēng)度量組合的任何非對(duì)稱(chēng)度量進(jìn)行組合。
圖29D示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的用于使用嵌套來(lái)組合不兼容的度量的邏輯的進(jìn)一步詳情。控制在塊2950中以訪(fǎng)問(wèn)度量集開(kāi)始。在塊2952中,以一個(gè)度量開(kāi)始(例如,第一度量),選擇該度量集中的下一個(gè)度量。在塊2954中,確定該度量是否與前面的度量兼容。對(duì)于被處理的第一度量,該確定是該度量兼容(因?yàn)閷?duì)于第一度量,不存在前面度量)。如果該度量兼容,則處理繼續(xù)到塊2960,否則處理繼續(xù)到塊2956。在塊2956中,確定是否可以改寫(xiě)一個(gè)或多個(gè)度量,使得所選的度量與前面的度量兼容。如果可以改寫(xiě)一個(gè)或多個(gè)度量,則處理繼續(xù)到塊2958,否則,處理繼續(xù)到塊2964。在塊2958中,改寫(xiě)一個(gè)或多個(gè)度量。然后,確定是否存在要被處理的另一個(gè)度量。如果是,則處理循環(huán)回到塊2952,否則處理繼續(xù)到塊2962。在塊2962中,處理改寫(xiě)后的度量,以生成用于檢索多維信息的SQL語(yǔ)句。如果所選度量與前面度量不兼容并且不能被改寫(xiě),則在塊2964中,通過(guò)參照?qǐng)D29C所述的技術(shù)連接這些度量。
圖29E示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的為對(duì)稱(chēng)度量集和非對(duì)稱(chēng)度量集生成SQL語(yǔ)句的邏輯(塊2944、2945)的進(jìn)一步詳情??刂圃趬K2970中以這樣的操作開(kāi)始將度量元數(shù)據(jù)對(duì)象中的一個(gè)或多個(gè)SQL表達(dá)式模板的表達(dá)式輸入到在度量元數(shù)據(jù)對(duì)象中定義的聚合列表中的第一聚合。在塊2972中,以一個(gè)聚合(例如,第一聚合)開(kāi)始,處理下一個(gè)聚合。處理聚合的結(jié)果是SQL語(yǔ)句。如果該度量包含多個(gè)聚合,則使用由第一聚合產(chǎn)生的SQL語(yǔ)句作為下一個(gè)聚合的輸入。這被稱(chēng)作嵌套SQL語(yǔ)句。在塊2974中,確定聚合列表中是否存在要處理的另外聚合。如果是,則處理循環(huán)回到塊2972,并且將前面聚合的處理輸出輸入到下一個(gè)聚合中。否則,處理繼續(xù)到塊2976。在塊2976中,輸出檢索多維信息的結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句。在特定實(shí)現(xiàn)中,可以將SQL語(yǔ)句編目(catalogue)為立方體視圖,并且由立方體元數(shù)據(jù)對(duì)象引用。
就計(jì)算多個(gè)度量而言,由多維元數(shù)據(jù)軟件120解決度量的對(duì)稱(chēng)性、所涉及聚合函數(shù)的分布性以及維出現(xiàn)在聚合腳本中的次序。
關(guān)于對(duì)稱(chēng)性,對(duì)稱(chēng)度量在聚合列表中定義單個(gè)聚合,而非對(duì)稱(chēng)度量在聚合列表中定義多個(gè)聚合。當(dāng)度量沒(méi)有定義聚合時(shí),則對(duì)稱(chēng)性由基本度量定義。在這一情形下,如果所有其基本度量是對(duì)稱(chēng)的,則度量是對(duì)稱(chēng)的,而如果任何其基本度量是非對(duì)稱(chēng)的,則度量是非對(duì)稱(chēng)的。圖30示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的表D 3000,其列出一些度量并且表示哪些度量是對(duì)稱(chēng)的或者非對(duì)稱(chēng)的。例如,Cost度量3002是對(duì)稱(chēng)的,而Inventory度量3004是非對(duì)稱(chēng)的。表D 3000沒(méi)有提供度量的詳盡列表,并且其它度量也可以被定義為對(duì)稱(chēng)或非對(duì)稱(chēng)。
關(guān)于分布性(distributiveness),當(dāng)聚合函數(shù)可被分解成多個(gè)聚合步驟而不改變?cè)摼酆虾瘮?shù)的結(jié)果時(shí),該聚合函數(shù)是分布式的(distributive)。例如,對(duì)于SUM,其是分布式的單個(gè)聚合步驟=SUM(2,8,11)=21,并且該單個(gè)聚合步驟可以分成兩個(gè)聚合步驟,例如聚合步驟1具有步驟1a=SUM(2,8)和步驟1b=SUM(11);以及聚合步驟2=SUM(step1a,step1b)=SUM(10,11)=21。這示出了SUM是分布式函數(shù),因?yàn)楫?dāng)單個(gè)步驟被分開(kāi)時(shí),其結(jié)果沒(méi)有改變。當(dāng)聚合函數(shù)不能在不改變聚合函數(shù)的結(jié)果的情況下分成多個(gè)聚合步驟時(shí),該聚合函數(shù)是非分布式的。例如,平均(AVG)、標(biāo)準(zhǔn)偏差(STDDEV)和相關(guān)(CORRELATION)是非分布式的(non-distributive)。例如,對(duì)于AVG單個(gè)聚合步驟=AVG(2,8,11)=7,并且該單個(gè)聚合步驟可以分成兩個(gè)聚合步驟,例如聚合步驟1具有步驟1a=AVG(2,8)和步驟1b=AVG(11);以及聚合步驟2=AVG(step1a,step1b)=AVG(5,11)=8。這示出了該平均是非分布式度量,因?yàn)楫?dāng)單個(gè)聚合步驟被分開(kāi)時(shí),其結(jié)果可能改變。
圖31示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的表E,其列出一些聚合函數(shù),并且表示哪些聚合函數(shù)是分布式的以及哪些是非分布式的。例如,SUM聚合函數(shù)3102是分布式的,而AVG 3104和CORRELATION 3106聚合函數(shù)是非分布式的。表E沒(méi)有提供聚合函數(shù)的詳盡列表,并且其它聚合函數(shù)可以被分類(lèi)為分布式或非分布式。
關(guān)于維在聚合腳本中出現(xiàn)的次序,理想的是,讓事實(shí)表的所有度量使用相同數(shù)目的聚合步驟,并且讓每個(gè)聚合步驟計(jì)算相同的維集。如果兩個(gè)聚合步驟使用相同的聚合函數(shù),則可以組合這兩個(gè)聚合步驟。另外,如果兩個(gè)聚合函數(shù)是分布式的,則可以將該聚合步驟分成兩個(gè)或更多個(gè)聚合步驟。圖32示出了根據(jù)本發(fā)明特定實(shí)現(xiàn)的表F 3200,其列出多個(gè)度量,以及如何可將聚合步驟分解成用于這些度量的多個(gè)聚合步驟。在表D 3200中,帶星號(hào)的數(shù)表示計(jì)算度量的可選方式。例如,對(duì)于Cost度量3202,第一選項(xiàng)是產(chǎn)品、市場(chǎng)和時(shí)間維之和,而第二選項(xiàng)是首先執(zhí)行產(chǎn)品和市場(chǎng)維之和,然后加入時(shí)間維。
B.4為對(duì)稱(chēng)度量集生成SQL語(yǔ)句
多維元數(shù)據(jù)軟件120為對(duì)稱(chēng)度量生成SQL語(yǔ)句。為易于理解起見(jiàn),在這一章節(jié)中提供了已經(jīng)為一些對(duì)稱(chēng)度量生成的SQL語(yǔ)句。例如,可以在報(bào)告中存儲(chǔ)執(zhí)行為總計(jì)(Grand Total)查詢(xún)或任意切片(Arbitrary Slice)查詢(xún)生成的SQL語(yǔ)句的結(jié)果。然而,執(zhí)行為完整立方體查詢(xún)生成的SQL語(yǔ)句的結(jié)果是本身可被查詢(xún)的立方體視圖。
對(duì)于所有類(lèi)型的查詢(xún),為每個(gè)度量生成SQL表達(dá)式遵循圖29E所述的流程。
例如,對(duì)于具有對(duì)稱(chēng)度量的總計(jì)查詢(xún),多維元數(shù)據(jù)軟件120可以生成以下Select語(yǔ)句
select SUM(f.Cost)as Cost,SUM(f.Rev)as Revenue,SUM(f.Rev-
f.Cost)as Profit,
SUM(f.Revenue-f.Cost)/SUM(f.Rev)as″Profit Margin″,
RANK () OVER(ORDER BY SUM(f.Rev-f.Cost))as″Profit Rank″,
CORRELATION(f.Revenue,f.Revenue-f.Cost)as″RevProfit
Correlation″from Fact f
對(duì)于具有對(duì)稱(chēng)度量的任意切片查詢(xún),多維元數(shù)據(jù)軟件120可以生成以下Select語(yǔ)句
  select SUM(f.Cost)as Cost,SUM(f.Rev)as Revenue,SUM(f.Rev-  f.Cost)as Profit,  SUM(f.Revenue-f.Cost)/SUM(f.Rev)as″Profit Margin″,  RANK () OVER(ORDER BY SUM(f.Rev-f.Cost))as″Profit Rank″,  CORRELATION(f.Revenue,f.Revenue-f.Cost)as″RevProfit  Correlation″,  m.Country,m.State,t.Year  from Fact f,Market m,Timet  where f.marketid=m.marketid AND f.timeid=t.timeid  group by m.Country,m.State,t.Year
對(duì)于具有對(duì)稱(chēng)度量的完整立方體查詢(xún),多維元數(shù)據(jù)軟件120可以生成以下Select語(yǔ)句
  select SUM(f.Cost)as Cost,SUM(f.Rev)as Revenue,SUM(f.Rev-  f.Cost)as Profit,  SUM(f.Revenue-f.Cost)/SUM(f.Rev)as″Profit Margin″,  RANK () OVER(ORDER BY SUM(f.Rev-f.Cost))as″Profit Rank″,  CORRELATION(f.Revenue,f.Revenue-f.Cost)as″RevProfit  Correlation″,  m.Country,m.State,m.Citty,  t.Year,t.Quarter,t.Month,  p.Line,p.Group,p.Product,  from Fact f,Market m,Time t,Product p  where f.marketid=m.marketid AND f.timeid=t.timeid AND f.prodid=  p.prodid  group by ROLLUP(m.Country,m.State,m.City),   ROLLUP(t.Year,t.Quarter,t.Month),   ROLLUP(p.Line,p.Group,p.Product)
B.5為非對(duì)稱(chēng)度量集生成SQL語(yǔ)句
多維元數(shù)據(jù)軟件120為非對(duì)稱(chēng)度量生成SQL語(yǔ)句。為易于理解起見(jiàn),在這一章節(jié)中提供了已經(jīng)為一些非對(duì)稱(chēng)度量生成的SQL語(yǔ)句。例如可以在報(bào)告中存儲(chǔ)執(zhí)行為總計(jì)查詢(xún)或任意切片查詢(xún)生成的SQL語(yǔ)句的結(jié)果。然而,執(zhí)行為完整立方體查詢(xún)生成的SQL語(yǔ)句的結(jié)果是本身可被查詢(xún)的立方體視圖。
通過(guò)使用嵌套SELECT語(yǔ)句來(lái)計(jì)算非對(duì)稱(chēng)度量集。每一個(gè)聚合步驟映射到在SELECT中嵌套的級(jí)別。在SELECT的最內(nèi)嵌套級(jí)別計(jì)算第一聚合步驟,如在圖29E的塊2970中所述。使用每個(gè)級(jí)別的結(jié)果作為對(duì)直接外部嵌套SELECT的輸入,如在圖29E的塊2972中所述。在這些級(jí)別的每一個(gè)中,對(duì)于尚未被計(jì)算且未被期望在給定級(jí)別中計(jì)算的維,在GROUP BY子句中包括粒度最小(最詳細(xì))的維屬性。以這種方式,對(duì)于那些維,不發(fā)生聚合。關(guān)于聚合函數(shù),每個(gè)級(jí)別具有以直接內(nèi)部級(jí)別中的度量結(jié)果作為輸入的聚合函數(shù)。對(duì)于最低級(jí)別,聚合函數(shù)的輸入是在度量中定義的SQL表達(dá)式,如在圖29E的塊2970中所述。
例如,對(duì)于具有非對(duì)稱(chēng)度量的總計(jì)查詢(xún),多維元數(shù)據(jù)軟件120可以生成以下Select語(yǔ)句
select AVG(s.Inventory)as Inventory
from(select SUM(f.Inv)as Inventory,f.timeid
from Fact f
group by f.timeid)s
對(duì)于具有非對(duì)稱(chēng)度量的任意切片查詢(xún),多維元數(shù)據(jù)軟件120可以生成以下Select語(yǔ)句
  select AVG(s.Inventory)as Inventory,  s.Country,s.State,s.Year  from(select SUM(f.Inv)as Inventory,  F.timeid,  m.Country,m.State,t.Year  from Fact f,Market m,Time t  where f.marketid=m.marketid AND f.timeid=t.timeid  group by f.timeid,m.Country,m.State,t.Year)s  group by s.Country,s.State,s.Year<br/>
對(duì)于具有非對(duì)稱(chēng)度量的完整立方體查詢(xún),多維元數(shù)據(jù)軟件120可以生成以下Select語(yǔ)句
  select AVG(s.Inventory)as Inventory,  s.Year,s.Quarter,s.Month,  s.Country,s.State,s.CiTY,  s.Line,s.Group,s.Product  from(select SUM(f.Inv)as Inventory,f.timeid,m.Country,  m.State,m.Cittv,  t.Year,t.Quarter,t.Month,p.Line,p.Group,p.Product  from Fact f,Market m,Time t,Product p<!-- SIPO <DP n="55"> --><dp n="d55"/>  where f.marketid=m.marketid AND f.timeid=t.timeid AND  f.prodid=p.prodid  group by f.timeid,t.Year,t.Quarter,t.Month,  ROLLUP(m.Country,m.State,m.City),  ROLLUP(p.Line,p.Group,p.Product))s  group by ROLLUP(s.Year,s.Quarter,s.Month),  s.Country,s.State,s.City,s.Line,s.Group,s.Product
B.6為不兼容的度量集生成SQL語(yǔ)句
這一章節(jié)描述如何將為多個(gè)度量集(例如,對(duì)稱(chēng)和非對(duì)稱(chēng)度量集)生成的多個(gè)SQL語(yǔ)句組合成單個(gè)SQL語(yǔ)句。
在表F的例子中,不可能找到維集的公共集。存在兩個(gè)選項(xiàng)來(lái)計(jì)算所有(即對(duì)稱(chēng)和非對(duì)稱(chēng))度量。每個(gè)選項(xiàng)創(chuàng)建兩個(gè)單獨(dú)的SQL查詢(xún),并且將它們合并在一起。例如,第一選項(xiàng)是獲得(take)所有維(“AlIDim”)的Cost、Revenue、Profit、Profit Margin、Profit Rank和RevProfitCorrelation、以及AllbutTime(除了時(shí)間的所有維)、Time的Inventory。例如,第二選項(xiàng)是獲得所有維(“AlIDim”)的RevProfitCorrelation,以及AllbutTime、Time的Inventory、Cost、Revenue、Profit、Profit Margin、Profit Rank。
當(dāng)為相同的切片或立方體生成這些SQL語(yǔ)句時(shí),為對(duì)稱(chēng)和非對(duì)稱(chēng)度量集生成的多個(gè)SQL語(yǔ)句共享相同的屬性集。因此,屬性實(shí)例在所有SQL語(yǔ)句中都將是相同的。組合不同度量集的SQL語(yǔ)句的技術(shù)包括連接兩個(gè)SQL語(yǔ)句的結(jié)果。也就是,通過(guò)用內(nèi)部連接(INNER JOIN)連接為每個(gè)度量集生成的SQL語(yǔ)句,將它們連接成單個(gè)SQL語(yǔ)句。在特定實(shí)現(xiàn)中,所使用的連接類(lèi)型是對(duì)在SQL語(yǔ)句的GROUP BY子句中使用的屬性的內(nèi)部連接。
在多個(gè)SQL語(yǔ)句之間的內(nèi)部連接中使用的子句取決于正被組合的SQL語(yǔ)句的類(lèi)型(即,基于切片的相對(duì)于完整立方體)。對(duì)于基于切片的SQL語(yǔ)句,在內(nèi)部連接中使用的子句將使用該切片中的所有屬性的簡(jiǎn)單與(ANDed)等式。下面是針對(duì)第一選項(xiàng)由多維元數(shù)據(jù)軟件120生成的基于切片的SQL語(yǔ)句
  select r1.Inventory,r2.Cost,r2.Revenue,r2.profit,   r2.Margin,   r2.″profit  Rank″,r2.″RevProfit Correlation″,  r1.Country,r1.State,r1.Year  (select AVG(s.Inventory)as Inventory,  s.Countrv,s.State,s.Year  from(select SUM(f.Inv)as Inventory,  f.timeid,m.Country,m.State,t.Year  from Fact f,Market m,Time  where f.marketid=m.marketid AND f.timeid=t.timeid  group by f.timeid,m.Country,m.State,t.Year)s  group by s.Country,s.State,s.Year)r1  INNER JOIN  (select SUM(f.Cost)as Cost,SUM(f.Rev)as Revenue,  SUM(f.Rev  -f.Cost)as profit  SUM(f.Revenue-f.Cost)/SUM(f.Rev)as Margin,  RANK () OVER(ORDER BY SUM(f.Rev-f.cost))as″Profit Rank″,  CORRELATION(f.Revenue,f.Revenue-f.Cost)as″RevProfit  Correlation″,  m.Country,m.State,t.Tear from Fact f,Market m,Time t  where f.marketid=m.marketid AND f.timeid=t.timeid  group by m.Country,m.State,t.Year)r2  ON r1.Country=r2.Country AND r1.State=r2.State AND   R1.Year=  r2.Year
在總計(jì)切片中,僅返回所有維的總計(jì)。如果正被查詢(xún)的切片是總計(jì)切片,則沒(méi)有正被編組的屬性,因此,在連接子句中使用暫時(shí)常量屬性(transient constant attribute)。暫時(shí)常量屬性與Grand Total(總計(jì))列相關(guān)聯(lián),并且描述是否為給定屬性保存了聚合。下面是針對(duì)第一選項(xiàng)由多維元數(shù)據(jù)軟件120生成的總計(jì)切片SQL語(yǔ)句
  select r1.Inventory,  r2.Cost,r2.Revenue,r2.profit,r2.Margin,r2.″profit Rank″,   r2.″RevProfit  Correlation″  (select AVG(s.Inventory)as Inventory,l as GrandTotal  from(select SUM(f.Inv)as Inventory,f.timeid  from Fact f  group by f.timeid)s  )r1  INNER JOIN  (select SUM(f.Cost)as Cost,SUM(f.Rev)as Revenue,SUM(f.Rev-  f.Cost)as profit,  SUM(f.Revenue-f.Cost)/SUM(f.Rev)as″Profit Margin″,  RANK () OVER(ORDER BY SUM(f.Rev-f.cost))as″Profit Rank″,  CORRELATION(f.Revenue,f.Revenue-f.Cost)as″RevProfit  Correlation″,  1 as GrandTotal  from Fact f)r2  ON r1.GrandTotal=r2.GrandTotal
對(duì)于完整立方體類(lèi)型的SQL語(yǔ)句,連接子句還考慮屬性實(shí)例也將包含聚合表示這一事實(shí)。由于此原因,將暫時(shí)屬性添加到正被組合的基本SQL語(yǔ)句。這些新的暫時(shí)常量屬性描述是否為給定屬性保存了聚合。然后,當(dāng)屬性實(shí)例包含特定成員或者包含聚合時(shí),連接子句連接這些屬性實(shí)例。下面是針對(duì)第一選項(xiàng)由多維元數(shù)據(jù)軟件120生成的基于立方體的SQL語(yǔ)句,其示出了使用以AGG(即聚合)為后綴的暫時(shí)常量屬性
  select r1.Inventory,r2.Cost,r2.Revenue,r2.profit,  r2.Margin,  r2.″profit  Rank″,r2.″RevProfit Correlation″,  r1.Year,r1.Quarter,r1.Month,r1.Country,r1.state,r1.City,   r1.Line,  r1.Group,r1.Product  (select AVG(s.Inventory)as Inventory,s.Year,s.Quarter,   s.Month,  s.Country,s.State,s.City,s.Line,s.Group,s.Product,  GROUPING(s.Year)as YearAgg,GROUPING(s.Quarter)as  QuarterAgg,GROUPING(s.Month)as MonthAgg,  s.CountryAgg,s.StateAgg,s.CityAgg,s.LineAgg,s.GroupAgg,  s.ProductAgg  from(select SUMM(f.Inv)as Inventory,f.imeid,t.Year,   t.Quarter,  t.Month,m.Country,m.State,m.City,p.Line,p.Group,   p.Product,  GROUPING(m.Country)as CountryAgg,GROUPING(m.State)as   StateAgg,  GROUPING(m.City)as CityAgg,  GROUPING(p.Line)as LineAgg,GROUPING(p.Group)as GroupAgg,  GROUPING(p.Product)as ProductAgg   from Fact f,Market m,Time t,Product p   where f.Marketid=m.marketid AND f.timeid=  t.timeid AND  f.pordid=p.prodid  group by f.timeid,t.Year,t.Quarter,t.Month,<!-- SIPO <DP n="59"> --><dp n="d59"/>ROLLUP(m.Country,m.State,m.City),ROLLUP(p.Line,p.Group,p.Product))sgroup by ROLLUP(s.Year,s.Quarter,s.Month),s.Country,   s.State,s.City,s.Line,s.Group,s.Product,s.CountryAgg,s.StateAgg,s.CityAgg,s.LineAgg,s.GroupAgg,s.ProductAgg)r1INNER JOIN(select SUM(f.Cost)as Cost,SUM(f.Rev)as Revenue,   SUM(f.Rev-.Cost)as Profit,SUM(f.Revenue-f.Cost)/SUM(f.Rev)as″Profit Margin″,RANK () OVER(ORDER BY SUM(f.Rev-f.Cost))as″Profit Rank″,  CORRELATION(f.Revenue,f.Revenue-f.Cost)as   ″RevProfitCorrelation″,  m.Country,m.State,m.City,t.Year,t.Quarter,   t.Month,p.Line,p.Group,p.Product,  GROUPING(m.Country)as CountryAgg,   GROUPING(m.State)as StateAgg,GROUPING(m.City)as CityAgg,  GROUPING(t.Year)as YearAgg,GROUPING(t.Quarter)   asQuarterAgg,GROUPING(t.Month)as MonthAgg,  GROUPING(p.Line)as LineAgg,GROUPING(p.Group)asGroupAgg,GROUPING(p.Product)as ProductAggFrom Fact f,Market m,Time t,Product pwhere f.marketid=m.marketid AND f.timeid=t.timeid AND<!-- SIPO <DP n="60"> --><dp n="d60"/>  f.prodid=  p.prodid  group by ROLLUP(m.Country,m.State,m.City),ROLLUP(t.Year,  t.Quarter,t.Month),ROLLUP(p.Line,p.Group,p.Product))r2  ON(r1.Country=r2.Country OR(r1.CountryAgg=1 AND  r2.CountryAgg=1))AND  (r1.State=r2.State OR(r1.StateAgg=1 AND  r2.StateAgg=1))  AND  (r1.City=r2.City OR(r1.CityAgg=1 AND r2.CityAgg=1))AND  (r1.Year=r2.Year OR(r1.YearAgg=1 AND r2.YearAgg=1))  AND  (r1.Quarter=r2.Quarter OR(r1.QuarterAgg=1 AND  r2.QuarterAgg=1))AND  (r1.Month=r2.Month OR(r1.MonthAgg=1 AND  r2.MonthAgg=1))  AND  (r1.Line=r2.Line OR(r1.LineAgg=1 AND r2.LineAgg=1))   AND  (r1.Group=r2.Group OR(r1.GroupAgg=1 AND r2.GroupAgg=1))  AND  (r1.Product=r2.Product OR(r1.ProductAgg=1 AND  r2.ProductAgg=1))
雖然上面例子示出了兩個(gè)度量集,但是本發(fā)明的實(shí)現(xiàn)可以組合多于兩個(gè)度量集。而且,雖然這里的例子涉及SQL語(yǔ)句,但是可用來(lái)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的其它語(yǔ)句也在本發(fā)明的范圍之內(nèi)。
在特定實(shí)現(xiàn)中,不是組合為多個(gè)度量集生成的SQL語(yǔ)句,而是重構(gòu)聚合集,使得它們是兼容的。例如,可以組合Sales和Inventory度量的計(jì)算。由于Sales度量對(duì)所有維使用SUM,而Inventory度量對(duì)除了時(shí)間之外的所有維使用SUM,因此Sales度量的計(jì)算可以分成兩個(gè)步驟。第一步驟是對(duì)除了時(shí)間之外的所有維的SUM,并且最后步驟是對(duì)時(shí)間的SUM(由于SUM是分布式的,因此這起作用)。Sales的這一計(jì)算次序現(xiàn)在與Inventory所需的步驟兼容。
IBM、DB2、Z/OS和AIX是國(guó)際商業(yè)機(jī)器公司在美國(guó)和/或其它國(guó)家的商標(biāo)。Windows是Microsoft公司在美國(guó)和/或其它國(guó)家的商標(biāo)。Solaris和JDBC是SUN Microsystems在美國(guó)和/或其它國(guó)家的商標(biāo)。Linux是Linus Torvalds在美國(guó)和/或其它國(guó)家的商標(biāo)。HP-UX是在美國(guó)和/或其它國(guó)家的Open Group UNIX 95有商標(biāo)產(chǎn)品。Pilot Suite是Pilot Software在美國(guó)和/或其它國(guó)家的商標(biāo)。Express是Oracle公司在美國(guó)和/或其它國(guó)家的商標(biāo)。Essbase是Hyperion Solution公司在美國(guó)和/或其它國(guó)家的商標(biāo)。TM1是Applix公司在美國(guó)和/或其它國(guó)家的商標(biāo)。
另外的實(shí)現(xiàn)細(xì)節(jié)
所述的用于維護(hù)關(guān)于網(wǎng)絡(luò)組件的信息的技術(shù)可被實(shí)現(xiàn)為使用標(biāo)準(zhǔn)編程和/或工程技術(shù)以產(chǎn)生軟件、固件或其任意組合的方法、設(shè)備或產(chǎn)品。在此使用的術(shù)語(yǔ)“產(chǎn)品”是指在硬件邏輯電路(例如,集成電路芯片、可編程門(mén)陣列(PGA)、專(zhuān)用集成電路(ASIC)等等)或者計(jì)算機(jī)可讀介質(zhì)例如磁存儲(chǔ)介質(zhì)(例如,硬盤(pán)驅(qū)動(dòng)器、軟盤(pán)、磁帶等等)、光存儲(chǔ)裝置(CD-ROM、光盤(pán)等)、易失性和非易失性存儲(chǔ)器裝置(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、固件、可編程邏輯電路等等)中實(shí)現(xiàn)的代碼或邏輯。計(jì)算機(jī)可讀介質(zhì)中的代碼由處理器訪(fǎng)問(wèn)和執(zhí)行。其中實(shí)現(xiàn)了優(yōu)選實(shí)施例的代碼還可通過(guò)傳輸介質(zhì)或從網(wǎng)絡(luò)上的文件服務(wù)器訪(fǎng)問(wèn)。在這種情況下,其中實(shí)現(xiàn)了該代碼的產(chǎn)品可以包括傳輸介質(zhì)如網(wǎng)絡(luò)傳輸線(xiàn)、無(wú)線(xiàn)傳輸介質(zhì),通過(guò)空間傳播的信號(hào)、無(wú)線(xiàn)電波、紅外線(xiàn)信號(hào)等等。因此,該“產(chǎn)品”可以包括其中實(shí)施了代碼的介質(zhì)。另外,該“產(chǎn)品”可以包括在其中實(shí)施、處理和執(zhí)行代碼的硬件和軟件組件的組合。當(dāng)然,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到,在不脫離本發(fā)明范圍的情況下,可以對(duì)該配置進(jìn)行各種修改,并且該產(chǎn)品可以包括在本技術(shù)領(lǐng)域內(nèi)公知的任何信息承載介質(zhì)。
圖29A、29B、29C、29D和29E的邏輯描述了以特定次序發(fā)生的特定操作。在可選的實(shí)現(xiàn)中,可以以不同的次序執(zhí)行、修改或刪除某些邏輯操作。而且,可以向上述邏輯添加步驟,并且仍然遵循所述實(shí)現(xiàn)。此外,可以順序地發(fā)生在此描述的操作,或者可以并行處理某些操作,或者可以通過(guò)分布式過(guò)程執(zhí)行被描述成由單個(gè)過(guò)程執(zhí)行的操作。
圖29A、29B、29C、29D和29E的邏輯被描述成用軟件實(shí)現(xiàn)。該邏輯可以是主機(jī)系統(tǒng)的操作系統(tǒng)的一部分或者應(yīng)用程序。在另外的實(shí)現(xiàn)中,可以將該邏輯保持在存儲(chǔ)區(qū)或者只讀存儲(chǔ)器或者其它硬連線(xiàn)類(lèi)型的裝置中。優(yōu)選的邏輯可以用硬件或者可編程和不可編程門(mén)陣列邏輯電路實(shí)現(xiàn)。
圖33示出了計(jì)算機(jī)系統(tǒng)100的體系結(jié)構(gòu)的一種實(shí)現(xiàn)。計(jì)算機(jī)系統(tǒng)100可以實(shí)現(xiàn)具有處理器3302(例如,微處理器)、存儲(chǔ)器3304(例如,易失性存儲(chǔ)器裝置)和存儲(chǔ)裝置3306(例如,非易失性存儲(chǔ)區(qū),如磁盤(pán)驅(qū)動(dòng)器、光盤(pán)驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器等)的計(jì)算機(jī)體系結(jié)構(gòu)3300。存儲(chǔ)裝置3306可以包括內(nèi)部存儲(chǔ)裝置或附連或網(wǎng)絡(luò)可訪(fǎng)問(wèn)存儲(chǔ)裝置。以在本技術(shù)領(lǐng)域內(nèi)公知的方式將存儲(chǔ)裝置3306中的程序裝載到存儲(chǔ)器3304中,并且由處理器3302執(zhí)行。該體系結(jié)構(gòu)還包括用來(lái)支持與網(wǎng)絡(luò)的通信的網(wǎng)卡3308。輸入裝置3310用來(lái)向處理器3303提供用戶(hù)輸入,并且可包括鍵盤(pán)、鼠標(biāo)、輸入筆、麥克風(fēng)、觸摸式顯示屏或者在本技術(shù)領(lǐng)域內(nèi)公知的任何其它激活或輸入機(jī)制。輸出裝置3312能夠呈現(xiàn)從處理器3302或其它組件傳送的信息,例如顯示監(jiān)視器、打印機(jī)、存儲(chǔ)裝置等。
前面對(duì)本發(fā)明的優(yōu)選實(shí)現(xiàn)的描述是為了示例說(shuō)明和描述的目的而提供的。它并不旨在是詳盡的或者將本發(fā)明局限于所公開(kāi)的確切形式。根據(jù)上述教導(dǎo),各種修改和變更是可能的。
權(quán)利要求
1.一種用于規(guī)定多維計(jì)算的方法,包括
接收從事實(shí)元數(shù)據(jù)對(duì)象和一個(gè)或多個(gè)維元數(shù)據(jù)對(duì)象生成的立方體模型元數(shù)據(jù)對(duì)象的子集的選擇,其中事實(shí)元數(shù)據(jù)對(duì)象引用一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象;以及
使用立方體模型元數(shù)據(jù)對(duì)象和該一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象中的元數(shù)據(jù)生成用于檢索多維信息的語(yǔ)句,其中度量元數(shù)據(jù)對(duì)象的每一個(gè)規(guī)定一個(gè)或多個(gè)聚合。
2.如權(quán)利要求1所述的方法,其中該語(yǔ)句是結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句。
3.如權(quán)利要求1所述的方法,其中度量元數(shù)據(jù)對(duì)象的每一個(gè)規(guī)定一個(gè)或多個(gè)結(jié)構(gòu)化查詢(xún)語(yǔ)言表達(dá)式。
4.如權(quán)利要求3所述的方法,其中結(jié)構(gòu)化查詢(xún)語(yǔ)言表達(dá)式的每一個(gè)包括用于構(gòu)建查詢(xún)語(yǔ)言表達(dá)式的模板。
5.如權(quán)利要求4所述的方法,其中該模板使用從列、屬性和度量的列表中引用特定列、屬性或度量的標(biāo)記表示法。
6.如權(quán)利要求3所述的方法,其中結(jié)構(gòu)化查詢(xún)語(yǔ)言表達(dá)式的每一個(gè)包括列、屬性和度量的列表。
7.如權(quán)利要求1所述的方法,其中基于每一個(gè)度量元數(shù)據(jù)對(duì)象中所規(guī)定的一個(gè)或多個(gè)聚合而生成結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句。
8.如權(quán)利要求7所述的方法,其中聚合列表包括聚合函數(shù)和對(duì)應(yīng)的維集的列表。
9.一種用于規(guī)定多維計(jì)算的系統(tǒng),包括具有至少一個(gè)可編程組件以運(yùn)行至少一個(gè)用于以下操作的程序的計(jì)算機(jī)系統(tǒng)
接收從事實(shí)元數(shù)據(jù)對(duì)象和一個(gè)或多個(gè)維元數(shù)據(jù)對(duì)象生成的立方體模型元數(shù)據(jù)對(duì)象的子集的選擇,其中事實(shí)元數(shù)據(jù)對(duì)象引用一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象;以及
使用立方體模型元數(shù)據(jù)對(duì)象和該一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象中的元數(shù)據(jù)生成用于檢索多維信息的語(yǔ)句,其中度量元數(shù)據(jù)對(duì)象的每一個(gè)規(guī)定一個(gè)或多個(gè)聚合。
10.一種計(jì)算機(jī)程序,包括當(dāng)被裝載到計(jì)算機(jī)系統(tǒng)中并在其上執(zhí)行時(shí)使該計(jì)算機(jī)系統(tǒng)執(zhí)行如權(quán)利要求1至8中的任一項(xiàng)所述的方法的所有步驟的計(jì)算機(jī)程序代碼。
全文摘要
本發(fā)明公開(kāi)了一種用于規(guī)定多維計(jì)算的系統(tǒng)、方法和程序。接收從事實(shí)元數(shù)據(jù)對(duì)象和一個(gè)或多個(gè)維元數(shù)據(jù)對(duì)象生成的立方體模型元數(shù)據(jù)對(duì)象的子集的選擇。事實(shí)元數(shù)據(jù)對(duì)象引用一個(gè)或多個(gè)度量元數(shù)據(jù)對(duì)象。使用立方體模型元數(shù)據(jù)對(duì)象和度量元數(shù)據(jù)對(duì)象中的元數(shù)據(jù)生成用于檢索多維信息的語(yǔ)句,其中度量元數(shù)據(jù)對(duì)象的每一個(gè)規(guī)定一個(gè)或多個(gè)聚合。
文檔編號(hào)G06F17/30GK1726495SQ20038010645
公開(kāi)日2006年1月25日 申請(qǐng)日期2003年12月17日 優(yōu)先權(quán)日2003年1月13日
發(fā)明者內(nèi)森·格瓦爾德·克洛斯, 威廉·厄爾利·瑪洛伊, 米亞·哈米德·匹拉赫史, 克雷格·雷格納爾德·托姆林 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
天等县| 鄂托克旗| 清原| 崇仁县| 雷山县| 大理市| 沛县| 深圳市| 儋州市| 汶上县| 历史| 汪清县| 陇川县| 玛纳斯县| 西城区| 长白| 马鞍山市| 拜泉县| 榆林市| 石门县| 株洲县| 井陉县| 海门市| 连州市| 贵南县| 甘孜县| 丹凤县| 青阳县| 巨鹿县| 大关县| 郁南县| 塘沽区| 二手房| 花莲县| 兴文县| 丹巴县| 井冈山市| 海兴县| 塔河县| 吴忠市| 涿鹿县|