專利名稱::通過查詢優(yōu)化改進(jìn)分配性能的制作方法通過査詢優(yōu)化改進(jìn)分配性能背景商業(yè)應(yīng)用程序中的數(shù)據(jù)經(jīng)常是以電子表格的形式來查看的。電子表格可以被看作是"二維"數(shù)據(jù)數(shù)組。電子表格中的每個(gè)單元表示兩個(gè)相關(guān)實(shí)體或維度的值。例如,一個(gè)維度可以是時(shí)間,而相應(yīng)的交叉維度則可以是收入。然而,許多應(yīng)用程序可以具有含兩個(gè)以上維度的數(shù)據(jù)。具有兩個(gè)以上維度的商業(yè)數(shù)據(jù)被稱作多維數(shù)據(jù)。多維數(shù)據(jù)經(jīng)常被應(yīng)用于財(cái)務(wù)規(guī)劃、預(yù)算和預(yù)測應(yīng)用程序。在這種應(yīng)用程序中常用的維度的示例包括帳戶、時(shí)間、產(chǎn)品、商業(yè)單位、金融場景等。在這種多維數(shù)據(jù)空間內(nèi)的一條具體數(shù)據(jù)可以是(收入、2005年5月、服務(wù)、預(yù)算、1000),它表示如下事實(shí)即當(dāng)帳戶=收入、時(shí)間=2005年2月、商業(yè)單位=服務(wù)和金融場景=預(yù)算時(shí),數(shù)據(jù)值是1000。在規(guī)劃、預(yù)算和預(yù)測應(yīng)用程序中常用的計(jì)算是設(shè)置一高級目標(biāo),然后將其分解為支持該高級目標(biāo)的多個(gè)較低級目標(biāo)。這種類型的計(jì)算被稱作分配。例如,當(dāng)商業(yè)單位=服務(wù)且金融情況=預(yù)算時(shí),可以將2004年全年的收入目標(biāo)設(shè)為一千萬美元。該目標(biāo)隨后可以被分解為2004年12個(gè)月中每個(gè)月的收入目標(biāo)。用于執(zhí)行分配的一種方法是在諸如微軟SQL服務(wù)器分析服務(wù)多維數(shù)據(jù)集(MicrosoftSQLServerAnalysisServicecube)等OLAP(在線分析處理)模型中表示該多維數(shù)據(jù),生成對分配的多維表達(dá)式(MDX)査詢,然后在微軟SQL服務(wù)器分析服務(wù)引擎中執(zhí)行該査詢。SQL服務(wù)器分析服務(wù)引擎對于稀疏計(jì)算可能表現(xiàn)得較差一如果需要計(jì)算的數(shù)據(jù)點(diǎn)的數(shù)量較大,但大多數(shù)計(jì)算結(jié)果實(shí)際上是零時(shí),則將計(jì)算稱作稀疏。對于許多商業(yè)應(yīng)用程序,對分配所生成的MDX査詢往往是稀疏的。因此,在SQL服務(wù)器分析服務(wù)引擎上蠻力執(zhí)行這些查詢可能會導(dǎo)致較差的性能。概述通過優(yōu)化與分配相關(guān)聯(lián)的查詢來可增強(qiáng)分配性能。符號化分析一計(jì)算表達(dá)式,以建立非零計(jì)算結(jié)果與輸入數(shù)據(jù)中的非零數(shù)據(jù)行之間的關(guān)系。因此,可以從輸入數(shù)據(jù)的非零區(qū)域中確定計(jì)算結(jié)果的非零區(qū)域,從而能夠通過符號化地從該計(jì)算中消除零區(qū)域來減少計(jì)算復(fù)雜度。如此簡化的計(jì)算通常不再是稀疏的。提供本概述以便以簡化的方式介紹將在下面的詳細(xì)描述中進(jìn)一步描述的一些概念。本概述并不旨在標(biāo)識出所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。附圖簡述圖1示出了其中可以使用査詢優(yōu)化來執(zhí)行用于分配的應(yīng)用程序以增強(qiáng)性能的計(jì)算設(shè)備;圖2示出了其中可以實(shí)現(xiàn)分配應(yīng)用程序的各方面的示例性系統(tǒng);圖3是示出了示例性多維數(shù)據(jù)的符號(二維電子表格)和物理(表格)表示的概念圖4是示出了使用査詢優(yōu)化的分配的概念圖,其強(qiáng)調(diào)在二維數(shù)據(jù)存儲環(huán)境中將數(shù)據(jù)由稀疏空間轉(zhuǎn)換到密集空間;圖5示出了用于分配算法的示例性數(shù)據(jù)結(jié)構(gòu)的分層結(jié)構(gòu)及相應(yīng)的句法;圖6示出了用于在稀疏數(shù)據(jù)空間內(nèi)執(zhí)行分配的示例性蠻力算法及相應(yīng)的査詢優(yōu)化算法;以及圖7示出了用于通過優(yōu)化査詢在稀疏數(shù)據(jù)空間內(nèi)執(zhí)行分配的過程的邏輯流程圖。詳細(xì)描述現(xiàn)將參考在此形成一部分并以說明的方式示出了用于實(shí)施本發(fā)明的具體示例性實(shí)施例的附圖,在下文中更充分地描述本發(fā)明的實(shí)施例。然而,本發(fā)明可以用許多不同的方式來實(shí)現(xiàn),而不應(yīng)解釋為限于在此闡明的實(shí)施例;當(dāng)然,提供這些實(shí)施例以便使本發(fā)明將是全面和完整的,并且將向本領(lǐng)域的普通技術(shù)人員充分傳達(dá)其范圍。特別地,可以將本發(fā)明實(shí)現(xiàn)為方法或設(shè)備。因此,本發(fā)明可以采用全部為硬件實(shí)施例、全部為軟件實(shí)施例或者組合了軟件和硬件方面的實(shí)施例的形式。因此,不應(yīng)以限制的意義來考慮以下詳細(xì)描述。根據(jù)各實(shí)施例,提供了一種用于建立計(jì)算結(jié)果的非零區(qū)域和輸入數(shù)據(jù)的非零區(qū)域之間的關(guān)系的方法。使用該關(guān)系,可以從輸入數(shù)據(jù)的非零區(qū)域中確定計(jì)算結(jié)果的非零區(qū)域,因此可通過符號化地從計(jì)算中消除零區(qū)域來減少計(jì)算復(fù)雜度。該關(guān)系可使用以下三個(gè)步驟來建立。首先,檢査計(jì)算表達(dá)式以確定該表達(dá)式中的每一項(xiàng)是否均受至少一個(gè)元組表達(dá)式的支配。單元是多維空間中每個(gè)坐標(biāo)都被完整指定的點(diǎn),而元組則是該單元的部分坐標(biāo)的列表。元組表達(dá)式是表示元組的表達(dá)式。如果一個(gè)項(xiàng)在元組表達(dá)式變?yōu)榱銜r(shí)也變?yōu)榱悖瑒t該項(xiàng)受該元組表達(dá)式的支配。接著,對于計(jì)算中的每個(gè)元組表達(dá)式,找出在該元組表達(dá)式中明確提到的所有維度。在該元組表達(dá)式中沒有明確提到的維度必須與目標(biāo)單元(即所要計(jì)算的單元)具有相同的值。隨后,從以上兩個(gè)步驟中,可以得出結(jié)論僅當(dāng)輸入數(shù)據(jù)單元中的至少一個(gè)是非零的,并且該輸入數(shù)據(jù)單元沿著在任意一個(gè)元組表達(dá)式中沒有明確提到的維度具有相同的值時(shí),目標(biāo)單元才是非零的。這樣就建立了非零計(jì)算結(jié)果和非零輸入數(shù)據(jù)之間的關(guān)系。說明性操作環(huán)境參考圖1,用于實(shí)現(xiàn)某些實(shí)施例的示例性系統(tǒng)包括諸如計(jì)算設(shè)備100等計(jì)算設(shè)備。在非?;镜呐渲弥?,計(jì)算設(shè)備100通常包括至少一個(gè)處理單元102和系統(tǒng)存儲器104。取決于計(jì)算設(shè)備的確切配置和類型,系統(tǒng)存儲器104可以是易失性的(諸如RAM)、非易失性的(諸如ROM、閃存等)或是兩者的某種組合。系統(tǒng)存儲器104通常包括操作系統(tǒng)105和在操作系統(tǒng)105內(nèi)工作的一個(gè)或多個(gè)程序模塊106。除程序模塊106以外,分配應(yīng)用程序107也可以在操作系統(tǒng)105內(nèi)執(zhí)行。分配應(yīng)用程序107可以是對多維數(shù)據(jù)執(zhí)行計(jì)算以分析和報(bào)告狀態(tài)、目標(biāo)、進(jìn)展、財(cái)政分析等的商業(yè)應(yīng)用程序。在稀疏定義空間用于其計(jì)算的情況中,分配應(yīng)用程序107可以將該定義空間轉(zhuǎn)換為一密集空間,并執(zhí)行計(jì)算以便高效地利用資源。為了執(zhí)行上述動作,分配應(yīng)用程序107可以包括其它計(jì)算設(shè)備和應(yīng)用程序以及駐留在諸如圖2所示數(shù)據(jù)庫等其它應(yīng)用程序中的應(yīng)用程序接口(API),和/或與它們交互。計(jì)算設(shè)備IOO可以具有附加特征或功能。例如,計(jì)算設(shè)備IOO還可以包括例如磁盤、光盤或磁帶等(可移動的和/或不可移動的)附加數(shù)據(jù)存儲設(shè)備。這些附加存儲在圖1中用可移動存儲109和不可移動存儲110示出。計(jì)算機(jī)存儲介質(zhì)可以包括以用于存儲諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任何方法或技術(shù)來實(shí)現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。系統(tǒng)存儲器104、可移動存儲109和不可移動存儲110全部都是計(jì)算機(jī)存儲介質(zhì)的示例。計(jì)算機(jī)存儲介質(zhì)包括,但不限于,RAM、ROM、EEPROM、閃存或其它存儲器技術(shù)、CD-ROM、數(shù)字通用盤(DVD)或其它光學(xué)存儲、磁盒、磁帶、磁盤存儲或其它磁性存儲設(shè)備、或可以用來存儲期望信息并且可以被計(jì)算設(shè)備100訪問的任何其它介質(zhì)。任何這種計(jì)算機(jī)存儲介質(zhì)都可以是設(shè)備100的一部分。計(jì)算設(shè)備100還可以具有諸如定點(diǎn)設(shè)備、鍵盤、鼠標(biāo)、筆、語音輸入設(shè)備、觸摸輸入設(shè)備等輸入設(shè)備112。也可以包括諸如顯示器、揚(yáng)聲器、打印機(jī)等輸出設(shè)備114。計(jì)算設(shè)備100還包含通信接口116,該接口使得該設(shè)備可如通過網(wǎng)絡(luò)與其它計(jì)算設(shè)備118通信。通信接口116是通信介質(zhì)的一個(gè)示例。通信介質(zhì)通常由諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號中的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)來體現(xiàn),并且包括任何信息傳送介質(zhì)。術(shù)語"已調(diào)制數(shù)據(jù)信號"是以在信號中編碼信息的方式設(shè)置或改變其一個(gè)或多個(gè)特性的信號。作為示例,而非限制,通信介質(zhì)包括有線介質(zhì),如有線網(wǎng)絡(luò)或直接線連接等,并包括無線介質(zhì),如聲學(xué)、射頻(RF)、紅外及其它無線介質(zhì)。圖2示出了其中可以實(shí)現(xiàn)分配應(yīng)用程序的各方面的示例性系統(tǒng)200。系統(tǒng)200可以包括一個(gè)或多個(gè)網(wǎng)絡(luò),該網(wǎng)絡(luò)包含服務(wù)器、客戶機(jī)、因特網(wǎng)服務(wù)提供者和通信介質(zhì)的任意拓?fù)浣Y(jié)構(gòu)。該網(wǎng)絡(luò)還可以具有靜態(tài)或動態(tài)拓?fù)浣Y(jié)構(gòu)。諸如圖1中的分配應(yīng)用程序107等分配應(yīng)用程序可以駐留在服務(wù)器202上。在一個(gè)實(shí)施例中,該應(yīng)用程序可以在分布式服務(wù)器、大型計(jì)算機(jī)等上運(yùn)行。8服務(wù)器202可以包括諸如會計(jì)應(yīng)用程序、數(shù)據(jù)庫應(yīng)用程序、通信應(yīng)用程序等多個(gè)其它應(yīng)用程序。在另一個(gè)實(shí)施例中,服務(wù)器202可以與被安排成存儲用于商業(yè)應(yīng)用程序的數(shù)據(jù)的數(shù)據(jù)庫204交互。該分配應(yīng)用程序可以在執(zhí)行分配計(jì)算前執(zhí)行優(yōu)化査詢,從而從相對較大的定義空間中大大減少了計(jì)算空間。可以將該減少的計(jì)算空間中的數(shù)據(jù)(臨時(shí)地)存儲在數(shù)據(jù)庫206中。在另一個(gè)實(shí)施例中,也可以將計(jì)算結(jié)果存儲在數(shù)據(jù)庫204或206中。該分配應(yīng)用程序可以通過網(wǎng)絡(luò)210與諸如手持式計(jì)算機(jī)214、臺式計(jì)算機(jī)212和膝上型計(jì)算機(jī)216等客戶機(jī)設(shè)備交互,以接收諸如用于計(jì)算的表達(dá)式等指令、提供報(bào)告、以及執(zhí)行其它分配相關(guān)任務(wù)。與服務(wù)器202通信的客戶機(jī)設(shè)備可以包括任何類型的計(jì)算設(shè)備,而不限于在此示出的示例。網(wǎng)絡(luò)210可以是諸如企業(yè)網(wǎng)等安全網(wǎng)絡(luò),或是諸如無線開放網(wǎng)絡(luò)等非安全網(wǎng)絡(luò)。網(wǎng)絡(luò)210提供上面描述的節(jié)點(diǎn)間的通信。作為示例,而非限制,網(wǎng)絡(luò)210可以包括有線介質(zhì),如有線網(wǎng)絡(luò)或直接線連接等,并包括無線介質(zhì),如聲學(xué)、RF、紅外及其它無線介質(zhì)。然而,本發(fā)明并不限于上述環(huán)境。可以使用計(jì)算設(shè)備、通信、應(yīng)用程序和分布式系統(tǒng)的許多其它配置來實(shí)現(xiàn)使用查詢優(yōu)化來改進(jìn)分配性能的商業(yè)應(yīng)用程序。用于通過査詢優(yōu)化來改進(jìn)分配性能的說明性實(shí)施例各實(shí)施例涉及將稀疏計(jì)算簡化為非稀疏,從而顯著改進(jìn)了分配性能。執(zhí)行對計(jì)算表達(dá)式的符號化分析,以簡化該計(jì)算的稀疏定義空間。通過符號化地分析計(jì)算表達(dá)式,可確定零(或不關(guān)心的)值的區(qū)域,而無需實(shí)際對整個(gè)空間執(zhí)行計(jì)算。例如,某公司可能要留出當(dāng)年一百萬美元的總專用廣告預(yù)算,這就需要基于前年花費(fèi)的相同百分比,按月、按商店和按產(chǎn)品對其進(jìn)行拆分。如果該計(jì)算假設(shè)為12個(gè)月、100家商店和10,000個(gè)產(chǎn)品,則12*100*10,000=12,000,000的空間是該計(jì)算的定義空間。然而,對于大多數(shù)月份、商店和產(chǎn)品,在前年可能并沒有花費(fèi)廣告資金。可能僅僅在該年的某幾個(gè)月、在所選的商店對選擇的幾種產(chǎn)品花費(fèi)了該筆專用廣告資金。因此,實(shí)際分配是一小列(月份、商店、產(chǎn)品)的組合。這就是一種典型的稀疏計(jì)算。通過分析該公式,可以認(rèn)識到,僅當(dāng)前年的花費(fèi)為非零時(shí),該計(jì)算才會產(chǎn)生非零結(jié)果,這可以通過檢索前年的實(shí)際花費(fèi)記錄來容易地確定。使用前年的花費(fèi)列表,以及對僅當(dāng)前年的值為非零時(shí)當(dāng)年的花費(fèi)才是非零的認(rèn)識,可以將該計(jì)算簡化為具有來自前年的非零值的那些組合,從而顯著簡化了分配。圖3是示出了示例性多維數(shù)據(jù)的符號(2維電子表格)和物理(表格)表示的概念圖。分配計(jì)算中的某些項(xiàng)可被定義如下。如以前提到的,單元是多維空間中每個(gè)坐標(biāo)都被完整地指定的點(diǎn)。元組是單元的部分坐標(biāo)的列表。(關(guān)于范圍S的)非空元組是這樣的元組使得存在元組到一單元的擴(kuò)展,其中該單元在范圍S內(nèi),且該單元值是非空的。按照在線分析處理(OLAP)中所使用的術(shù)語,所有輸入數(shù)據(jù)的集合被稱作"事實(shí)表"(facttable)。用于分配性能改進(jìn)的查詢優(yōu)化的格實(shí)施例可通過用事實(shí)表中的非空元組來標(biāo)識該計(jì)算范圍內(nèi)的"非空"元組來實(shí)現(xiàn)。事實(shí)表的非空元組可一般通過SQL査詢,尤其通過MDX中的7Vo"五m;^Cm^o/"(非空交叉聯(lián)接)函數(shù)來相對容易地獲得。7Vo"五mp/yOo^y'o/"函數(shù)返回兩個(gè)或多個(gè)集合的叉積作為一集合,從而排除了空元組以及不含底層的事實(shí)表所提供的數(shù)據(jù)的元組。因此,可以相對容易地獲得計(jì)算區(qū)域的非空元組。一旦確定了該計(jì)算區(qū)域的非空元組后,就可以將該元組通過與缺失維度形成交叉聯(lián)接來擴(kuò)展為單元。非空元組越長,優(yōu)化則越好,因?yàn)槎鄠€(gè)缺失維度都被限制得較小,得到較小的交叉聯(lián)接區(qū)域。根據(jù)在MDX中使用的表示法,在后面的描述中使用表達(dá)式"selectNonEmpty…"來指在計(jì)算結(jié)束處濾除零計(jì)算結(jié)果,并使用表達(dá)式"select(NonEmptyCrossJoin(…))"來指在執(zhí)行計(jì)算以前使用輸入數(shù)據(jù)與計(jì)算結(jié)果的關(guān)系來濾除零計(jì)算結(jié)果。盡管在全文中均采用了MDX表示法,但本發(fā)明并不限于SQL表達(dá)式,并且各實(shí)施例可以在使用此處所描述的原理在其它數(shù)據(jù)庫系統(tǒng)中實(shí)現(xiàn)。分配計(jì)算可以被簡化地表達(dá)為如下形式的公式S平C多微薪影表這式子多維數(shù)據(jù)集(sub-cube)可以是(Sl,S2,…Sn)的形式,其中Si是第i個(gè)維度中的成員集,而(Sl,S2,…Sn)是這些成員集的笛卡爾積。計(jì)算空間的大小是IS11*|S2h".*|Sn|,其中ISil是集Si的勢。如果該計(jì)算的結(jié)果只包含很小數(shù)量的非零值,則將該計(jì)算稱作"稀疏"。僅僅在結(jié)束^^除非零結(jié)果的用于分配的蠻力子例程可被表達(dá)為射多微麟/表這式謂em灘Otf多維教薪影F國多微薪桌該方法是資源低效的,因?yàn)樵撚?jì)算是對整個(gè)空間執(zhí)行的,而并沒有考慮結(jié)果是否為零,而且為零的結(jié)果是在結(jié)束處被去除的。使用iVo/^w;^Cmwyo/",可以根據(jù)一個(gè)實(shí)施例來優(yōu)化相同的計(jì)算如下.-'(5/,...S"J'五(5"m+7,…輔該方法更為資源有效,因?yàn)閣o"£m/^OoM*/oiw可在執(zhí)行計(jì)算以前執(zhí)行。從而,極大地簡化了用來執(zhí)行該計(jì)算的空間。參考圖3,在數(shù)據(jù)倉庫320中示出了用二維電子表格形式表示的2004年收入數(shù)據(jù)。行322包括一個(gè)維度(例如商店SrSm),而列324包括另一個(gè)維度(例如產(chǎn)品PrPn)。該符號表示可以采用多維或單維數(shù)據(jù)存儲的形式。在數(shù)據(jù)倉庫330中以物理數(shù)據(jù)表示格式(即表格的形式)示出了同樣的2004年收入數(shù)據(jù)。第一維度,即商店列于列332中。對于每一商店(例如SrSj,其相應(yīng)的產(chǎn)品(例如PrPn)列于列334中。下一列336包括年份,它在該示例中為04。最后一列338包括每個(gè)組合的收入值的列表。圖4是示出使用査詢優(yōu)化的分配的概念圖,其強(qiáng)調(diào)在二維數(shù)據(jù)存儲環(huán)境中將數(shù)據(jù)由稀疏空間轉(zhuǎn)換到密集空間。在圖400中示出的分配始于表達(dá)式440。表達(dá)式440定義了要應(yīng)用于定義空間中的數(shù)據(jù)以導(dǎo)出結(jié)果的關(guān)系。例如,表達(dá)式440可以用于確定具有多家商店的公司的估計(jì)預(yù)算。該表達(dá)式可被定義為Est_Rev2005=(Rev2004+Rev20o3)*0.5根據(jù)某些實(shí)施例,優(yōu)化查詢始于對表達(dá)式440的符號化分析。對于上面的示例,分析442表明對分配所關(guān)心的維度是收入,并且所關(guān)心的數(shù)據(jù)范圍是2003年和2004年。商店(SpSm)和產(chǎn)品(PrPn)是該示圖中用到的另外兩個(gè)維度,并且將在轉(zhuǎn)換過程中對該二維空間(商店,產(chǎn)品)中的數(shù)據(jù)點(diǎn)進(jìn)行分析和簡化。分析442會引起定義空間(通常為稀疏的)到更密集的計(jì)算空間的轉(zhuǎn)換。如果修改了該表達(dá)式內(nèi)的維度或數(shù)據(jù)范圍,就可以動態(tài)調(diào)整該表達(dá)式的符號化分析。定義空間可以是任何類型的數(shù)據(jù)結(jié)構(gòu),包括但不限于,表、電子表格、多維數(shù)據(jù)倉庫等。定義空間452被示為示例性二維電子表格數(shù)據(jù)表示。表達(dá)式440的項(xiàng)也可用二維電子表格數(shù)據(jù)表示來表示。列Pi到P。表示產(chǎn)品,行Si到Sm表示商店,而每個(gè)單元內(nèi)的數(shù)字表示收入。這種數(shù)據(jù)在數(shù)據(jù)庫表中的替換表示的圖示在以上圖3中給出。轉(zhuǎn)換444是將定義空間452簡化為計(jì)算空間458的操作。下面將連同一示例,并結(jié)合圖6和7,來描述該轉(zhuǎn)換操作的細(xì)節(jié)。計(jì)算空間458包括含有數(shù)據(jù)的表格表示,其中空(非所關(guān)心的)值大大減少。在該空間上執(zhí)行計(jì)算446以得出結(jié)果數(shù)據(jù)空間460極大地減少了資源的使用(存儲器、處理時(shí)間等),從而提高了該分配應(yīng)用程序的總體效率。本發(fā)明并不限于結(jié)合圖3和4描述的示例性數(shù)據(jù)結(jié)構(gòu)或操作。使用在此描述的原理,可以實(shí)現(xiàn)其它數(shù)據(jù)結(jié)構(gòu)和操作。圖5示出了示例性數(shù)據(jù)結(jié)構(gòu)的分層結(jié)構(gòu)以及用于分配算法的相應(yīng)句法。如前面提到的,在多維系統(tǒng)中可以用許多不同的方式來結(jié)構(gòu)化數(shù)據(jù)。而且,可以在每個(gè)結(jié)構(gòu)內(nèi)實(shí)現(xiàn)不同的分層結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)500示出了關(guān)于時(shí)間的示例性分層結(jié)構(gòu)。時(shí)間可以是多維數(shù)據(jù)結(jié)構(gòu)中的維度之一。有各種方式來設(shè)置關(guān)于時(shí)間的分層結(jié)構(gòu)。例如,頂層"年份"可被劃分為十二個(gè)"月份",并且每一個(gè)月份進(jìn)而可被劃分為四個(gè)"星期"。另一種分層結(jié)構(gòu)可以包括直接報(bào)告給頂層"年份"的雙周周期。可以對該分層結(jié)構(gòu)的每一層給予一名稱,以便能在分配算法中指定該分層結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)500示出了名為"RegHier"的分層結(jié)構(gòu)502。"RegHier"始于頂層(504)的"年份"。接著,四個(gè)季度"Q1"-"Q4"在層506處報(bào)告給"年份"。在層508處,每一季度被劃分成四個(gè)月"M1"-"M12"。句法510是諸如下面圖6中的示例性算法等分配算法中的數(shù)據(jù)結(jié)構(gòu)500的示例表示。句法510中的第一個(gè)項(xiàng)是維度名稱(512),接著是分層結(jié)構(gòu)名稱(514)和成員名稱(516)。對于數(shù)據(jù)結(jié)構(gòu)500的示例性分層結(jié)構(gòu)"RegHier"的第十一個(gè)月份,其維度名稱512是"Time(時(shí)間)";分層結(jié)構(gòu)名稱514是"RegHier";成員名稱516是"M11"。本發(fā)明并不限于如上所述的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)類型、分層結(jié)構(gòu)、命名約定等。使用在此描述的原理,可以實(shí)現(xiàn)其它數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)類型、分層結(jié)構(gòu)、命名約定等。圖6示出了用于在稀疏數(shù)據(jù)空間內(nèi)執(zhí)行分配的示例性蠻力算法以及相應(yīng)的査詢優(yōu)化算法。示例性算法610和620使用諸如時(shí)間(Time)、實(shí)體(Entity)和帳戶(Account)等維度來執(zhí)行用于商業(yè)應(yīng)用程序的計(jì)算。在圖600的示例性分配算法610中,使用如下計(jì)算表達(dá)式在較大區(qū)域上執(zhí)行査詢([Scenario].[AllMembers].[ACT])*1.1為了最小化計(jì)算操作,在計(jì)算過程中執(zhí)行蠻力非空選擇算法,但是該選擇過程本身會使用大量資源。因此,該選擇過程可能是資源低效的、且速度較慢,甚至?xí)鸫鎯ζ鞑蛔愕腻e(cuò)誤。如算法620所示,可以對示例性分配算法610進(jìn)行優(yōu)化。由于使用了"7Vo"五m;^Oo呵'o/""而不是""o"em;70;",因此算法空間由最初相對較大的定義空間得到了簡化,從而極大地改進(jìn)了性能。圖7示出了在稀疏數(shù)據(jù)空間內(nèi)執(zhí)行分配的過程700的邏輯流程圖。過程700—般涉及使用事實(shí)表的非空元組來標(biāo)識計(jì)算范圍的"非空"元組。使用7Vo"五mp^Oo^7'o/"函數(shù)獲得事實(shí)表的非空元組。該7Vow五m;(yOoM乂o//7函數(shù)返回兩個(gè)或多個(gè)集的叉積來作為一集,從而去除了空元組以及不含底層事實(shí)表所提供的數(shù)據(jù)的元組。一旦確定了計(jì)算區(qū)域的非空元組,就可通過與缺失維度形成交叉聯(lián)接來將元組擴(kuò)展成單元。過程700始于操作702,在此處定義用于分配的數(shù)據(jù)空間。這可以通過定義諸如(Si,S2,…Sn)等成員集的范圍來實(shí)現(xiàn),其中Si是第i個(gè)維度的成員。處理由操作702轉(zhuǎn)向操作704。在操作704處,對計(jì)算表達(dá)式進(jìn)行符號化分析。這可以通過將該表達(dá)式解析為對象樹(例如二叉樹)來實(shí)現(xiàn),其中該樹的葉對應(yīng)于常數(shù)、元組或元組集。處理由操作704進(jìn)入操作706。在操作706處,分析該對象樹的葉。檢査每個(gè)葉項(xiàng)的類型。處理由操作706轉(zhuǎn)向判決操作708。在判決操作708處,確定所分析的葉項(xiàng)是否是元組或元組集。如果葉是元組或元組集,則處理進(jìn)入判決操作710。否則,處理轉(zhuǎn)回操作706以分析另一葉項(xiàng)。在判決操作710處,對于元組或元組集葉確定其是否存在具有空成員或成員集表達(dá)式的任何維度。如果存在具有空成員或成員集表達(dá)式的維度,則處理進(jìn)入操作712。否則,處理轉(zhuǎn)向操作714。在操作714處,收集具有非空成員或成員集表達(dá)式的維度。隨后,該處理前進(jìn)到操作716處,在此處將所收集的維度指定為交叉聯(lián)接維度(山,d2,...dm)。在操作712處,將剩余維度指定為非空交叉聯(lián)接維度(dn^,dm+2,…(U。處理從操作712和716兩者處進(jìn)入到操作718。在操作718處,使用操作704的表達(dá)式來執(zhí)行計(jì)算。在執(zhí)行該計(jì)算時(shí),基于非空交叉聯(lián)接維度的組合進(jìn)行選擇。在一個(gè)實(shí)施例中,選擇維度及其成員可以包括按期望的順序創(chuàng)建該維度及其成員的概要。通過使用A^"五m/n);Oo^/o/"函數(shù)來簡化定義空間,將該計(jì)算限于較小的計(jì)算空間,因此不會首先花費(fèi)資源來選擇該稀疏定義空間內(nèi)的非空成員。因此,顯著增強(qiáng)了分配性能。在操作718后,處理轉(zhuǎn)向調(diào)用過程以執(zhí)行其它動作。在過程700中所包括的操作用于說明的目的。通過查詢優(yōu)化來改善分配性能可通過具有更少或更多步驟,以及采用不同操作順序的相似過程來實(shí)現(xiàn)。上面的說明、示例和數(shù)據(jù)提供了對各實(shí)施例的組成部分的制造和使用的完整描述。雖然已經(jīng)用對結(jié)構(gòu)特征和/或方法動作專用的語言描述了本主題,但應(yīng)了解,所附權(quán)利要求書中所限定的主題并不一定要限于上面描述的具體特征或動作。相反,以上所描述的具體特征和動作是作為實(shí)現(xiàn)權(quán)利要求書和各實(shí)施例的示例性形式而公開的。權(quán)利要求1.一種用于通過査詢優(yōu)化來改進(jìn)分配性能的計(jì)算機(jī)實(shí)現(xiàn)的方法,包括確定用于所述分配的定義空間;確定用于所述分配的計(jì)算的表達(dá)式;確定所述計(jì)算表達(dá)式的維度,其中所述維度是通過符號化地分析所述表達(dá)式來明確表達(dá)的;基于所述符號化分析,確定非零計(jì)算結(jié)果和非零輸入數(shù)據(jù)之間的關(guān)系;以及基于所述表達(dá)式執(zhí)行所述計(jì)算,同時(shí)使用所述非零計(jì)算結(jié)果和非零輸入數(shù)據(jù)間的關(guān)系將所述定義空間轉(zhuǎn)換為一計(jì)算空間。2.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,還包括確定所述計(jì)算表達(dá)式中的每一項(xiàng)是否均受一元組表達(dá)式的支配。3.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,符號化地分析所述表達(dá)式包括將所述表達(dá)式解析為一對象樹。4.如權(quán)利要求3所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,所述對象樹的葉對應(yīng)于常數(shù)、元組和元組集中的至少一個(gè)。5.如權(quán)利要求3所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,符號化地分析所述表達(dá)式還包括為所述對象樹中對應(yīng)于元組和元組集中的一個(gè)的的每一葉,收集具有至少一個(gè)非空成員的維度。6.如權(quán)利要求5所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,符號化地分析所述表達(dá)式還包括將所收集的維度指定為一交叉聯(lián)接維度集,并將所述定義空間的剩余維度指定為一非空交叉聯(lián)接維度集。7.如權(quán)利要求6所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,還包括在執(zhí)行所述計(jì)算的同時(shí)基于所述交叉聯(lián)接維度和所述非空交叉聯(lián)接維度的組合將一所選函數(shù)合并到所述表達(dá)式中。8.如權(quán)利要求7所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,使用NonEmptyCrossjoin函數(shù)來將所述定義空間轉(zhuǎn)換為所述計(jì)算空間。9.如權(quán)利要求7所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,選擇所述維度及其成員包括按期望的順序創(chuàng)建所述維度及其成員的概要。10.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,所執(zhí)行的計(jì)算是多維表達(dá)式(MDX)查詢。11.一種具有用于在多維商業(yè)應(yīng)用程序中執(zhí)行分配的計(jì)算機(jī)指令的計(jì)算機(jī)可讀介質(zhì),所述指令包括確定用于所述分配的定義空間;確定用于所述分配的計(jì)算的表達(dá)式;符號化地分析所述計(jì)算表達(dá)式的維度,其中所述維度是通過將所述表達(dá)式解析成一對象樹來明確表達(dá)的;為所述對上樹中對應(yīng)于元組和元組集中至少一個(gè)的每一葉,收集具有至少一個(gè)非空成員的定義空間的維度;將所收集的維度指定為一交叉聯(lián)接維度集;將所述定義空間的剩余維度指定為一非空交叉聯(lián)接維度集;以及在執(zhí)行所述計(jì)算的同時(shí)基于所述交叉聯(lián)接維度和所述非空交叉聯(lián)接維度的組合來選擇成員。12.如權(quán)利要求ll所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述指令還包括使用NonEmptyCrossjoin函數(shù)來從所述定義空間中選擇成員。13.如權(quán)利要求ll所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述分配是用于對所述商業(yè)應(yīng)用程序中的場景進(jìn)行規(guī)劃、預(yù)算和預(yù)測中的至少一種。14.如權(quán)利要求ll所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述定義空間是稀疏空間,而所選成員形成一密集計(jì)算空間。15.如權(quán)利要求ll所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述表達(dá)式包括至少一個(gè)結(jié)構(gòu)化査詢語言(SQL)查詢。16.如權(quán)利要求ll所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述對象樹是二叉樹。17.如權(quán)利要求ll所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述指令還包括在修改了所述表達(dá)式中的維度和數(shù)據(jù)范圍中的至少一個(gè)時(shí)動態(tài)調(diào)整對所述表達(dá)式的符號化分析。18.—種用于在多維數(shù)據(jù)空間內(nèi)執(zhí)行分配的系統(tǒng),所述系統(tǒng)包括被配置成存儲用于要對所述分配使用的數(shù)據(jù)的定義空間的數(shù)據(jù)庫;被配置成執(zhí)行以下動作的應(yīng)用程序確定用于所述分配的所述定義空間;確定用于計(jì)算所述分配的表達(dá)式;確定所述定義空間的維度,所述維度是通過符號化地分析所述表達(dá)式而被明確包括的;基于所述符號化分析,確定非零計(jì)算結(jié)果和非零輸入數(shù)據(jù)間的關(guān)系;以及基于所述表達(dá)式執(zhí)行所述計(jì)算,同時(shí)使用所述非零計(jì)算結(jié)果和所述非零輸入數(shù)據(jù)間的關(guān)系將所述定義空間轉(zhuǎn)換為計(jì)算空間。19.如權(quán)利要求18所述的系統(tǒng),其特征在于,所述應(yīng)用程序還被配置成通過將所述表達(dá)式解析為一對象樹來符號化地分析所述表達(dá)式;對于所述對象樹中與元組和元組集中的至少一個(gè)相對應(yīng)的每一葉,收集具有至少一個(gè)非空成員的定義空間的維度;將所收集的維度指定為一交叉聯(lián)接維度集,并將所述定義空間的剩余維度指定為一非空交叉聯(lián)接維度集;以及,在執(zhí)行所述計(jì)算的同時(shí)基于所述交叉聯(lián)接維度和所述非空交叉聯(lián)接維度的組合來選擇成員。20.如權(quán)利要求18所述的系統(tǒng),其特征在于,所述數(shù)據(jù)庫還被配置成存儲用于要在所述計(jì)算中使用的數(shù)據(jù)的計(jì)算空間。全文摘要通過優(yōu)化與分配相關(guān)聯(lián)的查詢來增強(qiáng)分配性能。將用于計(jì)算的稀疏定義空間轉(zhuǎn)換為用于執(zhí)行該計(jì)算的密集空間,以便進(jìn)行高效地資源利用。符號化地分析計(jì)算表達(dá)式,以便確定非零計(jì)算結(jié)果和輸入數(shù)據(jù)中的非零單元之間的關(guān)系。通過檢查輸入數(shù)據(jù),可由該關(guān)系得到計(jì)算結(jié)果為非零的區(qū)域。因此,該計(jì)算空間被簡化成較小的空間。所得的計(jì)算空間不再是稀疏的,而且可高效地執(zhí)行分配。文檔編號G06F17/40GK101313301SQ200680043237公開日2008年11月26日申請日期2006年11月13日優(yōu)先權(quán)日2005年11月18日發(fā)明者P·嚴(yán)申請人:微軟公司