版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、徐俊剛徐俊剛()20092009年年9 9月月20092009年年11 11月月1. 1.MDXMDX概述概述2.2.MDXMDX基本概念基本概念3.3.MDXMDX與與SQLSQL的比較的比較4.4.基本基本MDXMDX5.5.高級(jí)高級(jí)MDXMDX多維表達(dá)式(多維表達(dá)式(MDX) 第第5章章MDX概述概述1MDX起源起源1.1背景背景SQL對多維數(shù)據(jù)查詢和統(tǒng)計(jì)具有一定局限性對多維數(shù)據(jù)查詢和統(tǒng)計(jì)具有一定局限性Microsoft定義和推出定義和推出MDX事例應(yīng)用程序,存在于事例應(yīng)用程序,存在于Microsoft SQL Server Analysis Service中中MDX語言用于在語言用于在
2、 Microsoft SQL Server 2000/2005 Analysis Services 中操作多維信息。中操作多維信息。MDX概述概述1MDX概述概述1.2概述概述MDX( Multidimensional Expressions )是一種語法,支持多維對象與多維數(shù)據(jù)的定義和操作MDX 在很多方面與SQL語法相似,但它不是 SQL 語言的擴(kuò)展;事實(shí)上,MDX 所提供的一些功能也可由 SQL 提供,盡管不是那么有效或直觀。每個(gè) MDX 查詢都要求有 SELECT 子句、FROM 子句和WHERE 子句。MDX 還提供了可靠的函數(shù)集,用來對所檢索的數(shù)據(jù)進(jìn)行操作,同時(shí)還具有用用戶定義函數(shù)
3、擴(kuò)展 MDX 的能力。MDX 提供管理數(shù)據(jù)結(jié)構(gòu)的 DDL 語法,其中有用于創(chuàng)建(和刪除)多維數(shù)據(jù)集、維度、度量值以及它們的坐標(biāo)對象的 MDX 命令。MDX基本概念基本概念2單元、元組和集合單元、元組和集合2.1 SQL 從表返回二維數(shù)據(jù)子集,而 MDX 從多維數(shù)據(jù)集返回多維數(shù)據(jù)子集。以下元組標(biāo)識(shí)其中值為 240 的單元單元:(路線.東半球.非洲, 時(shí)間.下半年.第四季度, 源.非陸地.航空, 度量值.包 )元組元組唯一標(biāo)識(shí)多維數(shù)據(jù)集中的一部分;它不必指某個(gè)特定單元(切片或切塊) (路線.東半球) (時(shí)間.下半年, 路線.西半球)元組的有序集合稱為集合集合 (時(shí)間.上半年.第一季度), (時(shí)間.
4、下半年.第三季度) MDX基本概念基本概念2單元、元組和集合單元、元組和集合2.1MDX基本概念基本概念2軸維度和切片器維度軸維度和切片器維度2.2定義定義SELECT 語句用來選擇要返回的維度和成員,稱之為軸維度。WHERE 語句用來將返回的數(shù)據(jù)限定為特定維度和成員條件,稱之為切片器維度。軸維度預(yù)期返回多個(gè)成員的數(shù)據(jù),而切片器維度預(yù)期返回單個(gè)成員的數(shù)據(jù)。MDX基本概念基本概念2其他基本概念其他基本概念2.3計(jì)算成員計(jì)算成員計(jì)算成員不是基于數(shù)據(jù)、而是基于 MDX 中估值表達(dá)式的成員用戶定義函數(shù)用戶定義函數(shù)用戶可以創(chuàng)建和注冊自己的函數(shù),這些函數(shù)對多維數(shù)據(jù)進(jìn)行操作,同時(shí)按 MDX 語法接受參數(shù)并返
5、回值。PivotTable 服務(wù)服務(wù)MDX 數(shù)據(jù)定義和操作服務(wù)通過 PivotTable 服務(wù)提供。PivotTable 服務(wù)用于本地多維數(shù)據(jù)集的定義和操作,使用此多維數(shù)據(jù)集可以多維格式在本地存儲(chǔ)數(shù)據(jù)。MDX和和SQL的比較的比較3MDX相對于相對于SQL的主要特點(diǎn)的主要特點(diǎn)3.1定義定義專門檢索具有幾乎任意多個(gè)維度的多維數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù),MDX 在查詢中則可處理一個(gè)、兩個(gè)、三個(gè)或更多的維度。在 MDX 中 SELECT 子句可用于定義幾個(gè)軸維度,而 WHERE 子句可用來把多維數(shù)據(jù)限制于特定的維度或成員。WHERE 子句用于提供查詢所返回的數(shù)據(jù)切片。 WHERE 子句中的各個(gè)成員標(biāo)識(shí)來自不同
6、維度的數(shù)據(jù)的不同部分MDX 查詢的創(chuàng)建者通常將多維數(shù)據(jù)集的結(jié)構(gòu)形象化并加以定義,并且編寫對單個(gè)多維數(shù)據(jù)集的查詢對該結(jié)構(gòu)進(jìn)行填充MDX 結(jié)果集的視覺形象不直觀。因?yàn)槎嗑S結(jié)果集可以有三個(gè)以上的維度,所以將該結(jié)構(gòu)形象化比較困難基本基本MDX4基本基本MDX查詢查詢4.1SELECT , . FROM WHERE 要指定數(shù)據(jù)集,MDX 查詢必須包含有關(guān)下列各項(xiàng)的信息: (1) 軸的數(shù)目。最多可在 MDX 查詢中指定 128 個(gè)軸。(2) 要包括在 MDX 查詢的各個(gè)軸上的來自各個(gè)維度的成員。(3) 設(shè)置 MDX 查詢上下文的多維數(shù)據(jù)集的名稱。(4) 來自切片器維度的成員,在該維度上對來自軸維度的成員進(jìn)
7、行數(shù)據(jù)切片基本 MDX 查詢示例: 別名SELECT Measures.Unit Sales, Measures.Store Sales ON COLUMNS, Time.1997, Time.1998 ON ROWSFROM SalesWHERE ( Store.USA.CA )4基本基本MDX查詢查詢4.1基本基本MDX4基本基本MDX查詢查詢4.1基本基本MDX MDX SELECT 語句的語法格式與 SQL 語法類似;可是用戶將注意到以下幾個(gè)顯著區(qū)別:(1) MDX 語法通過用花括號(hào)( 和 字符)括住元組或成員來辨別集合。(2) MDX 查詢在 SELECT 語句中最多可以有 128
8、個(gè)軸維度,但只有前 5 個(gè)軸有別名。軸可以用其在 MDX 查詢中的順序位置或者用其別名(如果給它指派了別名的話)來引用。SELECT Measures.Unit Sales, Measures.Store Sales ON AXIS(0), Time.1997, Time.1998 ON AXIS(1) FROM Sales WHERE ( Store.USA.CA )(3) 如同 SQL 查詢一樣,F(xiàn)ROM 子句為 MDX 查詢指定數(shù)據(jù)的源(4) WHERE 子句用于描述切片器維度。 成員:下圖加入陰影以表示 “時(shí)間.下半年.第三季度” 成員。4成員示例成員示例4.2基本基本MDX引用成員的
9、可選方法是引用成員鍵。成員鍵由維度用來專門標(biāo)識(shí)給定成員。成員鍵: 用 & 字符將成員鍵與成員名區(qū)別開時(shí)間.下半年.&Q4 ( 第四季度成員的成員鍵 Q4) 引用成員鍵確保在可更改維度中以及在具有非唯一成員名的維度中成員的正確標(biāo)識(shí)??捎贸蓡T名或其成員鍵引用某個(gè)成員。上一示例中用其成員名 “第四季度” 引用 “時(shí)間” 維度中的成員。 4成員名和成員鍵成員名和成員鍵4.3基本基本MDX可將成員創(chuàng)建為 MDX 查詢的一部分,以使返回的數(shù)據(jù)基于估值表達(dá)式,而不是要查詢的多維數(shù)據(jù)集中所存儲(chǔ)的數(shù)據(jù),這些成員稱為計(jì)算成員。如以下示例所示:WITH MEMBER Measures.Package
10、sForecast ASMeasures.Packages * 1.14計(jì)算成員計(jì)算成員4.4基本基本MDXMDX 提供許多函數(shù)來從其它 MDX 實(shí)體(如維度和級(jí)別)檢索成員/ FirstChild 函數(shù)允許從給定維度或級(jí)別檢索所有的成員/ 下列兩式具有相同效果顯式聲明 : 時(shí)間.上半年 函數(shù)調(diào)用 : 時(shí)間.FirstChild / 時(shí)間維度的第一個(gè)子代成員4成員函數(shù)成員函數(shù)4.5基本基本MDX元組用于定義來自多維數(shù)據(jù)集的數(shù)據(jù)切片或切塊;它由來自一個(gè)或多個(gè)維度的單個(gè)成員的有序集合組成。元組用于標(biāo)識(shí)來自多維數(shù)據(jù)集的特定多維數(shù)據(jù)塊;元組是一種成員向量;請把元組看作基礎(chǔ)數(shù)據(jù)庫中的一個(gè)或多個(gè)記錄上圖表
11、現(xiàn) (時(shí)間.下半年, 源.非陸地.航空) 元組。由來自不止一個(gè)維度的成員組成,則元組所表示的成員必須括在圓括號(hào)內(nèi)4元組元組4.6基本基本MDX集合是零個(gè)、一個(gè)或多個(gè)元組的有序集合。集合最常用于在 MDX 查詢中定義軸維度和切片器維度,并且可能只具有單個(gè)元組或可能在某些情況下為空。 集合指以元組表示的一組成員組合,或指集合中的元組所代表的單元中的值(視使用的上下文而定) 元組用花括號(hào)括起來以構(gòu)造集合示例 (時(shí)間.上半年, 源.非陸地.航空), (時(shí)間.下半年,源.非陸地.海路) 時(shí)間.下半年, 時(shí)間.下半年 / 允許同一個(gè)元組重復(fù)出現(xiàn)4集合集合4.7基本基本MDX聚合函數(shù)冒號(hào)運(yùn)算符使用成員的自然
12、順序創(chuàng)建集合兩邊的成員包含在結(jié)果集內(nèi):第一季度:第四季度集合和維數(shù)集合的維數(shù)用其中各個(gè)元組的維數(shù)表達(dá)。集合內(nèi)元組的順序非常重要下例不能作為集合使用:集合中的元組必須具有相同的維順序 (時(shí)間.下半年,源.非陸地.航空), (源.非陸地.航空, 時(shí)間.下半年) 4聚合函數(shù)聚合函數(shù)4.8基本基本MDX指定軸維度的內(nèi)容 語法可分解為: := ON := COLUMNS | ROWS | PAGES | SECTIONS | CHAPTERS | AXIS()每個(gè)軸維度與一個(gè)數(shù)字相關(guān)聯(lián): 0 對應(yīng)于 x 軸,1 對應(yīng)于 y 軸,2 對應(yīng)于 z 軸,等等。 值是軸號(hào)。對于前 5 個(gè)軸,COLUMNS、RO
13、WS、PAGES、SECTIONS 和 CHAPTERS 這幾個(gè)別名可分別代替 AXIS(0)、AXIS(1)、AXIS(2)、AXIS(3) 和 AXIS(4) 使用。 4軸維度和切片器維度軸維度和切片器維度4.9基本基本MDX指定切片器維度的內(nèi)容(1)顯式指派給軸的維度是切片器維度(2)假定未顯式指派給軸的維度是切片器維度,用其默認(rèn)成員進(jìn)行篩選。(3)如果未顯式指定默認(rèn)成員,如果存在“(全部)”級(jí)別,則默認(rèn)成員為“全部”成員,否則為最高級(jí)別的任意成員。(全部成員的名稱不必為全部。)4軸維度和切片器維度軸維度和切片器維度4.9基本基本MDXMDX 查詢提供上下文:查詢提供上下文:FROM 由
14、單個(gè)多維數(shù)據(jù)集的名稱完成。 這并未限制用戶一次使用多個(gè)多維數(shù)據(jù)集;可以使用 LookupCube 函數(shù)來從多維數(shù)據(jù)集上下文以外的多維數(shù)據(jù)集檢索數(shù)據(jù)。 與 SQL 不同,MDX 查詢中的 FROM 子句通常不允許連接:FROM SalesCube, OtherCube 4建立多維數(shù)據(jù)集上下文建立多維數(shù)據(jù)集上下文4.10基本基本MDX1. 成員屬性的使用成員屬性的使用 各個(gè)元組中每個(gè)成員的一些基本信息,如成員名、父級(jí)別、子代數(shù)目等等。這些信息即稱為成員屬性。成員屬性可視為存儲(chǔ)于單個(gè)維度上按維度組織的數(shù)據(jù)。 例如,若要?jiǎng)?chuàng)建 Store Name 級(jí)別中成員的成員屬性 Store Type,須確保 S
15、tore Type 列與 Store Name 列在相同的表中,然后將 Store Type 作為成員屬性插入到 Store Name 級(jí)別中。5創(chuàng)建和使用屬性值創(chuàng)建和使用屬性值5.1高級(jí)高級(jí)MDX(1) DIMENSION PROPERTIES 關(guān)鍵字SELECT , . FROM WHERE := ON := DIMENSION PROPERTIES ,. property 語法的分解會(huì)因所查詢的屬性而有所不同。維度和級(jí)別的內(nèi)在成員屬性前必須加上維度和/或級(jí)別的名稱。 成員的內(nèi)在成員屬性不能由維度名或級(jí)別名限定。自定義成員屬性前應(yīng)加上其所駐留的級(jí)別的名稱。5創(chuàng)建和使用屬性值創(chuàng)建和使用屬性值
16、5.1高級(jí)高級(jí)MDXSELECT /Members 函數(shù)是最常用的集合函數(shù)之一, /返回維度、級(jí)別或?qū)哟谓Y(jié)構(gòu)中成員的集合 CROSSJOIN(年, (銷售量, 預(yù)算銷售量) ON COLUMNS, NON EMPTY 產(chǎn)品.MEMBERS / 關(guān)鍵字,非空 DIMENSION PROPERTIES 產(chǎn)品.SKU, 產(chǎn)品.SRP ON ROWSFROM SalesCubeWHERE (一月, 銷售代表.All, 地理.美國)返回以下數(shù)據(jù)集:5創(chuàng)建和使用屬性值創(chuàng)建和使用屬性值5.1高級(jí)高級(jí)MDX(2) Properties 函數(shù)成員屬性還可通過使用 MDX 中的 Properties 函數(shù)進(jìn)行檢索
17、。例如,下面的 MDX 查詢使用 WITH 關(guān)鍵字來創(chuàng)建包含 Store Sqft 成員屬性的計(jì)算成員:WITH / 生成計(jì)算成員 MEMBER 度量值.商店規(guī)模 AS Val(商店.當(dāng)前成員.屬性(“商店平方米”) /VB庫中的函數(shù)SELECT 度量值.單個(gè)銷售額, 度量值.商店規(guī)模 ON COLUMNS, 商店.商店名稱.成員 ON ROWSFrom Sales5創(chuàng)建和使用屬性值創(chuàng)建和使用屬性值5.1高級(jí)高級(jí)MDX可以生成一個(gè)與下表中的結(jié)果集類似的結(jié)果集:請注意 MDX 查詢示例中 Val( ) 函數(shù)的使用。Properties 函數(shù)是字符串類型的函數(shù);所有用 Properties 函數(shù)檢
18、索的成員屬性均將強(qiáng)制轉(zhuǎn)換為字符串。5創(chuàng)建和使用屬性值創(chuàng)建和使用屬性值5.1高級(jí)高級(jí)MDX(3) 內(nèi)在維度和級(jí)別成員屬性所有維度和級(jí)別均支持下面所列的內(nèi)在成員屬性。這些成員屬性在特定維度或級(jí)別的上下文中使用,并且為指定維度或級(jí)別的每個(gè)成員提供值。例如,在多維表達(dá)式 (MDX) 查詢中指定下列語句:Sales.Name /返回級(jí)別、維度、成員或?qū)哟谓Y(jié)構(gòu)的名稱返回 Sales 維度的各個(gè)引用成員的名稱:屬性 描述 ID 成員的內(nèi)部維護(hù) ID Key 存儲(chǔ)于 MEMBERS 架構(gòu)行集的 MEMBER_KEY 列中 成員的值 Name 成員的名稱 5創(chuàng)建和使用屬性值創(chuàng)建和使用屬性值5.1高級(jí)高級(jí)MDX維
19、度成員屬性前是應(yīng)用屬性的維度的名稱下例示范了正確的語法:DIMENSION PROPERTIES .ID 級(jí)別成員屬性前可加上級(jí)別名,或?yàn)楦郊右?guī)范加上維度和級(jí)別名,如下所示:DIMENSION PROPERTIES .ID5創(chuàng)建和使用屬性值創(chuàng)建和使用屬性值5.1高級(jí)高級(jí)MDX(4) 內(nèi)在成員屬性 內(nèi)在成員屬性不能為特定維度或級(jí)別加以請求,而應(yīng)用于多維表達(dá)式 (MDX) 查詢中軸維度的所有成員例如,在 MDX 查詢中指定下列語句:PROPERTIES DESCRIPTION返回對軸維度中各個(gè)成員的描述。5創(chuàng)建和使用屬性值創(chuàng)建和使用屬性值5.1高級(jí)高級(jí)MDX下面列出所支持的內(nèi)在成員屬性及描述:CA
20、LCULATION_PASS_DEPTH: 僅用于計(jì)算單元。計(jì)算公式的傳遞深度,此屬性確定解析計(jì)算公式需要多少個(gè)傳遞。有關(guān)傳遞次序的更多信息,請參見理解傳遞次序和求解次序。 CALCULATION_PASS_NUMBER: 僅用于計(jì)算單元。計(jì)算公式的傳遞號(hào),此屬性確定計(jì)算公式將分別在哪個(gè)傳遞上開始賦值和結(jié)束計(jì)算。該屬性的默認(rèn)值為 1;其最大值為 65,535。有關(guān)傳遞次序的更多信息,請參見理解傳遞次序和求解次序。 . . .5創(chuàng)建和使用屬性值創(chuàng)建和使用屬性值5.1高級(jí)高級(jí)MDX(5) 自定義成員屬性 自定義成員屬性可添加到維度中的特定命名級(jí)別中。自定義成員屬性不能添加到維度的“(全部)”級(jí)別,
21、或添加到維度本身 用來引用自定義成員屬性的語法類似于用來引用內(nèi)在級(jí)別成員屬性的語法,如下列示例所示:PROPERTIES .5創(chuàng)建和使用屬性值創(chuàng)建和使用屬性值5.1高級(jí)高級(jí)MDX2. 單元屬性的使用 MDX 單元屬性所包含的信息,是單元的內(nèi)容和格式的信息。 下例顯示 MDX SELECT CELL PROPERTIES 關(guān)鍵字語法。SELECT , . FROM WHERE := CELL PROPERTIES , .5創(chuàng)建和使用屬性值創(chuàng)建和使用屬性值5.1高級(jí)高級(jí)MDX下面列出用于 值的內(nèi)在單元屬性BACK_COLOR: 顯示 VALUE 或 FORMATTED_VALUE 屬性的背景顏色。
22、CELL_EVALUATION_LIST: 適用于單元的以分號(hào)分隔的一列求值公式,按從最低到最高的求解次序排列。CELL_ORDINAL: 數(shù)據(jù)集中單元的序列號(hào)。FORE_COLOR: 顯示 VALUE 或 FORMATTED_VALUE 屬性的前景顏色。 5創(chuàng)建和使用屬性值創(chuàng)建和使用屬性值5.1高級(jí)高級(jí)MDX 默認(rèn)情況下,如果未用 CELL PROPERTIES 關(guān)鍵字,則返回的單元屬性為 VALUE、FORMATTED_VALUE 和 CELL_ORDINAL(按此順序)。 如果使用了 CELL PROPERTIES 關(guān)鍵字,則只返回用此關(guān)鍵字顯式聲明的單元屬性。 下例示范了 MDX 查詢
23、中 CELL PROPERTIES 關(guān)鍵字的使用:SELECT Measures.Unit Sales, Measures.Store Size ON COLUMNS, Store.Store Name.Members ON ROWSFROM SalesCELL PROPERTIES VALUE, FORMATTED_VALUE, FORMAT_STRING, FORE_COLOR, BACK_COLOR5創(chuàng)建和使用屬性值創(chuàng)建和使用屬性值5.1高級(jí)高級(jí)MDX3. 使用 Custom Member Options 屬性 使用維度編輯器或多維數(shù)據(jù)集編輯器的 Custom Member Option
24、s 屬性,可通過 Analysis Manager 設(shè)置單元屬性。 Custom Member Options 屬性接受每個(gè)成員的列引用,該引用包含以逗號(hào)分隔的單元屬性列表。 單元屬性以字符串表達(dá)式的形式表示,如例所示。FORE_COLOR=255, BACK_COLOR=65535示例為指定成員提供一個(gè)帶紅色前景的黃色背景。5創(chuàng)建和使用屬性值創(chuàng)建和使用屬性值5.1高級(jí)高級(jí)MDX4. 使用 FORMAT_STRING 單元屬性 FORMAT_STRING 單元屬性用于格式化 VALUE 單元屬性,以創(chuàng)建 FORMATTED_VALUE 單元屬性值。 FORMAT_STRING 單元屬性對于字符
25、串和數(shù)字原始值均能處理,它對該值應(yīng)用格式表達(dá)式以返回 FORMATTED_VALUE 單元屬性的格式化值。5創(chuàng)建和使用屬性值創(chuàng)建和使用屬性值5.1高級(jí)高級(jí)MDX5. 使用字符串值符號(hào) 字符串的格式表達(dá)式可以是一部分,也可以是由分號(hào) (;) 分隔開的兩部分。 一部分格式應(yīng)用于所有字符串值。 兩部分時(shí)第一部分應(yīng)用于字符串?dāng)?shù)據(jù),而第二部分應(yīng)用于空值和零長度字符串 ()。 (1) 字符占位符。它顯示一個(gè)字符或一個(gè)空格。 (2)& 字符占位符。它顯示一個(gè)字符或什么都不顯示。 (3) 強(qiáng)制大寫。以大寫格式顯示所有字符。 (5) ! 強(qiáng)制從左到右填充占位符。 5創(chuàng)建和使用屬性值創(chuàng)建和使用屬性值5.1
26、高級(jí)高級(jí)MDX6. 使用數(shù)字值 數(shù)字的用戶定義格式表達(dá)式可以有一到四個(gè)由分號(hào)分隔的部分。如果格式參數(shù)包含一個(gè)命名數(shù)字格式,則只允許有一個(gè)部分。一部分:格式表達(dá)式應(yīng)用于所有值。 兩部分:第一部分應(yīng)用于正值和零,第二部分應(yīng)用于負(fù)值。 三部分: 第一部分應(yīng)用于正值,第二部分應(yīng)用于負(fù)值,第三部分應(yīng)用于零。 四部分:第一部分應(yīng)用于正值,第二部分應(yīng)用于負(fù)值,第三部分應(yīng)用于零,第四部分應(yīng)用于空值。 下例具有兩個(gè)部分:$#,#0;($#,#0)如果包含兩個(gè)緊挨著的分號(hào),則缺少的部分用正值的格式打印。$#,#0;Zero5創(chuàng)建和使用屬性值創(chuàng)建和使用屬性值5.1高級(jí)高級(jí)MDX7. 使用 FORE_COLOR 和
27、BACK_COLOR 單元屬性 以 Microsoft Windows 操作系統(tǒng)紅-綠-藍(lán) (RGB) 格式存儲(chǔ)單元的文本和背景的顏色信息。 范圍為 0 到 16,777,215 (&H00FFFFFF) 數(shù)字的高位字節(jié)始終等于 0;低位的 3 個(gè)字節(jié),從最低位字節(jié)到最高位字節(jié)分別決定了紅色、綠色和藍(lán)色的數(shù)量。紅色、綠色和藍(lán)色成分分別由一個(gè) 0 到 255 (&HFF) 之間的數(shù)字表示。例如,值 255 (&H000000FF) 代表紅色,值 65280 (&H0000FF00) 代表綠色,而值 16711680 (&H00FF0000) 代表藍(lán)色。5創(chuàng)
28、建和使用屬性值創(chuàng)建和使用屬性值5.1高級(jí)高級(jí)MDX MDX 中的命名集可能是長而復(fù)雜并且不易理解的聲明 命名集是一個(gè)與別名相關(guān)聯(lián)的集合表達(dá)式。命名集可將集合中的成員或函數(shù)合并。 命名集是維度成員集或所創(chuàng)建的可以再度使用的集合表達(dá)式。WITH SET ChardonnayChablis AS Product.All . .SELECT ChardonnayChablis ON COLUMNS, Measures.Unit Sales ON ROWSFROM Sales5生成 MDX 中的命名集5.2高級(jí)高級(jí)MDX使用 WITH 創(chuàng)建命名集WITH , formula_specificationS
29、ELECT , . FROM WHERE := SET AS 參數(shù)包含命名集的別名。 參數(shù)包含命名集別名所指的集合表達(dá)式。 5生成 MDX 中的命名集5.2高級(jí)高級(jí)MDX 示例使用 Filter、CurrentMember、Name 和 InStr 函數(shù)來創(chuàng)建 ChardonnayChablis 命名集:/ VB:InStr (start, string1, string2 , compare) /返回:指定一字符串在另一字符串中最先出現(xiàn)的位置。/ CurrentMember: MDX 表達(dá)式,拒絕對度量值“ chardonnay ” /的單元的訪問,但允許對所有其它度量值的單元的訪問/ Fi
30、lter/ Filter(Set, Search Condition) /返回根據(jù)搜索條件對指定集合進(jìn)行篩選所得到的集合。WITH SET ChardonnayChablis AS Filter(Product.Members, (InStr(1, Product.CurrentMember.Name, chardonnay) 0) OR (InStr(1, Product.CurrentMember.Name, chablis) 0)SELECT ChardonnayChablis ON COLUMNS, Measures.Unit Sales ON ROWSFROM Sales1. 使用使
31、用 WITH 創(chuàng)建計(jì)算成員創(chuàng)建計(jì)算成員WITH , SELECT , . FROM WHERE := MEMBER AS ,SOLVE_ORDER = , = .(1) 值是計(jì)算成員的完全合法名稱, 在經(jīng)過計(jì)算后,將返回計(jì)算成員的值。(2)使用 SOLVE_ORDER 關(guān)鍵字指定計(jì)算成員的求解次序(3) 值中提供單元屬性的名稱和在 值中提供單元屬性值,可隨意指定計(jì)算成員內(nèi)在單元屬性的值。5生成生成 MDX 中的計(jì)算成員中的計(jì)算成員5.3高級(jí)高級(jí)MDX 下例的 MDX 查詢示例定義了兩個(gè)計(jì)算成員。第一個(gè)計(jì)算成員 Measures.StoreType 用于表示 Store Type 成員屬性。第二
32、個(gè)計(jì)算成員 Measures.ProfitPct 用于計(jì)算給定商店的總利潤率,并將其表示為格式化的百分比值。WITH MEMBER Measures.StoreType AS Store.CurrentMember.Properties(Store Type), SOLVE_ORDER = 2 MEMBER Measures.ProfitPct AS Val(Measures.Store Sales - Measures.Store Cost) / Measures.Store Sales), SOLVE_ORDER = 1, FORMAT_STRING = PercentSELECT Sto
33、re.Store Name.Members ON COLUMNS, Measures.Store Sales, Measures.Store Cost, Measures.StoreType, Measures.ProfitPct ON ROWSFROM Sales 計(jì)算成員可在層次結(jié)構(gòu)的任意位置創(chuàng)建。 下例 MDX 查詢示例定義作為 Beer and Wine 成員的子成員創(chuàng)建的計(jì)算成員,以確定給定商店的啤酒和果酒 (Beer and Wine) 的單位銷售額是否至少為 100.00:WITH MEMBER Product.Beer and Wine.BigSeller AS IIf(Pro
34、duct.Beer and Wine 100, Yes,No)SELECT Product.BigSeller ON COLUMNS, Store.Store Name.Members ON ROWSFROM Sales5生成生成 MDX 中的計(jì)算成員中的計(jì)算成員5.3高級(jí)高級(jí)MDX使用同一 MDX 中其它計(jì)算成員的計(jì)算成員:WITH MEMBER Measures.ProfitPct AS Val(Measures.Store Sales - Measures.Store Cost) / Measures.Store Sales), SOLVE_ORDER = 1, FORMAT_STRIN
35、G = Percent MEMBER Measures.ProfitValue AS Measures.Store Sales * Measures.ProfitPct, SOLVE_ORDER = 2, FORMAT_STRING = CurrencySELECT Store.Store Name.Members ON COLUMNS, Measures.Store Sales, Measures.Store Cost, Measures.ProfitValue, Measures.ProfitPct ON ROWSFROM Sales第二個(gè)計(jì)算成員 Measures.ProfitValue
36、 使用第一個(gè)計(jì)算成員 Measures.ProfitPct 中創(chuàng)建的值來生成自己的值。2. 在計(jì)算成員中使用函數(shù)在計(jì)算成員中使用函數(shù)(1) 算術(shù)運(yùn)算符: + , - , * , /(2) 比較運(yùn)算符: , = , = , , =(3) 按位運(yùn)算符: AND , OR , NOT , XOR (與 C 相同)(4) 集合運(yùn)算符: + 對兩個(gè)集合執(zhí)行 Union 函數(shù)。 * 對兩個(gè)集合執(zhí)行 Crossjoin 函數(shù)。 - 對兩個(gè)集合執(zhí)行 Except 函數(shù)。 : 創(chuàng)建自然排序集合,并將兩個(gè)成員作為終結(jié)點(diǎn),這兩個(gè)指定成員間的所有成員作為集合的成員包括其中。 5生成生成 MDX 中的計(jì)算成員中的計(jì)算成
37、員5.3高級(jí)高級(jí)MDX(5)數(shù)值函數(shù) 如下面的 MDX 查詢示例所示,當(dāng) Aggregate 函數(shù)與產(chǎn)生總和的度量值相組合時(shí),功能尤其強(qiáng)大:WITH MEMBER Time.1st Half Sales AS Aggregate(Time.Q1, Time.Q2) MEMBER Time.2nd Half Sales AS Aggregate(Time.Q3, Time.Q4), MEMBER Time.Difference AS Time.2nd Half Sales - Time.1st Half Sales,SELECT Store.Store State.Members ON COLU
38、MNS, Time.1st Half Sales, Time.2nd Half Sales, Time.Difference ON ROWSFROM SalesWHERE Measures.Store Sales 查詢產(chǎn)生了各州的店面銷售額總和,帶有前兩個(gè)計(jì)算成員用 Aggregate 函數(shù)所提供的上半年和下半年的聚合,以及由第三個(gè)計(jì)算成員提供的二者的差額。5生成生成 MDX 中的計(jì)算成員中的計(jì)算成員5.3高級(jí)高級(jí)MDXMDX 還提供了一列統(tǒng)計(jì)函數(shù),以處理例程統(tǒng)計(jì)計(jì)算,例如,Median 函數(shù)計(jì)算集合內(nèi)的中值,以下 MDX 查詢:WITH MEMBER Time.1st Half Sales
39、AS Sum(Time.Q1, Time.Q2) MEMBER Time.2nd Half Sales AS Sum(Time.Q3, Time.Q4) MEMBER Time.Median AS Median(Time.Members)SELECT NON EMPTY Store.Store Name.Members ON COLUMNS, Time.1st Half Sales, Time.2nd Half Sales, Time.Median ON ROWSFROM SalesWHERE Measures.Store Sales在本示例中,除了 Time.1st Half Sales 和
40、 Time.2nd Half Sales 計(jì)算成員提供的各個(gè)商店的上半年和下半年的店面銷售額的聚合之外,還有 Time.Median 計(jì)算成員提供的各個(gè)商店店面銷售額的中值。5生成生成 MDX 中的計(jì)算成員中的計(jì)算成員5.3高級(jí)高級(jí)MDX(6) 字符串函數(shù) MDX 提供許多字符串函數(shù),不只是為了 MDX 表達(dá)式內(nèi)的字符串處理,還為了支持 MDX 中用戶定義函數(shù)。 例如,MemberToStr 函數(shù)將某成員引用轉(zhuǎn)換為 MDX 格式的字符串以用于用戶定義函數(shù),因?yàn)橛脩舳x函數(shù)不接受來自 MDX 的對象引用。5生成生成 MDX 中的計(jì)算成員中的計(jì)算成員5.3高級(jí)高級(jí)MDX(7)集合函數(shù) 集合函數(shù)用于
41、在 MDX 中返回集合,為用戶提供方便生成動(dòng)態(tài)定義的集合和快速創(chuàng)建可再次使用的命名集的功能。 Members 函數(shù)是最常用的集合函數(shù)之一,它將級(jí)別或維度的所有成員(計(jì)算成員除外)作為一個(gè)集合返回。 下面的 MDX 查詢示例示范了工作中的 Members 函數(shù)。SELECT NON EMPTY Store.Store Name.Members ON COLUMNS, Measures.Store Sales ON ROWSFROM Sales 本 MDX 查詢示例返回了 Sales 多維數(shù)據(jù)集中的各個(gè)商店的總銷售額數(shù)字。如果不用 Members 函數(shù),則不得不顯式輸入各個(gè)商店名稱,以使其完成本
42、MDX 查詢示例的功能。5生成生成 MDX 中的計(jì)算成員中的計(jì)算成員5.3高級(jí)高級(jí)MDX(8) 元組函數(shù) 如同集合函數(shù),元組函數(shù)用于在 MDX 中返回元組。元組函數(shù)還用于輔助 MDX 中的用戶定義函數(shù),如 StrToTuple 函數(shù)。 由于用戶定義函數(shù)不能處理 MDX 對象引用,用戶定義函數(shù)可以返回 MDX 格式的字符串返回值來表示元組,并使用 StrToTuple 函數(shù)將它轉(zhuǎn)換為有效的元組引用。5生成生成 MDX 中的計(jì)算成員中的計(jì)算成員5.3高級(jí)高級(jí)MDX(9) 成員函數(shù) 計(jì)算成員中常常引用成員;成員函數(shù)允許計(jì)算成員執(zhí)行復(fù)雜成員檢索,從而同樣輕松地處理層次結(jié)構(gòu)和集合。 MDX 中計(jì)算成員的
43、解可以是本質(zhì)上迭代的,因?yàn)橛?jì)算成員可以基于對集合成員的迭代進(jìn)行構(gòu)造。MDX 中 CurrentMember 之類的函數(shù)使您得以利用此迭代功能5生成生成 MDX 中的計(jì)算成員中的計(jì)算成員5.3高級(jí)高級(jí)MDX(10) IIf 函數(shù) 多維表達(dá)式 (MDX) 中的 IIf 函數(shù)可用于執(zhí)行簡單的是或否決策。下例 MDX 查詢示例:WITH MEMBER Measures.BigSeller AS IIf(Measures.Store Sales 20000, Yes, No) SELECT Store.Store Name.Members ON COLUMNS, Measures.Store Sales
44、, Measures.BigSeller ON ROWSFROM Sales 本 MDX 示例返回兩行。一行是 Measures.Store Sales 成員,提供各個(gè)商店的總銷售額。第二行是一個(gè)計(jì)算成員,它基于各個(gè)商店的銷售額決定商店是否是個(gè)大銷售商。5生成生成 MDX 中的計(jì)算成員中的計(jì)算成員5.3高級(jí)高級(jí)MDXMDX 常用多維數(shù)據(jù)集切片裝載到內(nèi)存,對其進(jìn)行高速緩存以達(dá)到更快檢索的目的。(1) 可使用 CREATE CACHE 語句。(2) WITH 語句也可完成這項(xiàng)任務(wù)。例如,下面的 MDX 查詢使用 WITH 語句來進(jìn)行高速緩存: WITH CACHE AS (Store.Store
45、Name.Members) SELECT Store.Store Name.Members ON COLUMNS, Measures.Unit Sales ON ROWSFROM Sales5生成生成 MDX 中的高速緩存中的高速緩存5.4高級(jí)高級(jí)MDX使用 WITH 創(chuàng)建高速緩存WITH , SELECT , . FROM WHERE 高速緩存的 值進(jìn)一步分解: := CACHE AS (, .)(1) 值是用來創(chuàng)建高速緩存的集合表達(dá)式。 值可支持 MDX 集合函數(shù)的使用。(2) 當(dāng)用 集合表達(dá)式構(gòu)造高速緩存時(shí),下列規(guī)則適用: (a) 每個(gè) 都必須包含僅來自一個(gè)維度的成員。各個(gè)成員必須互不相
46、同。 (b) 各個(gè) 必須來自不同的維度。(c) 不能包含度量值。 5生成生成 MDX 中的高速緩存中的高速緩存5.4高級(jí)高級(jí)MDX計(jì)算單元功能通過使您得以定義單元的特定切片(稱為計(jì)算子多維數(shù)據(jù)集),并將公式應(yīng)用到該計(jì)算子多維數(shù)據(jù)集內(nèi)的各個(gè)單元來提供此功能。應(yīng)用公式時(shí),依據(jù)的是可應(yīng)用于每個(gè)單元的可選條件。計(jì)算成員是維度成員,其值于運(yùn)行時(shí)通過在定義計(jì)算成員時(shí)所指定的表達(dá)式計(jì)算而得到。(1) 使用 CREATE CELL CALCULATION 語句。對于現(xiàn)有多維數(shù)據(jù)集,ALTER CUBE 語句也可用來添加計(jì)算單元。(2) 若要?jiǎng)?chuàng)建用于會(huì)話生存周期的計(jì)算單元,請使用 CREATE CELL CAL
47、CULATION 語句。(3) 若要?jiǎng)?chuàng)建用于查詢生存周期的計(jì)算單元,請使用 WITH 語句5生成生成 MDX 中的計(jì)算單元中的計(jì)算單元5.5高級(jí)高級(jí)MDX使用 WITH 創(chuàng)建計(jì)算單元WITH , SELECT , . FROM WHERE := CELL CALCULATION FOR () AS , := property_name = , = . 值是計(jì)算單元的名稱。 包含一列正交的、單維度 MDX 集合表達(dá)式,而每個(gè)表達(dá)式都必須解析為下列集合分類之一:5生成生成 MDX 中的計(jì)算單元中的計(jì)算單元5.5高級(jí)高級(jí)MDX空集合:解析為空集合的 MDX 集合表達(dá)式。在這種情況下,該集合被忽略。
48、單個(gè)成員集合:解析為單個(gè)成員的 MDX 集合表達(dá)式。 級(jí)別成員的集合:解析為單個(gè)級(jí)別的成員的 MDX 集合表達(dá)式。其示例為 .Members MDX 函數(shù)。若要包括計(jì)算成員,請使用 .AllMembers MDX 函數(shù)。 后代的集合:解析為指定成員后代的 MDX 集合表達(dá)式。其示例為 Descendants(, , ) MDX 函數(shù)。 5生成生成 MDX 中的計(jì)算單元中的計(jì)算單元5.5高級(jí)高級(jí)MDX1. 在在 MDX 中使用用戶定義函數(shù)中使用用戶定義函數(shù):無參數(shù)調(diào)用:MyNewFunction( )有參數(shù)調(diào)用:MyNewFunctionWithParms(Parameter1, 2, 800)
49、5在在 MDX 中創(chuàng)建和使用用戶定義函數(shù)中創(chuàng)建和使用用戶定義函數(shù)5.6高級(jí)高級(jí)MDX2. USE LIBRARY 語句: 用 USE LIBRARY 語句執(zhí)行外部庫的裝載。用戶定義函數(shù)都必須與 COM 類相關(guān)聯(lián),這些類通常以 Microsoft ActiveX 動(dòng)態(tài)鏈接庫 (DLL) 的形式提供。 假如用戶定義函數(shù)位于 C:WinntSystem 、名為 MyFunc.dll 的 ActiveX DLL 的一部分,可將其裝載如下:USE LIBRARY C:WINNTSYSTEMMyFunc.dll與 MyFuncClass類關(guān)聯(lián),可裝載庫:USE LIBRARY MyFunc.MyFuncC
50、lass 當(dāng)引用可能位于不同服務(wù)器的不同位置的庫時(shí),推薦使用本方法。 多個(gè)庫可以用單個(gè) USE LIBRARY 語句同時(shí)裝載:USE LIBRARY C:WINNTSYSTEMMyFunc.dll, C:WINNTSYSTEMNewFuncs.dll不帶參數(shù)的 USE LIBRARY 語句將注消所有函數(shù)庫。5在在 MDX 中創(chuàng)建和使用用戶定義函數(shù)中創(chuàng)建和使用用戶定義函數(shù)5.6高級(jí)高級(jí)MDX3. DROP LIBRARY 語句語句DROP LIBRARY 語句可用于卸載特定庫或卸載所有的庫:DROP LIBRARY MyFunc.MyFuncClassPivotTable 服務(wù)支持 DROP LIBRARY 語句。5在在 MDX 中創(chuàng)建和使用用戶定義函數(shù)中創(chuàng)建和使用用戶定義函數(shù)5.6高級(jí)高級(jí)MDX4. 創(chuàng)建用戶定義函數(shù)創(chuàng)建用戶定義函數(shù) 用戶定義函數(shù)可用支持 COM 接口的任何編程語言創(chuàng)建 用戶定義函數(shù)可接受任何可強(qiáng)制轉(zhuǎn)換為字符串、數(shù)字或者字符串?dāng)?shù)組或數(shù)字?jǐn)?shù)組的參數(shù)。 用戶定義類型或?qū)ο笠貌荒苡米鲄?shù)。 數(shù)組也可用作參數(shù) 返回空值的函數(shù)(例如 Visual Basic 中的子程序)也可使用,例如,如果想要在 MDX 語句中使用 MyVoidFunction() 函數(shù),
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年臨時(shí)工派遣合同樣本
- 信托公司委托貸款合同
- 纜索吊機(jī)租賃合同樣本
- 標(biāo)準(zhǔn)家教服務(wù)合同范本
- 2024標(biāo)準(zhǔn)附期限借款合同樣本
- 2024模板采購合同范本
- 2024工程裝修簡易合同樣本
- 物業(yè)租賃合同模板
- 技術(shù)服務(wù)合同中的保密義務(wù)與條款
- 建材產(chǎn)品購銷協(xié)議樣本
- 民法典講座-繼承篇
- 外包施工單位入廠安全培訓(xùn)(通用)
- 糖尿病健康知識(shí)宣教課件
- 客戶接觸點(diǎn)管理課件
- Python語言學(xué)習(xí)通超星課后章節(jié)答案期末考試題庫2023年
- 醫(yī)學(xué)-心臟驟停急救培訓(xùn)-心臟驟停急救教學(xué)課件
- 高中英語-Book 1 Unit 4 Click for a friend教學(xué)課件設(shè)計(jì)
- 年產(chǎn)30萬噸碳酸鈣粉建設(shè)項(xiàng)目可行性研究報(bào)告
- 主題班會(huì)如何對待厭學(xué)情緒(初二) 省賽獲獎(jiǎng) 省賽獲獎(jiǎng)
- 初中數(shù)學(xué)北師大版七年級(jí)上冊課件5-4 應(yīng)用一元一次方程-打折銷售
- 0-6歲兒童健康管理服務(wù)規(guī)范(第三版)
評(píng)論
0/150
提交評(píng)論