mondrianSchema編寫指南_第1頁
mondrianSchema編寫指南_第2頁
mondrianSchema編寫指南_第3頁
mondrianSchema編寫指南_第4頁
mondrianSchema編寫指南_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、如何設計一個蒙德里安架構1. 什么是架構?2. schema文件1. 注解3. 邏輯模型1. 立方體2. 措施3. 維度,層次,水平1. 上表的映射維度和層次結構2. “全部”成員3. 時間維度4. 命令和顯示級別5. 多層次結構6. 退化的維度7. 內聯表8. 會員性能和格式化9. 近似水平基數10. 默認度量屬性11. 函數依賴的優(yōu)化12. 表提示4. 星型和雪花模式1. 共享維度2. 加入優(yōu)化5. 先進的邏輯結構1. 虛擬多維數據集2. 父子層次結構1. 調整父子層次結構2. 暫停辦理股份過戶表格3. 填充關閉表3. 成員屬性4. 計算成員5. 命名集6. 插件1. 用戶定義的函數2.

2、會員讀者3. 手機閱讀器4. 手機格式化5. 會員格式化6. 物業(yè)格式化7. 架構處理器8. 數據源的變化監(jiān)聽器9. 動態(tài)數據源xmla的servlet7. 國際化8. 聚合表9. 訪問控制1. 定義角色2. 匯總政策3. 聯盟的作用4. 設置一個連接的作用10. 附錄a:xml元素1。什么是架構?一個模式定義了一個多維數據庫。它包含了一個邏輯模型,由立方體,層次結構和成員組成的,這個模型到物理模型的映射。的邏輯模型的構造用于在mdx語言編寫查詢:立方體,維度,層次,水平,和成員組成。的物理模型是通過邏輯模型的數據源。它通常是一個星型模式,它是一組在關系數據庫中的表后,我們將看到其它類型的映射

3、的例子。2。schema文件蒙德里安架構是在一個xml文件中表示。一個例子模式,包含幾乎所有的結構,我們在這里討論,提供作為演示/ foodmart.xml在蒙德里安分布。該數據集來填充這個模式中的分布。目前,只有這樣,才能創(chuàng)建一個模式是在文本編輯器中編輯一個架構的xml文件。xml語法不是太復雜,所以這并不困難,因為它的聲音,特別是如果你使用的foodmart模式為指導的例子。的xml文檔的結構如下所示:aggelementsaggelements關系有關: =關系aggelement : =注:xml元素的順序是非常重要的。例如,的的元素有發(fā)生內的元素后所有集合,和元素。如果包括它前第一元

4、素,其余的架構將被忽略。每個xml元素的內容在附錄a中的xml架構。2.1注釋主要元素類型(模式,多維數據集,虛擬多維數據集,共享維度,維度,層次結構,水平,測量,計算成員)支持注釋。注解是一個用戶定義的屬性相關聯的元數據元素的方式,特別是,允許工具來添加元數據,而不延伸官方蒙德里安架構。創(chuàng)建一個希望注釋的元素(通常是第一個子元素,但檢查的架構定義詳細信息)的一個子元素,包括一個數量的元素。元素的名稱在他們的元素必須是唯一的。如果您要添加注釋,以支持你保持一個特定的工具,仔細選擇注釋的名稱,以確保它們不沖突具有與其他工具所使用的注釋。以下示例顯示了“作者”和“日期”標注連接到一個對象。弗雷德打

5、火石 10,000 bc.3。邏輯模型最重要的組成模式的多維數據集,措施和尺寸: 一個多維數據集是一個集合在一個特定的學科領域的尺寸和措施。 一個措施是,你有興趣在測量的數量,例如,單位銷售的產品或存貨項目的成本價。 一個維度是屬性或屬性集,通過它可以劃分成子類的措施。例如,您可能希望打破產品銷售它們的顏色,性別的顧客,商店在出售該產品,膚色,性別,和存儲所有尺寸。讓我們來看看在xml定義一個簡單的模式。尺寸名稱=“時間”foreignkey =的“time_id”和層次hasall =“假”的primarykey =的“time_id”此架構包含一個多維數據集,名為“銷售”。銷售多維數據集有

6、兩個維度,“時間”,“性別”和四項措施,“銷量”,“店鋪銷售”,“存儲成本”和“利潤”。在此模式中,我們可以寫一個mdx查詢:select 措施 銷量,措施。店面銷售 on columns, 后代(時間。1997 q1) on rowsfrom 銷售where 性別。 f這個查詢是指銷售多維數據集(銷售),每個尺寸措施,時間,性別,和各成員的那些尺寸。結果如下:時間措施 單位銷售措施 店面銷售1997 q1001997 q1 2010年12月001997 q1 2010年12月001997年 q1 日00現在,讓我們來看看更詳細的架構定義。3.1立方多維數據集(見)的命名集合的措施和尺寸。的措

7、施和尺寸有共同的一件事是事實表,在這里“sales_fact_1997”。正如我們將要看到的,事實表保存列計算哪些措施,并包含持有的尺寸表。.該事實表定義使用元素的。如果事實表是不是在默認模式中,你可以使用“模式”屬性提供一個明確的模式,例如您也可以使用建設,以建立更復雜的sql語句。不支持結構的事實表。3.2措施銷售多維數據集定義了若干措施,包括“單位銷售”和“店鋪銷售”。每個測量(見)都有一個名字,在事實表中的列和聚合。聚合通常是“求和”,但“計數”,“最小值”,“最大值”,“平均”,和“不同的數”也是允許的,“不同的數”有一定的局限性,如果您的多維數據集包含父父子層次結構??蛇x的數據類型

8、屬性指定單元格的值表示在蒙德里安的緩存,以及它們是如何通過xml返回分析。數據類型屬性的值可以有“字符串“,”整數“,”數字“,”布爾“,”日期“,”時間“和”時間戳“。默認值是“數字“,除了”數“和”獨特的計數“的措施,這是”整數“。一個可選的formatstring屬性指定的值是如何被打印。在這里,我們選擇了輸出單元的銷售沒有小數位(因為它是一個整數),以及同店銷售額(因為它是一個貨幣值)小數點后兩位。,和。符號是語言環(huán)境敏感,所以如果你是在意大利,同店銷售額可能會出現“48.123,45”。您可以實現更野的影響,采用先進的格式字符串。一項措施可以有一個標題的名稱member.getcap

9、tion()方法,而不是要返回的屬性。定義一個特定的標題有一定道理特殊字母(如:或)要顯示:的措施,而不是來自一列,可以使用一個細胞器,或測量可以使用sql表達式來計算其價值?!按龠M銷售”的措施是一個這樣的例子。(時sales_fact_1997.promotion_id =0,那么0的其他sales_fact_1997.store_sales結束)在這種情況下,銷售僅包括在求和,如果它們對應到一個促進銷售。可以使用任意的sql表達式,包括子查詢。但是,基本的數據庫必須能夠支持sql表達式的一個總的背景下。不同的數據庫之間的語法變化是由指定的sql標簽的方言。為了提供一個特定的格式的單元格的值

10、,這一措施可以使用一個信元格式化器。3.3尺寸,層級,級別一些更多的定義: 一個成員是由一組特定的屬性值的維度內的一個點。性別等級的兩名成員“m”和“f”?!芭f金山”,“加州”和“美國”的存儲層次結構的所有成員。 一個層次是一組的成員組織成一個結構,方便地進行分析。例如,存儲層次結構由商店的名稱,城市,州和國家。層次結構允許你形成中間小計的分的總的狀態(tài)是在該州的所有的城市總數的總和,其中每個子的門店總數的總和這個城市。 甲水平的部件具有相同的距離從該層次結構的根目錄是一個集合。 一個維度是一家集區(qū)分同一的事實表的屬性(比方說,當天發(fā)生的銷售)的層次結構。對于均勻性的原因,措施被視為一個特殊的維

11、度成員,被稱為“辦法”。一個例子讓我們來看看一個簡單的尺寸。此維由一個單一的層次結構,它由一個單一的稱為性別。(正如我們將要看到以后,有一個特殊的稱為(所有)包含總計)。從性別“列的值的尺寸來在客戶表?!靶詣e”列包含兩個值,f和m,因此性別維包含的成員性別 f和性別 m。對于任何給定的銷售,性別層面的性別,購買的顧客。加入的事實表“sales_fact_1997.customer_id的”,以尺寸表“customer.customer_id的”,這是表示。3.3.1到表的映射維度和層次結構通過一對列,一個事實表,維度表中的其他維度是加入到多維數據集。的元素有一個的foreignkey的屬性,這

12、是一個事實表中的列的名稱,在元素有一個primarykey的屬性。如果層次結構中有一個以上的表,你可以消除歧義使用primarykeytable屬性。列屬性定義的關鍵水平。它必須是水平的表中的列的名稱。如果該鍵是一個表達式,你可以改用的元素內的水平。以下是等同于上述的例子: customer.gender 其他屬性的,的有相應的嵌套元素:父元素屬性等效嵌套元素描述柱關鍵的水平。的namecolumn表達式定義此級別的成員的名稱。如果未指定,水平的關鍵。ordinalcolumn表達式定義的成員順序。如果未指定,水平的關鍵。captioncolumn形成的標題成員的表達。如果未指定,則使用級別名

13、稱。parentcolumn表達一個父子層次結構中的子成員引用他們的父成員。中未指定的定期的層次結構。柱sql表達式來計算的測量值(sql聚合函數的參數)。柱sql表達式來計算屬性的值。uniquemembers屬性是用來優(yōu)化sql生成。如果你知道一個給定的維度表中的列的值是唯一的,所有其他值在該列在的父級,然后設置uniquemembers的“真”,否則,設置為“假”。例如,一個時間維度,如年,月有uniquemembers =“假”,在每月的水平,在同一個月出現在不同年份。另一方面,如果你有一個產品類別 產品名稱層次,和你一定產品名稱是獨一無二的,那么你可以設置uniquemembers

14、=“true”。如果你不知道,然后設置uniquemembers =“假”。在頂層,這將永遠是uniquemembers =“true”,有沒有父級。highcardinality屬性用于通知蒙德里安有此維度的元素的數量是不確定的和非常高的。可接受的值是真或假的(最后一個是默認值)。維度元素在整個組執(zhí)行的動作時,不能執(zhí)行使用highcardinality =“true”的。3.3.2“所有”成員默認情況下,每個層次都包含一個頂級水平,被稱為“(全部)“,其中包含一個單一的成員被稱為”(所有的hierarchyname)。此會員是父母的所有其他成員的層次結構,從而代表了總計。它也是默認成員的層次

15、結構中,即,用于計算單元格的值時不包括一個軸或在限幅器的層次結構的構件,其。的allmembername和alllevelname屬性將覆蓋所有級別和所有成員的默認名稱。如果元件具有hasall =“假”,“所有”的電平被抑制。該維度的默認成員將現在的第一級中的第一個成員,例如,它會在時間層次結構,層次結構中的第一年。更改默認的成員可以是混亂的,因此你通常應該使用hasall =“true”。元素也有defaultmember的屬性,覆蓋的層次結構的默認成員:.3.3.3時間維度時間維度不同編碼的年/月/周/日的基礎上的蒙德里安架構中,由于mdx與時間相關的功能,例如: parallelper

16、iod(水平,指數注冊會員) periodstodate(級成員) wtd(成員) mtd(成員) qtd(成員) ytd(成員) lastperiod(指數注冊會員)時間維度鍵入=“timedimension”,。的電平在時間維度中的作用是由水平的leveltype的屬性,其允許的值如下所示:leveltype值意思timeyears級為一年timequarters級為四分之一timemonths級為一個月timeweeks級為一個星期timedays級別代表天下面是一個例子的時間維度:尺寸名稱=“時間”類型=“timedimension”層次hasall =“true”allmembern

17、ame =“期間”的primarykey =的“dateid”3.3.4順序和顯示的水平請注意,在上面的例子的ordinalcolumn的namecolumn屬性的元素的時間層次。這些影響的結果顯示在水平如何。ordinalcolumn屬性指定層次結構表中的一列,提供的順序在一個給定的水平,而名稱列指定 的列將顯示。例如,在上面本月水平,datehierarchy表具有個月(1 . 12)和month_name(一月,二月,.)的列。將在內部使用的mdx月列的列值,所以有效的成員規(guī)格的形式為:時間 2005。q1。1。月水平的成員,將顯示的順序一月,二月,等在父子層次結構,成員總是按層次結構順

18、序。ordinalcolumn屬性控制的順序出現在他們的父母兄弟姐妹。序列可能是任何數據類型,可以合法地使用在order by子句中。訂購的范圍是每母公司,因此,在上面的例子中,day_in_month列應周期的每一個月。返回值的jdbc驅動程序應該非空的情況下,java.lang.comparable的其中產量所需的訂貨時,他們的cpareto方法被調用。級別包含一個類型屬性,它可以有值“字符串“,”整數“,”數字“,”布爾“,”日期“,”時間“和”時間戳“。默認值是“數字”,因為鍵列通常有一個數字類型。如果它是一個不同的類型,蒙德里安需要知道,這樣它可以正確生成s

19、ql語句,例如,字符串值,將產生單引號括起來:其中,productsku = 123-455-aa3.3.5多層次結構維度可以包含多個層次:尺寸名稱=“時間”foreignkey =的“time_id”和層次hasall =“假”的primarykey =的“time_id”層次名稱=“時代周刊”hasall,“假”的primarykey =的“time_id”請注意,第一層次不有一個名字。默認情況下,層次結構具有相同的名稱作為它的尺寸,因此,第一層次是所謂的“時間”。這些層次都沒有太多的共同之處-他們甚至不具有相同的表!-除了他們加入事實數據表中的同一列,的“time_id”。主要的原因是因

20、為它把兩個在同一維度中的層次結構更有意義的最終用戶,最終用戶都知道,它是沒有意義的“時代”一軸“時代周刊”的層次上層次另一軸。如果兩個層次都是一樣的尺寸,mdx語言的強制執(zhí)行常識,不允許你在同一查詢中使用它們。3.3.6退化的維度一個退化的維度是一個維度是如此簡單,這是不值得創(chuàng)建自己的尺寸表。例如,請考慮以下事實數據表:產品資料time_idpayment_methodcustomer_idstore_iditem_count美元5520040106信用1232233.54美元7820040106現金8922120.00美元19920040107自動取款機32222.99美元552004010

21、6現金1222211.18美元并假設我們創(chuàng)造了一個維度表的值在payment_method列:payment_method信用現金自動取款機這是相當沒有意義的維度表中。它有3個值,不會增加任何額外的信息,和一個額外的連接所產生的成本。相反,你可以創(chuàng)建一個退化的維度。要做到這一點,不表,申報的尺寸和蒙德里安將承擔來自事實數據表的列。多維數據集名稱=“結帳”表名=“結帳”請注意,因為沒有加入,“foreignkey屬性尺寸是沒有必要的,并且層 次元素沒有的子元素或primarykey的屬性。3.3.7內聯表inlinetable結構允許你定義一個數據集架構中的文件。您必須聲明的名字列,列類型(“字

22、符串”或“數字”),以及一組行。和,你必須提供一個唯一的別名,參考的數據集。下面是一個例子:columndef名稱=“desc”類型=“字符串”/ 1 高 2 中 3 這具有相同的效果,如果你有一個表,在你的數據庫被稱為“嚴重程度”:id遞減1高2中3低和聲明要指定null值的列,省略的,該列,該列的值將默認為null。3.3.8會員性能和格式化正如我們將在后面看到的,水平清晰度也可以定義成員屬性和成員格式化。3.3.9近似水平基數元素允許,指定可選屬性“approxrowcount”的。指定approxrowcount可以提高性能,減少了需要來確定級別,層次結構和尺寸基數。通過xmla連接時

23、,蒙德里安,這可以有一個顯著的影響。3.3.10默認度量屬性的和元素讓指定可選屬性的“defaultmeasure”的。指定defaultmeasure元素,允許用戶顯式地指定任何基礎的措施,作為一個默認的措施。指定defaultmeasure元素,讓用戶,明確地指定任何virtualcube的測量,作為一個默認的措施。需要注意的是,如果未指定一個默認的措施,它采取的第一項措施中定義的多維數據集作為默認的措施。在虛擬多維數據集的情況下,便拿起一壘措施的第一個多維數據集內定義的默認。指定defaultmeasure明確的情況下,你會想拿起一個計算成員作為默認的措施將是有益的。為方便起見,計算出的

24、構件可以被定義在一個基地立方體,并指定為在虛擬數據集defaultmeasure。多維數據集的名稱=“銷售”defaultmeasure中“單位銷售”. 措施 銷售賣場 - 措施 保存費用 .virtualcube名稱=“倉庫及銷售”defaultmeasure,“利潤”.3.3.11函數依賴的優(yōu)化在某些情況下,有可能通過利用已知的函數依賴于正在處理的數據,以優(yōu)化性能。這種依賴是典型的生產數據系統相關的業(yè)務規(guī)則的結果,往往并不能推斷說,只是看數據本身。功能依賴關系被宣布為蒙德里安使用的dependsonlevelvalue的元素的屬性和屬性的元素uniquekeylevelname的。的dep

25、endsonlevelvalue屬性的成員屬性是用來表示的成員屬性的值在功能上依賴于該成員屬性被定義的的價值。換言之,對于一個給定的電平值,該屬性值是不變的。的uniquekeylevelname一個屬性用于指示給定的電平的(如果有的話)一起在層次結構中的所有較高級別作為一個獨特的候補鍵,確保這些電平值的任何獨特的組合,是完全有一個組合值低于它的級別。為了說明這一點,考慮的層次結構模型的構建和許可在美國的汽車:在上面的例子中,我們知道,一個給定的生產廠只存在于一個單一的城市和國家,一個給定的車只有一個配色方案和一個修剪水平,并與一個單一的國家,許可證號。因此,我們可以說,所有的這些成員屬性在功

26、能上依賴于相關的值。此外,我們知道車輛識別號碼唯一地標識每節(jié)車廂,每節(jié)車廂只有一個許可證。因此,我們知道的品牌,型號,生產廠,以及車輛識別號碼的組合唯一地標識每個車輛的牌照號碼是多余的。這些特點使優(yōu)化的group by子句中的sql語句蒙德里安產生。如果沒有任何功能依賴信息,一個典型的查詢的汽車尺寸上看起來是這樣的:選擇automotive_dimmake_id為c0,automotive_dim。model_id為c1,automotive_dim。plant_id為c2,automotive_dim。plant_state_id為c3,automotive_dim。plant_city_i

27、d為c4,automotive_dim。vehicle_id為c5,automotive_dim。color_idc6,automotive_dim。trim_id為c7,automotive_dim。license_id為c8,automotive_dim。license_state_id為c9從automotive_dim:automotive_dim,group byautomotive_dim。make_id,automotive_dim。model_id,automotive_dim。plant_id,automotive_dim。plant_state_id,automotive_

28、dim。plant_city_id,automotive_dim。vehicle_id,automotive_dim。color_id,automotive_dim。trim_id,automotive_dim。license_id,automotive_dim。license_state_idorder by.然而,由于功能的依賴屬性的架構上面的例子中,我們知道該查詢選擇的深度,包括“唯一鍵”的水平,而且所有屬性的查詢功能也依賴于他們的水平。在這種情況下,group by子句是多余的,完全可能會被淘汰,顯著提高sql查詢的性能在某些數據庫:選擇automotive_dimmake_id為c0

29、,automotive_dim。model_id為c1,automotive_dim。plant_id為c2,automotive_dim。plant_state_id為c3,automotive_dim。plant_city_id為c4,automotive_dim。vehicle_id為c5,automotive_dim。color_idc6,automotive_dim。trim_id為c7,automotive_dim。license_id為c8,automotive_dim。license_state_id為c9從automotive_dim:automotive_dim,order

30、 by.如果查詢沒有得到足夠深,包括“唯一鍵”的水平,或有任何成員屬性不優(yōu)化功能依賴于自己的水平,這是不可能的。在某些情況下,不同的優(yōu)化可以由那里是沒有“唯一鍵”電平,但成員屬性中的一些或所有的功能依賴于他們的水平。有些數據庫(尤其是mysql)的允許被列在select子句中不也出現在group by子句中的列。在這樣的數據庫中,蒙德里安可以簡單地離開功能相關的成員屬性的group by,這可能會降低sql查詢處理時間明顯:選擇automotive_dimmake_id為c0,automotive_dim。model_id為c1,automotive_dim。plant_id為c2,autom

31、otive_dim。plant_state_id為c3,automotive_dim。plant_city_id為c4,automotive_dim。vehicle_id為c5,automotive_dim。color_idc6,automotive_dim。trim_id為c7,automotive_dim。license_id為c8,automotive_dim。license_state_id為c9從automotive_dim:automotive_dim,group byautomotive_dim。make_id,automotive_dim。model_id,automotive

32、_dim。plant_id,automotive_dim。vehicle_id,automotive_dim。license_id,order by.請注意重大變化預計將在蒙德里安4.0語法的模式,包括一種新的方法來聲明函數依賴。雖然期待的是,與蒙德里安3.1架構開發(fā)的4.0架構的處理器將保持向后兼容性,這些都是過渡性的屬性,在此期間推出可支持4.0將不會向后兼容。因此,使用這些屬性的任何模式都需要升級到蒙德里安4.0的一部分遷移到新的語法。3.3.12表提示蒙德里安支持一組有限的數據庫特定的提示的元素,然后將其傳遞給sql查詢的表。這些提示如下:數據庫提示類型允許的值描述mysql的forc

33、e_index該表上的索引的名稱強制選擇電平值時,從該表中使用的命名的索引。例如: my_index 與依賴的功能優(yōu)化,支持表提示是一個過渡階段,有可能改變,在蒙德里安4.0。任何使用它們的架構,可能需要遷移到新的架構語法升級到蒙德里安4.0的一部分。4。星型和雪花模式前面我們看到如何建立一個基于多維數據集的事實表和事實表中的(“付款方式”),并在一個表中的尺寸,加入到事實表(“性別”)。這是最常見的一種映射,被稱為一個星型模式。但尺寸可以根據一個以上的表,有一個明確的路徑加入到這些表到事實表中。這種尺寸被稱為雪花,是指用加入操作符。例如:.加入leftkey =“product_class_key”的rightalias 的“product_class”rightkey =的“product_class_id”加入leftkey =“product_type_id的”rightkey =的“product_type_id”這定義了一個“產品”維度,包括三個表。事實

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論