国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      對相異計數(shù)度量的聚合導(dǎo)航的優(yōu)化的制作方法

      文檔序號:6503859閱讀:258來源:國知局
      專利名稱:對相異計數(shù)度量的聚合導(dǎo)航的優(yōu)化的制作方法
      技術(shù)領(lǐng)域
      所描述的技術(shù)一般地涉及數(shù)據(jù)庫查詢,更具體地說,涉及有效地執(zhí)行相異計數(shù)(distinct count)度量。
      背景技術(shù)
      數(shù)據(jù)庫是數(shù)據(jù)的集合。用戶一般利用諸如數(shù)據(jù)庫管理系統(tǒng)(DBMS)之類的計算機(jī)程序來存儲、檢索和修改數(shù)據(jù)庫中的數(shù)據(jù)。
      一類DBMS是關(guān)系數(shù)據(jù)庫管理系統(tǒng),這種數(shù)據(jù)庫管理系統(tǒng)將數(shù)據(jù)存儲在表中。表是一系列相交的行和列。表的行一般代表記錄,記錄是關(guān)于特定項目的信息的集合,而列一般代表字段,字段指定記錄的特定屬性,例如,包含在記錄的每個字段中的特定類型的數(shù)據(jù)。每個字段包含具有針對相交的行和列的特定屬性的數(shù)據(jù)。
      存儲在關(guān)系數(shù)據(jù)庫的表中的數(shù)據(jù)通常是利用查詢和分析工具來訪問和檢索的。例如,用戶可以使用工具來對表、行和單個數(shù)據(jù)元素執(zhí)行特定的操作。一類操作是聚合操作,并且一種這類聚合功能被稱作相異計數(shù)。
      相異計數(shù)是非常重要并且常用的分析需求。對于由被劃分為多列的行組成的明細(xì)表而言,相異計數(shù)指示在其他列上滿足零個或更多個條件的多個行的第一列中出現(xiàn)的不同值的數(shù)目。例如,對于每行包含一個項目的有序項目明細(xì)表,其中客戶已對項目進(jìn)行了排序,并且每行被劃分為客戶ID列、項目ID列、訂單日期列和客戶郵政編碼列,用戶可能希望對包含郵政編碼98210的行中包含的不同的用戶ID的數(shù)目進(jìn)行計數(shù)。
      傳統(tǒng)上,用于執(zhí)行相異計數(shù)度量的已知方法是不能利用聚合導(dǎo)航(aggregate navigation)來執(zhí)行相異計數(shù)的。相反,這些傳統(tǒng)方法總是從最詳細(xì)的源獲得相異計數(shù)度量,從而導(dǎo)致極大的性能瓶頸。在利用傳統(tǒng)方法在分析環(huán)境中執(zhí)行相異計數(shù)度量時,一般會遇到很大的性能問題,這是由于這些用于相異計數(shù)的傳統(tǒng)方法自身的特性決定的,它們比其他聚合功能慢多于一個數(shù)量級。在報告中有多于一個相異計數(shù)測量時,該問題就更復(fù)雜了。
      因此,利用聚合導(dǎo)航的用于執(zhí)行相異計數(shù)度量的技術(shù)將會非常有用。


      圖1是示出通常并入在執(zhí)行設(shè)施的至少一些計算機(jī)系統(tǒng)中的所選組件的框圖。
      圖2A到圖2C示出了根據(jù)一些實施例由設(shè)施用來執(zhí)行相異計數(shù)度量的方法的流程圖。
      圖3示出了示例性的明細(xì)表。
      圖4A到圖C示出了與圖3所示明細(xì)表相對應(yīng)的示例性維度表。
      圖5到圖10示出了與圖3所示明細(xì)表相對應(yīng)的示例性聚合表。
      圖11示出了根據(jù)一些實施例由設(shè)施用來標(biāo)識聚合表以用于回復(fù)相異計數(shù)查詢的方法的流程圖。
      具體實施例方式
      本發(fā)明描述了用于利用聚合導(dǎo)航執(zhí)行相異計數(shù)度量的軟件設(shè)施(“設(shè)施”)。在某些實施例中,該設(shè)施通過對聚合表執(zhí)行計數(shù)操作來計算相異計數(shù)度量。在某些實施例中,該設(shè)施通過對一般用來進(jìn)行傳統(tǒng)相異計數(shù)操作的明細(xì)表小的表執(zhí)行相異計數(shù)操作,來計算相異計數(shù)度量。通過以此方式對大多數(shù)查詢完全消除相異計數(shù),以及在某些其他情形中通過對較小的表執(zhí)行相異計數(shù)來給出相同的答案(即,相異計數(shù)度量),從而在與對明細(xì)表執(zhí)行的傳統(tǒng)相異計數(shù)相比時,該設(shè)施在查詢時間方面提供了極大的加速(例如,增強(qiáng))。
      在整個描述中,以下術(shù)語一般具有下述含義術(shù)語“聚合表”指對來自其他數(shù)據(jù)庫表的細(xì)節(jié)級記錄進(jìn)行總結(jié)或合并的表。
      術(shù)語“基表”或“明細(xì)表”或“事實表”指包含明細(xì)數(shù)據(jù)的數(shù)據(jù)庫表。
      術(shù)語“計數(shù)”指對被選中的列中的行數(shù)的計數(shù)。
      術(shù)語“立方體(cube)”指包含維度和測量的多維結(jié)構(gòu)。維度定義立方體的結(jié)構(gòu)。測量提供感興趣的數(shù)值。
      術(shù)語“維度”指立方體的結(jié)構(gòu)屬性,其是描述事實表中的數(shù)據(jù)的有組織的類別(級別)層次結(jié)構(gòu)。這些類別一般描述被執(zhí)行分析的類似的成員集合。維度是可以在其上聚合的字段(列)。例如,時間維度可能包括以下級別年、月和日。
      術(shù)語“維度層次結(jié)構(gòu)”指一個維度中的一組成員及它們彼此的相對位置。
      術(shù)語“相異計數(shù)”或“計數(shù)相異”指對選中的列中的不同行的數(shù)目的計數(shù)。也是指在沒有重復(fù)計數(shù)的情況下對被選中的列中的行的數(shù)目的計數(shù)。
      術(shù)語“粒度”或“顆?!敝笖?shù)據(jù)元素中包含的信息的特異性程度。
      術(shù)語“層次結(jié)構(gòu)”指一種邏輯樹結(jié)構(gòu),該結(jié)構(gòu)將一個維度中的成員組織起來,以使得每個成員具有一個父成員和零個或更多個子成員。
      術(shù)語“級別”或者“類別”指一個維度層次結(jié)構(gòu)中的一組成員的名稱,以使該組中的全部成員距該層次結(jié)構(gòu)的根的距離相等。例如,時間維度可能包括以下級別年、月和日。
      術(shù)語“測量”在立方體中指這樣的一組值,該組值基于立方體的事實表中的列。測量是被聚合和分析的中心值。
      術(shù)語“成員”指代表數(shù)據(jù)的一次或多次出現(xiàn)的維度中的項目。成員可以是唯一的,也可以是非唯一的。例如,2003和2004代表時間維度中的年級別中的不同成員。相反,十月代表時間維度中的月級別中的非唯一的成員,因為如果時間維度包含多于1年的數(shù)據(jù),則在時間維度中可以存在多于一個十月。
      術(shù)語“查詢”指用戶“問”數(shù)據(jù)庫以便獲得有用格式的信息的問題。
      術(shù)語“約束”指對一列施加的條件或標(biāo)準(zhǔn)。例如,約束一般指這樣的一種方式,該方式將查詢限制到具有與特定標(biāo)準(zhǔn)匹配的列值的那些行。
      術(shù)語“表”指一種二維對象,該對象包括行和列,用于在關(guān)系數(shù)據(jù)庫中存儲數(shù)據(jù)。表是以行和列組織的信息的表示。
      在某些實施例中,在以下情形中設(shè)施利用聚合表而不是明細(xì)表來解答相異計數(shù)度量(1)如果存在包含正被聚合(即相異計數(shù))的標(biāo)識符(即,測量)的聚合表,或者(2)如果聚合表的行包含對正被相異計數(shù)的標(biāo)識符的計數(shù)而不是標(biāo)識符自身。
      在存在包含正被聚合的標(biāo)識符的聚合表的情形中(情形1)a.如果被相異計數(shù)的標(biāo)識符在聚合表中是不同的,即,如果確信被相異計數(shù)的標(biāo)識符在聚合表中的每行中都不同,則設(shè)施將計數(shù)運(yùn)算符而不是慢得多的相異計數(shù)運(yùn)算符應(yīng)用到聚合表。在這種情形中,對于主(msater)/細(xì)節(jié)關(guān)系的主聚合表,其中細(xì)節(jié)需要COUNT DISTINCT(計數(shù)相異),而主不需要。一個示例是Order/OrderDetails,其中產(chǎn)品的不同訂單的數(shù)目必須是相異計數(shù),因為其經(jīng)由OrderDetails加入到Product中(即,對OrderDetails執(zhí)行COUNT DISTINCT)。相反,對每個其他維度的聚合僅要求更快的計數(shù)操作(即,對Order頭部表執(zhí)行計數(shù))。
      b.如果被相異計數(shù)的標(biāo)識符在聚合表中不是唯一的,則設(shè)施將相異計數(shù)運(yùn)算符應(yīng)用到聚合表。在這種情形中,相異計數(shù)鍵(key)作為聚合表的一部分被存儲。例如,假設(shè)用戶對在過去數(shù)月中已購買了特定產(chǎn)品的不同客戶的數(shù)目感興趣。可以使用具有維度CustomerID、ProductID和MonthID的聚合表,通過對CustomerID運(yùn)行COUNT DISTINCT來支持在顆粒[Product,Month]處或上的聚合,從而確定在過去數(shù)月中已購買了特定產(chǎn)品的不同客戶的數(shù)目。應(yīng)當(dāng)理解,本領(lǐng)域技術(shù)人員可以預(yù)見到一些情形,在這些情形中,與利用Order/OrderItem基表或事實表執(zhí)行相異計數(shù)相比,這在性能上會快若干數(shù)量級。
      在存在聚合表但是聚合表的行包含對被相異計數(shù)的標(biāo)識符的計數(shù)而不是標(biāo)識符自身的情形中(情形2)a.如果聚合表具有僅涉及依賴于被計數(shù)的標(biāo)識符的維度的維數(shù),則設(shè)施對來自聚合表的適當(dāng)?shù)男械挠嫈?shù)求和,以獲得正確的相異計數(shù)。在這種情形中,COUNT DISTINCT被存儲在聚合表中,并且在該聚合表的顆粒處或上的任何查詢都可以通過對預(yù)先計算出的COUNT DISTINCT數(shù)目求和來利用該聚合。一個有用的示例是用于對不同訂單的數(shù)目進(jìn)行計數(shù)。考慮具有以下維度的主題區(qū)域Time、Customer、Product和Channel。由于是示意性語法,所以可以在除了產(chǎn)品之外的所有維度上對訂單數(shù)目的測量進(jìn)行求和(即,給定的訂單是在單個日期、對單個客戶、在單個通道上賣出的,而多個產(chǎn)品可以與該訂單相關(guān)聯(lián))。在這種情形中,可以在All Product的顆粒上創(chuàng)建聚合表,并且跨過其他維度(例如,Month、CustomerZip和Channel)的任何顆粒。在聚合表的顆粒處或上的任何查詢現(xiàn)在都將命中該聚合表,并且對預(yù)先計算出的相異計數(shù)相加。例如,示出最近一個季度由Web通道產(chǎn)生的相異訂單數(shù)目的查詢將命中該聚合表。
      b.如果聚合表具有一些依賴于被相異計數(shù)的標(biāo)識符的維度和一些獨立于被相異計數(shù)的標(biāo)識符的維度,則只要查詢在級別上與對獨立級別的聚合的級別匹配,該設(shè)施就對計數(shù)求和來獲得正確的相異計數(shù)。一個示例可以是在如下情形時,即當(dāng)查詢針對客戶的相異計數(shù),并且聚合表具有按產(chǎn)品和(客戶的主地址的)郵編對客戶的計數(shù)時。然后,通過將客戶添加到一個州的每個郵編中,可以獲得對該州的客戶數(shù)目的相異計數(shù)(因為沒有客戶可以同時具有兩個州中的主要地址)。然而,我們不能通過跨產(chǎn)品進(jìn)行添加來獲得針對品牌的客戶數(shù)目的相異計數(shù)(因為客戶可能購買一個品牌的多于一種產(chǎn)品)。
      c.如果聚合表中的所有維度都獨立于被相異計數(shù)的標(biāo)識符,則當(dāng)且僅當(dāng)查詢的級別與聚合表的級別嚴(yán)格匹配時設(shè)施才利用該聚合。在這種情形中,COUNT DISTINCT作為聚合表的一部分被存儲,但是僅支持準(zhǔn)確的級別/顆粒匹配。例如,具有維度ProductID、MonthID和NUM CUSTOMERS的聚合表僅可以用于在[Product,Month]顆粒處查詢,而不能用于在[Product,Quarter]顆粒處查詢。換句話說,后一查詢不命中聚合表。
      在一個實施例中,前述功能由以下對象支持新的元數(shù)據(jù)對象(AoverrideAggrRule)、測量(AmeasureDefn)和邏輯表源(ALogicalTableSource)之間的關(guān)系對象。換言之,對于給定的邏輯表源(LTS),設(shè)施可以指定重載(override)聚合表達(dá)式。如果設(shè)施未指定任何重載,則當(dāng)前(即,傳統(tǒng)的相異計數(shù))行為獲勝。如果設(shè)施針對LTS指定了重載,則可以應(yīng)用聚合規(guī)則。
      例如,用于上述情形1.b的LTS重載表達(dá)式是COUNT(DISTINCT“客戶數(shù)目”)。用于上述情形1.a的LTS重載是COUNT(“訂單數(shù)目”)。用于上述情形2.a的LTS重載是SUM(“訂單數(shù)目”)。
      參考附圖的圖1到圖11,可以最好地理解設(shè)施的各種實施例及其優(yōu)點。附圖中的元素不一定是按比例的,而是為了清楚示出本發(fā)明的原理作出了突出。在整個附圖中,相似的標(biāo)號用于各個附圖中相似和相應(yīng)的部分。
      圖1是示出通常并入在執(zhí)行該設(shè)施的至少一些計算機(jī)系統(tǒng)中的所選組件的框圖。這些計算機(jī)系統(tǒng)100可以包括一個或多個中央處理單元(“CPU”)102,用于執(zhí)行計算機(jī)程序;計算機(jī)存儲器104,用于當(dāng)程序和數(shù)據(jù)(包括數(shù)據(jù)結(jié)構(gòu))被使用時存儲程序和數(shù)據(jù);永久存儲設(shè)備106,例如硬盤驅(qū)動器,用于永久存儲程序和數(shù)據(jù);計算機(jī)可讀介質(zhì)驅(qū)動器108,例如CD-ROM驅(qū)動器,用于讀取存儲在計算機(jī)可讀介質(zhì)中的程序和數(shù)據(jù);以及網(wǎng)絡(luò)連接110,用于例如經(jīng)由因特網(wǎng)將計算機(jī)系統(tǒng)連接到其他計算機(jī)系統(tǒng),用于交換程序和/或數(shù)據(jù)(包括數(shù)據(jù)結(jié)構(gòu))。
      可以在由計算機(jī)系統(tǒng)100或其他設(shè)備執(zhí)行的諸如程序模塊之類的計算機(jī)可讀介質(zhì)的總的上下文中描述該設(shè)施。一般而言,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等,它們執(zhí)行特定任務(wù)或者實現(xiàn)特定抽象數(shù)據(jù)類型。存儲器104和永久存儲設(shè)備106是計算機(jī)可讀介質(zhì),其可以包含實現(xiàn)設(shè)施的指令。應(yīng)當(dāng)意識到,除了實現(xiàn)設(shè)施的指令之外,存儲器104和永久存儲設(shè)備106還可以具有各種其他內(nèi)容。
      應(yīng)當(dāng)意識到,計算機(jī)系統(tǒng)100可以包括用于顯示程序輸出的一個或多個顯示設(shè)備和用于接收用戶輸入的一個或多個輸入設(shè)備,所述顯示設(shè)備例如是視頻監(jiān)視器或LCD面板,所述輸入設(shè)備例如是鍵盤、麥克風(fēng)或者諸如鼠標(biāo)之類的點選設(shè)備。盡管上述配置的計算機(jī)系統(tǒng)100一般用于支持設(shè)施的操作,但是應(yīng)當(dāng)意識到,該設(shè)施也可以利用各種類型和配置并且具有各種組件的設(shè)備來實現(xiàn)。
      在下面的討論中,結(jié)合各種說明性實施例描述了設(shè)施的實施例。應(yīng)當(dāng)意識到,設(shè)施的實施例也可以以各種方式用在與這些示例極大不同的環(huán)境中。
      圖2A到圖2C示出了根據(jù)一些實施例由設(shè)施用來執(zhí)行相異計數(shù)度量的方法200的流程圖。在步驟202,設(shè)施接收到請求對明細(xì)表的標(biāo)識符進(jìn)行相異計數(shù)的查詢。該查詢可以包括一個或多個約束。在步驟204,設(shè)施標(biāo)識出與該明細(xì)表相對應(yīng)的聚合表。在步驟206,設(shè)施對標(biāo)識出的聚合表進(jìn)行檢查來確定是否存在包含被相異計數(shù)的標(biāo)識符的聚合表。
      如果存在包含被相異計數(shù)的標(biāo)識符的聚合表,則在步驟208,設(shè)施檢查該聚合表的每行來確定被相異計數(shù)的標(biāo)識符在該聚合表的每行中是否是不同的。如果被相異計數(shù)的標(biāo)識符在聚合表的每行中是不同的,則在步驟210中,設(shè)施對聚合表的滿足所指定的查詢約束的行執(zhí)行計數(shù)操作,以導(dǎo)出所請求的相異計數(shù)度量。在這里,設(shè)施通過利用聚合導(dǎo)航導(dǎo)出相異計數(shù)度量來提供性能增強(qiáng)。換言之,設(shè)施通過對更小的聚合表執(zhí)行更快的計數(shù)操作來提供性能增強(qiáng)。
      否則,如果被相異計數(shù)的標(biāo)識符不是在聚合表的每行中都不同,則在步驟212,設(shè)施對聚合表的滿足所指定的查詢約束的行執(zhí)行相異計數(shù)操作,以導(dǎo)出所請求的相異計數(shù)度量。在這里,設(shè)施通過利用聚合導(dǎo)航導(dǎo)出相異計數(shù)度量來提供性能增強(qiáng)。換言之,設(shè)施通過對更小的聚合表執(zhí)行相異計數(shù)操作來提供性能增強(qiáng)。
      如果在步驟206設(shè)施確定出不存在包含被相異計數(shù)的標(biāo)識符的聚合表,則在步驟214,設(shè)施進(jìn)行檢查來確定是否存在這樣的聚合表該聚合表的行包含對被相異計數(shù)的標(biāo)識符的計數(shù)。每個計數(shù)指示對于維度值的不同組合,被相異計數(shù)的標(biāo)識符在明細(xì)表中出現(xiàn)的次數(shù)。每個維度值位于其維度的特定級別上。如果存在這樣的聚合表該聚合表的行包含對被相異計數(shù)的標(biāo)識符的計數(shù),則在步驟216,設(shè)施確定是否存在指定的查詢約束要處理。如果存在指定的查詢約束要處理,則在步驟218,設(shè)施進(jìn)行檢查來確定當(dāng)前正被處理的指定約束是否是在與聚合表的維度值相同或更高的級別上的依賴維度的約束。
      如果當(dāng)前正處理的指定約束是在與聚合表的維度值相同或者更高級別上的依賴維度的約束,則設(shè)施返回到步驟216來對另一個要處理的查詢約束進(jìn)行處理。否則,如果當(dāng)前正處理的指定約束不是在與聚合表的維度值相同或者更高級別上的依賴維度的約束,則在步驟220,設(shè)施進(jìn)行檢查來確定當(dāng)前正被處理的指定約束是否是在與聚合表的維度值相同的級別上的獨立維度的約束。
      如果當(dāng)前正被處理的指定約束是在與聚合表的維度值相同的級別上的獨立維度的約束,則設(shè)施返回步驟216來對另一個要處理的查詢約束進(jìn)行處理。否則,如果當(dāng)前正被處理的指定約束是在與聚合表的維度值不相同的級別上的獨立維度的約束,則在步驟222,設(shè)施對明細(xì)表的滿足指定的查詢約束的行執(zhí)行相異計數(shù)操作,以導(dǎo)出所請求的相異計數(shù)度量。在這種情形中,由于設(shè)施無法利用聚合表來導(dǎo)出相異計數(shù)度量,所以不存在增強(qiáng)性能。
      如果在步驟216設(shè)施確定沒有更多指定的查詢約束要處理,則在步驟224,設(shè)施對聚合表的維度值滿足所有指定的查詢約束的行中包含的計數(shù)求和,以導(dǎo)出所請求的相異計數(shù)度量。換言之,只要查詢中的約束在級別上與聚合表中的獨立維度的級別匹配,就可以對計數(shù)求和來給出正確的相異計數(shù)答案。在這里,設(shè)施檢查查詢中包含的每個約束并且確定這些約束中的每個是對在與聚合表的維度值相同或者更高的級別上的依賴維度的約束,還是對在與聚合表的維度值相同的級別上的獨立維度的約束。設(shè)施然后可以在與聚合表的維度值相同(即,剛好)或者比聚合表的維度值高的級別上的依賴維度之間和在與聚合表的維度值相同的級別上的獨立維度之間進(jìn)行求和。
      在這里,設(shè)施確定以下之一(1)聚合表僅包含依賴于被相異計數(shù)的標(biāo)識符的維度(步驟218),并且來自聚合表的適當(dāng)?shù)男械挠嫈?shù)(即,聚合表的維度值滿足所有指定的查詢約束的行)可以被求和來獲得正確的相異計數(shù)(步驟224);(2)聚合表包含一些依賴于被相異計數(shù)的標(biāo)識符的維度和一些獨立于被相異計數(shù)的標(biāo)識符的維度(步驟218和步驟220),并且來自聚合表的適當(dāng)?shù)男械挠嫈?shù)(即,聚合表的維度值滿足所有指定的查詢約束的行)可以被求和來獲得正確的相異計數(shù)(步驟224);或者聚合表中的所有維度都獨立于被相異計數(shù)的標(biāo)識符(步驟220),并且從而當(dāng)且僅當(dāng)查詢的級別與表的級別準(zhǔn)確匹配時才可以使用聚合。因此,設(shè)施通過利用聚合導(dǎo)航導(dǎo)出相異計數(shù)度量來提供性能增強(qiáng)。換言之,設(shè)施通過對更小的聚合表的適當(dāng)?shù)男袌?zhí)行更快的求和操作來提供性能增強(qiáng)。
      如果在步驟214設(shè)施確定出不存在具有包含對被相異計數(shù)的標(biāo)識符的計數(shù)的行的聚合表,則在步驟226,設(shè)施對明細(xì)表的滿足指定的查詢約束的行執(zhí)行相異計數(shù)操作,以導(dǎo)出所請求的相異計數(shù)度量。在這種情形中,由于設(shè)施未利用聚合導(dǎo)航來導(dǎo)出相異計數(shù)度量,所以未增強(qiáng)性能。
      本領(lǐng)域技術(shù)人員將意識到,對于這里所述的該過程和方法以及其他過程和方法,在這些過程和方法中執(zhí)行的功能可以按照不同的順序?qū)崿F(xiàn)。此外,概括的步驟僅是示例性的,并且一些步驟可以是可選的、可以與較少的步驟組合、或者延伸到額外的步驟中,而不脫離本發(fā)明的本質(zhì)。
      將結(jié)合以下示例進(jìn)一步說明方法200的各個方面。應(yīng)當(dāng)意識到,出于說明目的提供了以下示例,而不應(yīng)當(dāng)認(rèn)為是窮盡或完備方式的。這些示例假定了數(shù)據(jù)庫包括圖3所示的明細(xì)表30和圖4A到圖4C所示的與明細(xì)表30相對應(yīng)的維度表。每個維度表包含描述表30中的記錄的屬性。
      如圖所示,明細(xì)表30包含由客戶發(fā)出的10條訂單記錄。每條記錄被示為具有5列或維度,標(biāo)記為“訂單號”、“產(chǎn)品”、“客戶”、“訂單日期”和“遞送郵編”。如果第二維度中的值可以具有第一維度中的一個值,或者可以僅與第一維度中的一個值相關(guān)聯(lián),則第一維度“依賴”于第二維度。否則,如果第二維度中的值可以具有第一維度中的多個值,或者可以與第一維度中的多個值相關(guān)聯(lián),則第一維度“獨立”于第二維度。在表30中,“客戶”依賴于“訂單號”,因為每個訂單僅與一個客戶相關(guān)聯(lián),或者僅由一個客戶發(fā)出。類似地,“訂單日期”依賴于“訂單號”,因為每個訂單與單個日期相關(guān)聯(lián),或者僅在單個日期被發(fā)出。相反,“產(chǎn)品”獨立于“訂單號”,因為每個訂單可以是多個產(chǎn)品的訂單。同樣,“遞送郵編”也獨立于“訂單號”,因為訂單中的產(chǎn)品可以被向多個郵政編碼處遞送,例如,訂單可以是多個產(chǎn)品的訂單,其中一些產(chǎn)品向第一郵政編碼處遞送,而其余的產(chǎn)品向不同的第二郵政編碼處遞送。
      維度表1(圖4A)包含關(guān)于表30中的“產(chǎn)品”維度的信息,并且示出了將產(chǎn)品進(jìn)一步劃分到其品牌的層次結(jié)構(gòu)。維度表2(圖4B)包含關(guān)于表30中的“遞送郵編”維度的信息,并且示出了將郵編進(jìn)一步劃分到其對應(yīng)的州的層次結(jié)構(gòu)。維度表3(圖4C)包含關(guān)于表30中的“訂單日期”維度的信息,并且示出了將訂單日期中的月進(jìn)一步劃分到其對應(yīng)的年的層次結(jié)構(gòu)。
      示例1被相異計數(shù)的標(biāo)識符在聚合表中出現(xiàn)并且是唯一的——使用計數(shù)操作作為示例,用戶可能對獲得如明細(xì)表30所記錄的由每個客戶發(fā)出的不同訂單的數(shù)目的相異計數(shù)感興趣。在這里,設(shè)施可以接收來自用戶的字符串“Request客戶,訂單數(shù)目”,設(shè)施將該字符串理解為對由每個客戶發(fā)出的不同訂單的數(shù)目進(jìn)行相異計數(shù)查詢(步驟202)。設(shè)施確定出“客戶”是對相異計數(shù)查詢的約束。設(shè)施還確定出可以通過對明細(xì)表30中的標(biāo)識符“訂單號”執(zhí)行相異計數(shù)來獲得對不同訂單的數(shù)目的相異計數(shù)查詢。
      假定設(shè)施將圖5所示的Agg_Table_1標(biāo)識為與明細(xì)表30相關(guān)聯(lián)的聚合表(步驟204),并且該表包含回復(fù)查詢所必需的標(biāo)識符“訂單號”,例如,是被相異計數(shù)的標(biāo)識符的聚合(步驟206),則設(shè)施對Agg_Table_1進(jìn)行檢查來看標(biāo)識符“訂單號”在Agg_Table_1的每行中是否不同(步驟208)。如圖所示,Agg_Table_1包含三列,第一列指示訂單號、第二列指示客戶、第三列指示日期。可見,標(biāo)識符“訂單號”在Agg_Table_1的每行中都不同,設(shè)施得出結(jié)論它可以通過對Agg_Table_1中滿足約束(即,客戶)的行進(jìn)行計數(shù)來回答相異計數(shù)查詢(步驟210)。
      假定設(shè)施或者結(jié)合了結(jié)構(gòu)化查詢語言(SQL)處理器的功能和特征,或者耦合到SQL處理器,則設(shè)施可以將接收到的字符串轉(zhuǎn)換為以下SQL表達(dá)式來確定所請求的對由每個客戶發(fā)出的不同訂單的數(shù)目的相異計數(shù)SELECT客戶COUNT(訂單號)FROM Agg_Table_1GROUP BY客戶在一個實施例中,設(shè)施的SQL處理器組件對上述SQL表達(dá)式進(jìn)行處理,并且產(chǎn)生如圖6所示的Distinct_Count_Table_1,該表包含對由每個客戶發(fā)出的不同訂單的數(shù)目的相異計數(shù)。如圖所示,Distinct_Count_Table_1包含兩列,一列指示每個客戶,另一列包含所發(fā)出的訂單的數(shù)目的相異計數(shù)。從Distinct_Count_Table_1可見,客戶1發(fā)出了兩個訂單,客戶2發(fā)出了兩個訂單。
      設(shè)施可以通過對Agg_Table_1應(yīng)用計數(shù)運(yùn)算符來回答其他相異計數(shù)查詢。例如,用戶可能請求對如明細(xì)表30中記錄的每年發(fā)出的不同訂單的數(shù)目進(jìn)行相異計數(shù),并且向設(shè)施提交字符串“Request年,訂單號”。設(shè)施將接收到的字符串解釋為對每年發(fā)出的不同訂單的數(shù)目的相異計數(shù)查詢,并且確定出被相異計數(shù)的標(biāo)識符是“訂單號”,并且對相異計數(shù)查詢的約束是“年”。
      如圖可見標(biāo)識符“訂單號”在Agg_Table_1的每行中都不同,設(shè)施得出結(jié)論它可以通過對Agg_Table_1的滿足約束(即,年)的行進(jìn)行計數(shù)來回答相異計數(shù)查詢。因此,設(shè)施將接收到的字符串轉(zhuǎn)換為以下SQL表達(dá)式SELECT年COUNT(訂單號)FROM Agg_Table_1GROUP BY年上述SQL表達(dá)式被處理來確認(rèn)存在三個2003年發(fā)出的訂單和一個2004年發(fā)出的訂單。
      類似地,通過對Agg_Table_1執(zhí)行計數(shù)操作,可以獲得對如明細(xì)表30所記錄的2003年1月由每個客戶發(fā)出的不同訂單的數(shù)目的相異計數(shù)。該相異計數(shù)請求可由以下字符串表示“Request客戶,日期=2003年1月的訂單號”。設(shè)施確定出被相異計數(shù)的標(biāo)識符是“訂單號”,并且對該相異計數(shù)查詢的約束是“客戶”和“日期=2003年1月”。
      如圖可見標(biāo)識符“訂單號”在Agg_Table_1的每行中都不同,設(shè)施得出結(jié)論它可以通過對Agg_Table_1的滿足約束(即,客戶和日期=2003年1月)的行進(jìn)行計數(shù)來回答相異計數(shù)查詢。因此,設(shè)施將接收到的字符串轉(zhuǎn)換為以下SQL表達(dá)式SELECT客戶COUNT(訂單號)FROM Agg_Table_1WHERE日期=‘2003年1月’GROUP BY年上述SQL表達(dá)式被處理來確認(rèn)客戶1在2003年1月發(fā)出了一個訂單,而客戶2在2003年1月未發(fā)出訂單(發(fā)出了零個訂單)。
      示例2被相異計數(shù)的標(biāo)識符在聚合表中出現(xiàn)但是不唯一——使用相異計數(shù)操作作為示例,用戶可能對獲得如明細(xì)表30所記錄的按照每個品牌的不同訂單的數(shù)目的相異計數(shù)感興趣。在這里,設(shè)施可以接收來自用戶的字符串“Request品牌,訂單號”,設(shè)施將該字符串理解為對按照每個品牌的不同訂單的數(shù)目進(jìn)行相異計數(shù)查詢(步驟202)。設(shè)施確定出“品牌”是對相異計數(shù)查詢的約束。設(shè)施還確定出可以通過對明細(xì)表30中的標(biāo)識符“訂單號”執(zhí)行相異計數(shù)來獲得對不同訂單的數(shù)目的相異計數(shù)查詢。
      假定設(shè)施將圖7所示的Agg_Table_2標(biāo)識為與明細(xì)表30相關(guān)聯(lián)的聚合表(步驟204),并且該表包含回答查詢所必需的標(biāo)識符“訂單號”,例如,是被相異計數(shù)的標(biāo)識符的聚合(步驟206),則設(shè)施對Agg_Table_2進(jìn)行檢查來看標(biāo)識符“訂單號”在Agg_Table_2的每行中是否不同(步驟208)。如圖所示,Agg_Table_2包含三列,第一列指示訂單號、第二列指示品牌、第三列指示日期??梢?,標(biāo)識符“訂單號”在Agg_Table_2的每行中并不都不同,設(shè)施得出結(jié)論它可以通過對Agg_Table_2的滿足約束(即,品牌)的行進(jìn)行相異計數(shù)來回答相異計數(shù)查詢(步驟212)。因此,設(shè)施將接收到的字符串轉(zhuǎn)換為以下SQL表達(dá)式SELECT品牌COUNT(DISTINCT訂單號)FROM Agg_Table_2GROUP BY品牌上述SQL表達(dá)式被處理來確認(rèn)存在四個按照品牌1發(fā)出的訂單和三個按照品牌2發(fā)出的訂單。
      設(shè)施可以通過對Agg_Table_2應(yīng)用計數(shù)運(yùn)算符來回答其他相異計數(shù)查詢。例如,用戶可能請求對如明細(xì)表30中記錄的每年發(fā)出的不同訂單的數(shù)目進(jìn)行相異計數(shù),并且向設(shè)施提交了字符串“Request年,訂單號”。設(shè)施將接收到的字符串解釋為對每年發(fā)出的不同訂單的數(shù)目的相異計數(shù)查詢,并且確定出被相異計數(shù)的標(biāo)識符是“訂單號”,并且對相異計數(shù)查詢的約束是“年”。
      如圖可見標(biāo)識符“訂單號”在Agg_Table_2的每行中并不都不同,設(shè)施得出結(jié)論它可以通過對Agg_Table_2的滿足約束(即,年)的行進(jìn)行相異計數(shù)來回答相異計數(shù)查詢。因此,設(shè)施將接收到的字符串轉(zhuǎn)換為以下SQL表達(dá)式SELECT年COUNT(DISTINCT訂單號)FROM Agg_Table_2GROUP BY年上述SQL表達(dá)式被處理來確認(rèn)存在三個2003年發(fā)出的訂單和一個2004年發(fā)出的訂單。
      示例3聚合表不包含被相異計數(shù)的標(biāo)識符——僅包含依賴維度作為示例,用戶可能對獲得如明細(xì)表30所記錄的每年發(fā)出的不同訂單的數(shù)目的相異計數(shù)感興趣。在這里,設(shè)施可以接收來自用戶的字符串“Request年,訂單號”,設(shè)施將該字符串理解為對每年發(fā)出的不同訂單的數(shù)目進(jìn)行相異計數(shù)查詢(步驟202)。設(shè)施確定出“年”是對相異計數(shù)查詢的約束。設(shè)施還確定出可以通過對明細(xì)表30中的標(biāo)識符“訂單號”執(zhí)行相異計數(shù)來獲得對不同訂單的數(shù)目的相異計數(shù)查詢。
      假定設(shè)施將圖8所示的Agg_Table_3標(biāo)識為與明細(xì)表30相關(guān)聯(lián)的聚合表(步驟204),并且多個行包含對被相異計數(shù)的標(biāo)識符“訂單號”的計數(shù),例如,是被相異計數(shù)的標(biāo)識符的聚合(步驟208),則設(shè)施對Agg_Table_3進(jìn)行檢查來確定Agg_Table_3中包含的維度的類型。如圖所示,Agg_Table_3包含二列,第一列指示日期、第二列包含對訂單的數(shù)目的計數(shù)。在明細(xì)表30中,訂單可以僅有一個客戶和一個日期。如果聚合表僅包含依賴維度,則設(shè)施可以跨依賴維度求和來導(dǎo)出相異計數(shù)。至于Agg_Table_3,設(shè)施確定出Agg_Table_3僅包含依賴維度,并且約束“年”是對在與Agg_Table_3中的值(例如,月和年)相同或者比Agg_Table_3中的值高的級別上的依賴維度(即,日期)的約束(步驟218)。維度年處于比日期(例如,月和年)高的級別上,如維度表3(圖4C)所示。因此,設(shè)施得出結(jié)論它可以通過對Agg_Table_3的維度值(即,日期值)滿足查詢中的所有約束(即,年)的行中包含的計數(shù)(即,對訂單的數(shù)目的計數(shù))求和來回答相異計數(shù)查詢(步驟224)。因此,設(shè)施將接收到的字符串轉(zhuǎn)換為以下SQL表達(dá)式SELECT年COUNT(訂單號)FROM Agg_Table_3GROUP BY年上述SQL表達(dá)式被處理來確認(rèn)存在三個2003年發(fā)出的訂單和一個2004年發(fā)出的訂單。
      示例4聚合表不包含被相異計數(shù)的標(biāo)識符——包含某些依賴維度和某些獨立維度作為示例,用戶可能對獲得如明細(xì)表30所記錄的按照日期和品牌的每個組合的不同訂單的數(shù)目的相異計數(shù)感興趣。在這里,設(shè)施可以接收來自用戶的字符串“Request日期,品牌,訂單號”,設(shè)施將該字符串理解為對按照日期和品牌的每個組合發(fā)出的不同訂單的數(shù)目進(jìn)行相異計數(shù)查詢(步驟202)。設(shè)施確定出“日期”和“品牌”是對相異計數(shù)查詢的約束。設(shè)施還確定出可以通過對明細(xì)表30中的標(biāo)識符“訂單號”執(zhí)行相異計數(shù)來獲得對不同訂單的數(shù)目的相異計數(shù)查詢。
      假定設(shè)施將圖9所示的Agg_Table_4標(biāo)識為與明細(xì)表30相關(guān)聯(lián)的聚合表(步驟204),并且多個行包含對被相異計數(shù)的標(biāo)識符“訂單號”的計數(shù),例如,是被相異計數(shù)的標(biāo)識符的聚合(步驟208),則設(shè)施對Agg_Table_4進(jìn)行檢查來確定Agg_Table_4中包含的維度的類型。如圖所示,Agg_Table_4包含三列,第一列指示日期、第二列指示品牌、第三列包含對訂單的數(shù)目的計數(shù)。在明細(xì)表30中,訂單可以僅有一個日期,但是可能是針對多個產(chǎn)品,這多個產(chǎn)品可能是多個品牌的,如維度表1所示(圖4A)。如果聚合表包含一些依賴于標(biāo)識符“訂單號”的維度和一些獨立于標(biāo)識符的維度,則只要查詢在級別上與獨立維度的聚合表的級別匹配,則設(shè)施就可以對計數(shù)求和來導(dǎo)出相異計數(shù)。至于Agg_Table_4,設(shè)施確定出Agg_Table_4既包含依賴維度也包含獨立維度。設(shè)施也可以確定出約束“日期”是對在與Agg_Table_4中的值(例如,月和年)相同或者比Agg_Table_4中的值高的級別上的依賴維度(即,日期)的約束(步驟218),并且約束“品牌”是對在與Agg_Table_4中的值(例如,品牌1或品牌2)相同的級別上的獨立維度(即,品牌)的約束(步驟220)。因此,設(shè)施得出結(jié)論它可以通過對Agg_Table_4的維度值(即,日期和品牌值)滿足查詢中的所有約束(即,日期和品牌的組合)的行中包含的計數(shù)(即,對訂單的數(shù)目的計數(shù))求和來回答相異計數(shù)查詢(步驟224)。因此,設(shè)施將接收到的字符串轉(zhuǎn)換為以下SQL表達(dá)式SELECT日期,品牌COUNT(訂單號)FROM Agg_Table_4上述SQL表達(dá)式被處理來確認(rèn)存在以下訂單按照2003年1月和品牌2的組合發(fā)出的一個訂單;按照2003年2月和品牌1的組合發(fā)出的兩個訂單;按照2003年2月和品牌2發(fā)出的一個訂單;按照2004年1月和品牌1的組合發(fā)出的訂單;以及一個按照2004年1月和品牌2的組合發(fā)出的一個訂單。
      設(shè)施可以通過對Agg_Table_4應(yīng)用計數(shù)運(yùn)算符來回答其他相異計數(shù)查詢。例如,用戶可能請求對如明細(xì)表30中記錄的按照品牌和年的每個組合的不同訂單的數(shù)目進(jìn)行相異計數(shù),并且向設(shè)施提交了字符串“Request品牌,年,訂單號”。設(shè)施將接收到的字符串解釋為對按照年和品牌的每個組合發(fā)出的不同訂單的數(shù)目的相異計數(shù)查詢,并且確定出被相異計數(shù)的標(biāo)識符是“訂單號”,并且對相異計數(shù)查詢的約束是“品牌”和“年”。
      設(shè)施確定出Agg_Table_4既包含依賴維度也包含獨立維度。設(shè)施還確定出約束“年”是在對與Agg_Table_4中的值(例如,月和年)相同或者比Agg_Table_4中的值高的級別上的依賴維度(即,日期)的約束(步驟218),并且約束“品牌”是對在與Agg_Table_4中的值(例如,品牌1或品牌2)相同的級別上的獨立維度(即,品牌)的約束(步驟220)。因為設(shè)施將僅跨作為依賴維度的日期求和,所以設(shè)施得出結(jié)論它可以通過對Agg_Table_4的維度值(即,日期和品牌值)滿足查詢中的所有約束(即,年和品牌的組合)的行中包含的計數(shù)(即,對訂單的數(shù)目的計數(shù))求和來回答相異計數(shù)查詢(步驟224)。因此,設(shè)施將接收到的字符串轉(zhuǎn)換為以下SQL表達(dá)式SELECT品牌,年COUNT(訂單號)FROM Agg_Table_4GROUP BY品牌,年上述SQL表達(dá)式被處理來確認(rèn)存在以下訂單按照品牌1和2003年的組合發(fā)出的三個訂單;按照品牌2和2003年的組合發(fā)出的兩個訂單;按照品牌1和2004年的組合發(fā)出的一個訂單;以及按照品牌2和2004年的組合發(fā)出的一個訂單。
      相反,設(shè)施不能根據(jù)Agg_Table_4回答對每年發(fā)出的不同訂單的數(shù)目的相異計數(shù)的查詢,例如,“Request年,訂單號”,因為這將要求跨作為獨立維度的品牌進(jìn)行聚合。換言之,不存在Agg_Table_4的這樣的行這些行的維度值(即,日期和品牌值)滿足所指定的全部查詢約束(即,年)。在這里,查詢未命中對作為獨立維度的品牌的約束。在這種情形中,設(shè)施對明細(xì)表30執(zhí)行相異計數(shù)操作。
      示例5聚合表不包含被相異計數(shù)的標(biāo)識符——僅包含獨立維度作為示例,用戶可能對獲得如明細(xì)表30所記錄的按照品牌和州的每個組合的不同訂單的數(shù)目的相異計數(shù)感興趣。在這里,設(shè)施可以接收來自用戶的字符串“Request品牌,州,訂單號”,設(shè)施將該字符串理解為對按照品牌和日期的每個組合發(fā)出的不同訂單的數(shù)目進(jìn)行相異計數(shù)查詢(步驟202)。設(shè)施確定出“品牌”和“州”是對相異計數(shù)查詢的約束。設(shè)施還確定出可以通過對明細(xì)表30中的標(biāo)識符“訂單號”執(zhí)行相異計數(shù)來獲得對唯一的訂單的數(shù)目的相異計數(shù)查詢。
      假定設(shè)施將圖10所示的Agg_Table_5標(biāo)識為與明細(xì)表30相關(guān)聯(lián)的聚合表(步驟204),并且多個行包含對被相異計數(shù)的標(biāo)識符“訂單號”的計數(shù),例如,是被相異計數(shù)的標(biāo)識符的聚合(步驟208),則設(shè)施對Agg_Table_5進(jìn)行檢查來確定Agg_Table_5中包含的維度的類型。如圖所示,Agg_Table_5包含三列,第一列指示品牌、第二列指示州、第三列包含對訂單的數(shù)目的計數(shù)。在明細(xì)表30中,訂單可能針對多個產(chǎn)品,這多個產(chǎn)品可能是多個品牌的,如維度表1所示(圖4A),并且可能被運(yùn)送到多個郵政編碼處,這多個郵政編碼對應(yīng)于維度表2所示的多個州(圖4B)。如果聚合表僅包含獨立于被相異計數(shù)的標(biāo)識符“訂單號”的維度,則當(dāng)且僅當(dāng)對查詢的約束的級別與聚合表中的維度的級別準(zhǔn)確匹配時才可以使用聚合表中的聚合(即,相異計數(shù))。至于Agg_Table_5,設(shè)施確定出Agg_Table_5僅包含獨立維度。設(shè)施還確定出約束“品牌”是對在相同級別上的獨立維度(即,品牌)的約束,并且約束“州”是對在相同級別上的獨立維度(即,州)的約束。因此,設(shè)施得出結(jié)論它可以利用Agg_Table_5中包含的對訂單數(shù)目的相異計數(shù)來回答相異計數(shù)查詢。因此,設(shè)施將接收到的字符串轉(zhuǎn)換為以下SQL表達(dá)式SELECT品牌,州、相異訂單號FROM Agg_Table_5上述SQL表達(dá)式被處理來確認(rèn)存在以下訂單按照品牌1和州1的組合發(fā)出的四個訂單;按照品牌2和州1的組合發(fā)出的一個訂單;按照品牌1和州2的組合發(fā)出的零訂單;以及按照品牌2和州2的組合發(fā)出的三個訂單。
      類似地,通過利用以下SQL表達(dá)式,設(shè)施可以根據(jù)Agg_Table_5回答對按照品牌和州1的每個組合的不同訂單的數(shù)目的相異計數(shù)查詢,例如,“Request品牌,州,訂單號,其中州=‘州1’”SELECT品牌,州、相異訂單號FROM Agg_Table_5WHERE州=‘州1’上述SQL表達(dá)式被處理來確認(rèn)存在以下訂單按照品牌1和州1的組合發(fā)出的四個訂單;以及按照品牌2和州1的組合發(fā)出的一個訂單。
      相反,設(shè)施不能根據(jù)Agg_Table_5回答對每個品牌的不同訂單的數(shù)目的相異計數(shù)的查詢,例如,“Request品牌,訂單號”,因為這將要求跨作為獨立維度的州進(jìn)行聚合。換言之,查詢中的約束的級別與Agg_Table_5的維度的級別不準(zhǔn)確匹配。在這種情形中,設(shè)施對明細(xì)表30執(zhí)行相異計數(shù)操作。
      圖11示出了根據(jù)一些實施例由設(shè)施用來標(biāo)識出聚合表以在回答相異計數(shù)查詢時使用的方法的流程圖。作為示例,設(shè)施可能已接收到請求對明細(xì)表中的標(biāo)識符進(jìn)行相異計數(shù)的查詢。在步驟1102,設(shè)施標(biāo)識出與要進(jìn)行查詢的明細(xì)表相對應(yīng)的聚合表。具體地說,設(shè)施標(biāo)識出作為被查詢的標(biāo)識符的聚合的聚合表。在一個實施例中,設(shè)施可以根據(jù)聚合表的名稱標(biāo)識出它們。例如,數(shù)據(jù)庫管理員可能已實現(xiàn)了一種命名規(guī)則,該規(guī)則指明了聚合表及其相關(guān)明細(xì)表之間的關(guān)系。在這種情形中,聚合表的名稱標(biāo)識出相關(guān)的明細(xì)表,并且提供對該關(guān)系的基礎(chǔ)的指示。
      在另一個實施例中,可以配置過程來對聚合表的創(chuàng)建和每個聚合表進(jìn)行監(jiān)視,并且提供對與數(shù)據(jù)庫中的明細(xì)表的關(guān)系的基礎(chǔ)和相關(guān)明細(xì)表的指示。設(shè)施然后可以檢查該數(shù)據(jù)庫中包含的數(shù)據(jù)來標(biāo)識出聚合表,其中這些聚合表與明細(xì)表相關(guān)聯(lián)并且是被查詢的標(biāo)識符的聚合。在又一個實施例中,設(shè)施可以根據(jù)與聚合表相關(guān)聯(lián)的定義和/或元數(shù)據(jù)標(biāo)識出與明細(xì)表相關(guān)聯(lián)的聚合表。例如,工具可以為每個聚合表創(chuàng)建元數(shù)據(jù),其中元數(shù)據(jù)包括關(guān)于與明細(xì)表的關(guān)系的基礎(chǔ)和相關(guān)明細(xì)表的數(shù)據(jù)。
      在步驟1104,設(shè)施放棄在回答當(dāng)前的相異計數(shù)查詢中不適用的聚合表。例如,設(shè)施放棄不是被查詢的標(biāo)識符的聚合的聚合表。在步驟1106,設(shè)施對尚未放棄的聚合表進(jìn)行檢查,來確定是否存在至少一個包含被相異計數(shù)的標(biāo)識符的聚合表。如果存在至少一個包含被相異計數(shù)的標(biāo)識符的聚合表,則在步驟1108,設(shè)施選中最高顆粒的聚合表。如果僅有一個聚合表(步驟1106),則該聚合表就是最高顆粒的聚合表。換言之,設(shè)施選中最小的聚合表,然后利用選中的聚合表來繼續(xù)處理相異計數(shù)查詢。
      如果沒有聚合表包含被相異計數(shù)的標(biāo)識符,則在步驟1110,設(shè)施對尚未放棄的聚合表進(jìn)行檢查,來確定是否存在至少一個包含對被相異計數(shù)的標(biāo)識符的計數(shù)的聚合表。如果存在至少一個包含對被相異計數(shù)的標(biāo)識符的計數(shù)的聚合表,則在步驟1112,設(shè)施選中最高顆粒的聚合表,然后利用該選中的聚合表來繼續(xù)處理相異計數(shù)查詢。如果僅有一個聚合表(步驟1110),則該聚合表就是最高顆粒的聚合表。
      如果沒有聚合表包含對被相異計數(shù)的標(biāo)識符的計數(shù),則在步驟1114,設(shè)施對尚未放棄的聚合表進(jìn)行檢查,來確定是否存在至少一個包含對被相異計數(shù)的標(biāo)識符的相異計數(shù)的聚合表。如果存在至少一個包含對被相異計數(shù)的標(biāo)識符的相異計數(shù)的聚合表,則在步驟1116,設(shè)施選中最高顆粒的聚合表,然后利用該選中的聚合表來繼續(xù)處理相異計數(shù)查詢。如果僅有一個聚合表(步驟1114),則該聚合表就是最高顆粒的聚合表。
      否則,如果設(shè)施未能成功地標(biāo)識出在回答查詢中要使用的聚合表,則設(shè)施利用明細(xì)表來繼續(xù)處理相異計數(shù)查詢。
      從前述可意識到,這里為了說明描述了本發(fā)明的實施例,但是在不脫離本發(fā)明的精神和范圍的情況下,可以作出各種實施例。因此,除了根據(jù)所附權(quán)利要求書中明確指出的元素外,本發(fā)明不受限制。
      權(quán)利要求
      1.一種計算系統(tǒng)中的用于處理相異計數(shù)查詢的方法,包括接收請求對明細(xì)表的相異計數(shù)的查詢,所述查詢指定所述明細(xì)表的要被唯一計數(shù)的標(biāo)識符類型,所述查詢還指定對所述明細(xì)表的維度的零個或更多個約束,所指定的約束中的每個是對獨立維度或依賴維度的約束,并且所指定的約束中的每個處于其維度的特定級別上;標(biāo)識出與所述明細(xì)表相對應(yīng)的聚合表;確定所標(biāo)識出的聚合表的行是否包含(1)所指定的類型的標(biāo)識符,或者(2)這樣的計數(shù),其中每個計數(shù)指示針對維度值的不同組合,所指定的類型的不同標(biāo)識符在所述明細(xì)表中出現(xiàn)的數(shù)目,其中每個維度值處于其維度的特定級別上;如果所標(biāo)識出的聚合表的行包含所指定的類型的標(biāo)識符,則如果所指定的類型的標(biāo)識符中的每個在所標(biāo)識出的聚合表中唯一地出現(xiàn),則對所述聚合表的滿足所指定的約束的行執(zhí)行簡單計數(shù)操作來獲得所述相異計數(shù)查詢的結(jié)果;如果所指定的類型的標(biāo)識符中的每個在所標(biāo)識出的聚合表中不是唯一地出現(xiàn),則對所述聚合表的滿足所指定的約束的行執(zhí)行相異計數(shù)操作來獲得所述相異計數(shù)查詢的結(jié)果;如果所標(biāo)識出的聚合表的每行包含這樣的計數(shù),其中每個計數(shù)指示針對維度值的不同組合,所指定的類型的不同標(biāo)識符在所述明細(xì)表中出現(xiàn)的數(shù)目,其中每個維度值處于其維度的特定級別上,則對于每個被指定的約束,確定所指定的約束是(1)對在與所述聚合表的維度值相同的級別上的獨立維度的約束,還是(2)對在與所述聚合表的維度值相同或者更高的級別上的依賴維度的約束;如果每個被指定的約束都是(1)對在與所述聚合表的維度值相同的級別上的獨立維度的約束,或者(2)對在與所述聚合表的維度值相同或者更高的級別上的依賴維度的約束,則對所述聚合表中維度值滿足全部所述被指定的約束的行中包含的計數(shù)求和來獲得所述相異計數(shù)查詢的結(jié)果;以及如果并非所有被指定的約束都是(1)對在與所述聚合表的維度值相同的級別上的獨立維度的約束,或者(2)對在與所述聚合表的維度值相同或者更高的級別上的依賴維度的約束,則對所述明細(xì)表中滿足所指定的約束的行執(zhí)行相異計數(shù)操作來獲得所述相異計數(shù)查詢的結(jié)果。
      2.如權(quán)利要求1所述的方法,其中,所述聚合表是多個聚合表之一,并且所述聚合表處于所述多個聚合表中的最高顆粒上。
      3.一種計算機(jī)可讀存儲介質(zhì),所述介質(zhì)的內(nèi)容致使計算機(jī)執(zhí)行以下步驟接收請求對明細(xì)表的標(biāo)識符的相異計數(shù)的查詢,所述查詢指定對所述明細(xì)表的維度的零個或更多個約束;標(biāo)識出與所述明細(xì)表相關(guān)聯(lián)的聚合表;響應(yīng)于標(biāo)識出所述聚合表,確定所述聚合表是否包含被相異計數(shù)的標(biāo)識符;響應(yīng)于確定出所述聚合表包含被相異計數(shù)的標(biāo)識符確定所述標(biāo)識符在所述聚合表的每行中是否都不同;以及響應(yīng)于確定出所述標(biāo)識符在所述聚合表的每行中都不同,對所述聚合表中滿足所指定的約束的行執(zhí)行計數(shù)操作來獲得所述相異計數(shù)查詢的結(jié)果。
      4.如權(quán)利要求3所述的計算機(jī)可讀存儲介質(zhì),其中,所述約束中的每個是對所述明細(xì)表的維度的約束。
      5.如權(quán)利要求4所述的計算機(jī)可讀存儲介質(zhì),其中,所述約束中的每個是對獨立維度或依賴維度的約束。
      6.如權(quán)利要求5所述的計算機(jī)可讀存儲介質(zhì),其中,所述約束中的每個處于其維度的特定級別上。
      7.如權(quán)利要求3所述的計算機(jī)可讀存儲介質(zhì),其中,所述聚合表是多個聚合表之一,并且所述聚合表處于所述多個聚合表中的最高顆粒上。
      8.如權(quán)利要求3所述的計算機(jī)可讀存儲介質(zhì),還包括致使所述計算機(jī)執(zhí)行以下處理的內(nèi)容響應(yīng)于確定出所述標(biāo)識符在所述聚合表的每行中并非都不同,對所述聚合表中滿足所指定的約束的行執(zhí)行相異計數(shù)操作來獲得所述相異計數(shù)查詢的結(jié)果。
      9.如權(quán)利要求3所述的計算機(jī)可讀存儲介質(zhì),還包括致使所述計算機(jī)執(zhí)行以下處理的內(nèi)容響應(yīng)于標(biāo)識出所述聚合表,確定所述聚合表的行是否包含對所述被相異計數(shù)的標(biāo)識符的計數(shù),其中每個計數(shù)指示針對維度值的不同組合,所述標(biāo)識符在所述明細(xì)表中出現(xiàn)的次數(shù),每個維度值處于其維度的特定級別上;響應(yīng)于確定出所述聚合表的行包含對所述被相異計數(shù)的標(biāo)識符的計數(shù),確定所述聚合表是否具有僅涉及依賴于所述被相異計數(shù)的標(biāo)識符的維度的維數(shù);以及響應(yīng)于確定出所述聚合表具有僅涉及依賴于所述被相異計數(shù)的標(biāo)識符的維度的維數(shù),對所述聚合表中維度值滿足全部所述被指定的約束的行中包含的計數(shù)求和來獲得所述相異計數(shù)查詢的結(jié)果。
      10.如權(quán)利要求3所述的計算機(jī)可讀存儲介質(zhì),還包括致使所述計算機(jī)執(zhí)行以下處理的內(nèi)容響應(yīng)于標(biāo)識出所述聚合表,確定所述聚合表的行是否包含對所述被相異計數(shù)的標(biāo)識符的計數(shù),其中每個計數(shù)指示針對維度值的不同組合,所述標(biāo)識符在所述明細(xì)表中出現(xiàn)的次數(shù),每個維度值處于其維度的特定級別上;響應(yīng)于確定出所述聚合表的行包含對所述被相異計數(shù)的標(biāo)識符的計數(shù),確定所述聚合表是否具有至少一個依賴于所述被相異計數(shù)的標(biāo)識符的維度和至少一個獨立于所述被相異計數(shù)的標(biāo)識符的維度;響應(yīng)于確定出所述聚合表具有至少一個依賴于所述被相異計數(shù)的標(biāo)識符的維度和至少一個獨立于所述被相異計數(shù)的標(biāo)識符的維度,確定所述查詢是否在級別上與對所述獨立維度的聚合的級別相匹配;以及響應(yīng)于所述查詢在級別上與所述對獨立維度的聚合的級別相匹配,對所述聚合表中維度值滿足全部所述被指定的約束的行中包含的計數(shù)求和來獲得所述相異計數(shù)查詢的結(jié)果。
      11.如權(quán)利要求3所述的計算機(jī)可讀存儲介質(zhì),還包括致使所述計算機(jī)執(zhí)行以下處理的內(nèi)容響應(yīng)于標(biāo)識出所述聚合表,確定所述聚合表的行是否包含對所述被相異計數(shù)的標(biāo)識符的計數(shù),其中每個計數(shù)指示針對維度值的不同組合,所述標(biāo)識符在所述明細(xì)表中出現(xiàn)的次數(shù),每個維度值處于其維度的特定級別上;響應(yīng)于確定出所述聚合表的行包含對所述被相異計數(shù)的標(biāo)識符的計數(shù),確定所述聚合表是否具有僅涉及獨立于所述被相異計數(shù)的標(biāo)識符的維度的維數(shù);以及響應(yīng)于確定出所述聚合表具有僅涉及獨立于所述被相異計數(shù)的標(biāo)識符的維度的維數(shù),只有在所述查詢中的約束在級別上與所述聚合表的級別準(zhǔn)確匹配的情況下,才利用在所述聚合表中維度值滿足全部所述被指定的約束的行中包含的聚合計數(shù)來獲得所述相異計數(shù)查詢的結(jié)果。
      12.一種計算系統(tǒng)中的用于獲得相異計數(shù)度量的方法,所述方法包括接收請求對明細(xì)表的標(biāo)識符的相異計數(shù)的查詢,所述查詢指定對所述明細(xì)表的維度的零個或更多個約束;標(biāo)識出與所述明細(xì)表相關(guān)聯(lián)的聚合表;響應(yīng)于標(biāo)識出所述聚合表,確定所述聚合表是否包含被相異計數(shù)的標(biāo)識符;響應(yīng)于確定出所述聚合表包含被相異計數(shù)的標(biāo)識符確定所述標(biāo)識符在所述聚合表的每行中是否都不同;以及響應(yīng)于確定出所述標(biāo)識符在所述聚合表的每行中都不同,對所述聚合表中滿足所指定的約束的行執(zhí)行計數(shù)操作來獲得所述相異計數(shù)查詢的結(jié)果。
      13.如權(quán)利要求12所述的方法,其中,所述約束中的每個是對所述明細(xì)表的維度的約束。
      14.如權(quán)利要求13所述的方法,其中,所述約束中的每個是對獨立維度或依賴維度的約束。
      15.如權(quán)利要求14所述的方法,其中,所述約束中的每個處于其維度的特定級別上。
      16.如權(quán)利要求12所述的方法,其中,所述聚合表是多個聚合表之一,并且所述聚合表處于所述多個聚合表中的最高顆粒上。
      17.如權(quán)利要求13所述的方法,還包括響應(yīng)于確定出所述標(biāo)識符在所述聚合表的每行中并非都不同,對所述聚合表中滿足所指定的約束的行執(zhí)行相異計數(shù)操作來獲得所述相異計數(shù)查詢的結(jié)果。
      18.如權(quán)利要求12所述的方法,還包括響應(yīng)于標(biāo)識出所述聚合表,確定所述聚合表的行是否包含對所述被相異計數(shù)的標(biāo)識符的計數(shù),其中每個計數(shù)指示針對維度值的不同組合,所述標(biāo)識符在所述明細(xì)表中出現(xiàn)的次數(shù),每個維度值處于其維度的特定級別上;響應(yīng)于確定出所述聚合表的行包含對所述被相異計數(shù)的標(biāo)識符的計數(shù),確定所述聚合表是否具有僅涉及依賴于所述被相異計數(shù)的標(biāo)識符的維度的維數(shù);以及響應(yīng)于確定出所述聚合表具有僅涉及依賴于所述被相異計數(shù)的標(biāo)識符的維度的維數(shù),對所述聚合表中維度值滿足全部所述被指定的約束的行中包含的計數(shù)求和來獲得所述相異計數(shù)查詢的結(jié)果。
      19.如權(quán)利要求12所述的方法,還包括響應(yīng)于標(biāo)識出所述聚合表,確定所述聚合表的行是否包含對所述被相異計數(shù)的標(biāo)識符的計數(shù),其中每個計數(shù)指示針對維度值的不同組合,所述標(biāo)識符在所述明細(xì)表中出現(xiàn)的次數(shù),每個維度值處于其維度的特定級別上;響應(yīng)于確定出所述聚合表的行包含對所述被相異計數(shù)的標(biāo)識符的計數(shù),確定所述聚合表是否具有至少一個依賴于所述被相異計數(shù)的標(biāo)識符的維度和至少一個獨立于所述被相異計數(shù)的標(biāo)識符的維度;響應(yīng)于確定出所述聚合表具有至少一個依賴于所述被相異計數(shù)的標(biāo)識符的維度和至少一個獨立于所述被相異計數(shù)的標(biāo)識符的維度,確定所述查詢是否在級別上與所述獨立維度的聚合的級別相匹配;以及響應(yīng)于所述查詢在級別上與所述獨立維度的聚合的級別相匹配,對所述聚合表中維度值滿足全部所述被指定的約束的行中包含的計數(shù)求和來獲得所述相異計數(shù)查詢的結(jié)果。
      20.如權(quán)利要求12所述的方法,還包括響應(yīng)于標(biāo)識出所述聚合表,確定所述聚合表的行是否包含對所述被相異計數(shù)的標(biāo)識符的計數(shù),其中每個計數(shù)指示針對維度值的不同組合,所述標(biāo)識符在所述明細(xì)表中出現(xiàn)的次數(shù),每個維度值處于其維度的特定級別上;響應(yīng)于確定出所述聚合表的行包含對所述被相異計數(shù)的標(biāo)識符的計數(shù),確定所述聚合表是否具有僅涉及獨立于所述被相異計數(shù)的標(biāo)識符的維度的維數(shù);以及響應(yīng)于確定出所述聚合表具有僅涉及獨立于所述被相異計數(shù)的標(biāo)識符的維度的維數(shù),只有在所述查詢中的約束在級別上與所述聚合表的級別準(zhǔn)確匹配的情況下,才利用在所述聚合表中維度值滿足全部所述被指定的約束的行中包含的聚合計數(shù)來獲得所述相異計數(shù)查詢的結(jié)果。
      21.一種用于獲得相異計數(shù)度量的系統(tǒng),所述系統(tǒng)包括查詢接收組件,其可用于接收請求對明細(xì)表的標(biāo)識符的相異計數(shù)的查詢,所述查詢指定對所述明細(xì)表的維度的零個或更多個約束;相異計數(shù)度量組件,其可用于標(biāo)識出與所述明細(xì)表相關(guān)聯(lián)的聚合表;響應(yīng)于標(biāo)識出所述聚合表,確定所述聚合表是否包含被相異計數(shù)的標(biāo)識符;響應(yīng)于確定出所述聚合表包含被相異計數(shù)的標(biāo)識符確定所述標(biāo)識符在所述聚合表的每行中是否都不同;以及響應(yīng)于確定出所述標(biāo)識符在所述聚合表的每行中都不同,對所述聚合表中滿足所指定的約束的行執(zhí)行計數(shù)操作來獲得所述相異計數(shù)查詢的結(jié)果。
      22.如權(quán)利要求21所述的系統(tǒng),其中,所述相異計數(shù)度量組件還可用于響應(yīng)于確定出所述標(biāo)識符在所述聚合表的每行中并非都不同,對所述聚合表中滿足所指定的約束的行執(zhí)行相異計數(shù)操作來獲得所述相異計數(shù)查詢的結(jié)果。
      23.如權(quán)利要求21所述的系統(tǒng),其中,所述相異計數(shù)度量組件還可用于響應(yīng)于標(biāo)識出所述聚合表,確定所述聚合表的行是否包含對所述被相異計數(shù)的標(biāo)識符的計數(shù),其中每個計數(shù)指示針對維度值的不同組合,所述標(biāo)識符在所述明細(xì)表中出現(xiàn)的次數(shù),每個維度值處于其維度的特定級別上;響應(yīng)于確定出所述聚合表的行包含對所述被相異計數(shù)的標(biāo)識符的計數(shù),確定所指定的約束是否每個都是對在與所述聚合表的維度值相同或者更高級別上的依賴維度的約束;以及響應(yīng)于確定出所指定的約束每個都是對在與所述聚合表的維度值相同或者更高級別上的依賴維度的約束,對所述聚合表中維度值滿足全部所述被指定的約束的行中包含的計數(shù)求和來獲得所述相異計數(shù)查詢的結(jié)果。
      24.如權(quán)利要求21所述的系統(tǒng),其中,所述相異計數(shù)度量組件還可用于響應(yīng)于標(biāo)識出所述聚合表,確定所述聚合表的行是否包含對所述被相異計數(shù)的標(biāo)識符的計數(shù),其中每個計數(shù)指示針對維度值的不同組合,所述標(biāo)識符在所述明細(xì)表中出現(xiàn)的次數(shù),每個維度值處于其維度的特定級別上;響應(yīng)于確定出所述聚合表的行包含對所述被相異計數(shù)的標(biāo)識符的計數(shù),確定所指定的約束是否每個都是對在與所述聚合表的維度值相同或者更高級別上的依賴維度的約束,或者是對在與所述聚合表的維度值相同的級別上的獨立維度的約束;以及響應(yīng)于確定出所指定的約束每個都是對在與所述聚合表的維度值相同或者更高級別上的依賴維度的約束,或者是對在與所述聚合表的維度值相同的級別上的獨立維度的約束,對所述聚合表中維度值滿足全部所述被指定的約束的行中包含的計數(shù)求和來獲得所述相異計數(shù)查詢的結(jié)果。
      25.如權(quán)利要求21所述的系統(tǒng),其中,所述相異計數(shù)度量組件還可用于響應(yīng)于標(biāo)識出所述聚合表,確定所述聚合表的行是否包含對所述被相異計數(shù)的標(biāo)識符的計數(shù),其中每個計數(shù)指示針對維度值的不同組合,所述標(biāo)識符在所述明細(xì)表中出現(xiàn)的次數(shù),每個維度值處于其維度的特定級別上;響應(yīng)于確定出所述聚合表的行包含對所述被相異計數(shù)的標(biāo)識符的計數(shù),確定所指定的約束是否既不是對在與所述聚合表的維度值相同或者更高級別上的依賴維度的約束,也不是對在與所述聚合表的維度值相同的級別上的獨立維度的約束;以及響應(yīng)于確定出所指定的約束既不是對在與所述聚合表的維度值相同或者更高級別上的依賴維度的約束,也不是對在與所述聚合表的維度值相同的級別上的獨立維度的約束,只有在所述查詢中的約束在級別上與所述聚合表的級別準(zhǔn)確匹配的情況下,才利用在所述聚合表中維度值滿足全部所述被指定的約束的行中包含的聚合計數(shù)來獲得所述相異計數(shù)查詢的結(jié)果。
      全文摘要
      本發(fā)明提供了用于利用聚合導(dǎo)航來執(zhí)行相異計數(shù)度量的設(shè)施。針對對明細(xì)表中的標(biāo)識符的相異計數(shù)查詢,其中該查詢指定零個或更多個約束,該設(shè)施標(biāo)識出與該明細(xì)表相關(guān)聯(lián)的聚合表。該設(shè)施然后確定聚合表是否包含被相異計數(shù)的標(biāo)識符,如果包含,則進(jìn)一步確定所述標(biāo)識符在聚合表的每行中是否都不同。如果是,則該設(shè)施對聚合表中滿足所指定的約束的行執(zhí)行計數(shù)操作來獲得相異計數(shù)查詢的結(jié)果。如果所述標(biāo)識符在聚合表的每行中并非都不同,則該設(shè)施對聚合表中滿足所指定的約束的行執(zhí)行相異計數(shù)操作來獲得相異計數(shù)查詢的結(jié)果。
      文檔編號G06F7/00GK1898669SQ200480038684
      公開日2007年1月17日 申請日期2004年12月10日 優(yōu)先權(quán)日2003年12月23日
      發(fā)明者阿施史·米塔爾, 愛德華·蘇恩 申請人:西貝爾系統(tǒng)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1