




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、MondrianSchema詳解SchemaSchema定義了一個(gè)多維數(shù)據(jù)庫。包含了一個(gè)邏輯模型,而這個(gè)邏輯模型的目的是為了書寫MDX語言的查詢語句。這個(gè)邏輯模型實(shí)際上提供了這幾個(gè)概念:Cubes(立方體)、維度(Dimensions)、層次(Hierarchies)、級別(Levels)、和成員(Members)。而一個(gè)schema文件就是編輯這個(gè)schema的一個(gè)xml文件。在這個(gè)文件中形成邏輯模型和數(shù)據(jù)庫物理模型的對應(yīng)。屬性:屬性名含義nameSchema勺名字measuresCaption在表小層顯小的內(nèi)谷Cube一個(gè)Cube是一系列維度(Dimension)和度量(Measure)的
2、集合區(qū)域。在Cube中,Dimension和Measure的共同地方就是共用一個(gè)事實(shí)表。Cube中的有以下幾個(gè)屬性:屬性名含義nameCube的名字caption標(biāo)題,在表示層顯示的cache是否對Cube對應(yīng)的實(shí)表用mondrian進(jìn)行存儲,默認(rèn)為trueenabled是布爾型的,如果是被激活,Cubes就執(zhí)行,否則就不予理睬,默認(rèn)為truedefaultMeasureCube里面有一個(gè)全局的標(biāo)簽定義了所用的事實(shí)表的表名元素:元素名含義table定義該Cube中的事實(shí)表如果事實(shí)表不在默認(rèn)的數(shù)據(jù)庫schema中,你需要通過使用"schema屬性明確指出Tableschemadinar
3、t*name=*sales_fact_1997*/>Dimension他是一個(gè)層次(Hierarchies)的集合,維度一般有其相對應(yīng)的維度表.他的組成是由層次(Hierarchies)而層次(Hierarchies)又是有級別(Level)組成.其屬性如下:屬性名含義nameDimension的名稱type類型,后兩個(gè)可選的類型:StandarDimension和TimeDimension,默認(rèn)為StandardDimensioncaption標(biāo)題,在表示層顯示的UsagePrefix加前綴,消除歧義foreignKey外鍵,對應(yīng)事實(shí)表中的一個(gè)列,匕通過<Hierarchy>
4、;兀素中的主鍵屬性(primaryKey)連接起來。Hierarchy你一定要指定其中的各種關(guān)系,如果沒有指定,就默認(rèn)Hierarchy里面裝的是來自立方體中的真實(shí)表.屬性如下:屬性名含義nameHierarchy的名稱,該值可以為空,為空時(shí)表小Hirearchy的名子和Dimension的名子相同。當(dāng)一'個(gè)Dimension有多個(gè)Hierarchy時(shí),注意name值要唯一。hasAll布爾型的,決定是否包含全部的成員memberallMemberName所有成員的名字,也就是總的標(biāo)題,例如:allMemberName="全部產(chǎn)品”allLevelName所有級別的名字,它會
5、覆蓋具卜所后的Member的name和所有的Level的name屬性的值。allMemberCaption例如:allMemberCaption-全部廣品這個(gè)是在表小層顯示的內(nèi)容PrimaryKey通過主鍵來確定成員,該主鍵指的是成員表中的主鍵,該主鍵同時(shí)要與Dimension里設(shè)置的foreignKey屬性對應(yīng)的字段形成外鍵對應(yīng)關(guān)系primaryKeyTable如果成員表不只一個(gè),而是多個(gè)表通過join關(guān)系形成的,那么就要通過這個(gè)屬性來指明join的這些表中,哪一個(gè)與Dimension里設(shè)置的foreignKey屬性形成外鍵關(guān)系。通過該屬性來指明主表caption標(biāo)題,在表示層顯示的defa
6、ultMember用來覆蓋層次中的默認(rèn)的成員memberReaderClass設(shè)廿個(gè)成員讀取器,默認(rèn)情況下Hierarchy都是從關(guān)系型數(shù)據(jù)庫里讀取的,如果你的數(shù)據(jù)/、在RDBMS里面的話,你可以通過自止義一個(gè)memberreader來表現(xiàn)一個(gè)Hierarchy。primaryTable如果層次有多于一個(gè)的表,你應(yīng)該使用primaryTable屬性以消除歧義。Level級別,他是組成Hierarchy的部分。屬性很多,并且是schema編寫的關(guān)鍵,使用它可以構(gòu)成一個(gè)結(jié)構(gòu)樹,Level的先后順序決定了Level在這棵樹上的的位置,最頂層的Level位于樹的第一級,依次類推Level的屬性如下:屬
7、性名含義name名稱table該Level要使用的表名column用上面指定的表中某一列作為該Level的關(guān)鍵字nameColumn用來顯示的時(shí)候使用,如果不定義,那么就采用上面的column的值來進(jìn)行顯小。ordinalColumn1定義該Level上的成員的顯示順序,如果不指定,那么采用column的值。parentColumn11在一個(gè)有父-子關(guān)系的Hierarchy當(dāng)中,當(dāng)前Level引用的是其父成員的列名。好比是一張部門表,在一張表里表現(xiàn)部門的上下級關(guān)系,一個(gè)是主鍵,肯定還有一個(gè)字段為連接到該主鍵的外鍵的列名,這里的parentColumn指的就是這個(gè)列名。nullParentVal
8、ue如果當(dāng)前的Level是有上下級關(guān)系(設(shè)置了parentColumn屬性),如果該Level又處于頂級,我們需要將頂級的數(shù)據(jù)取出來,這里指的是位于頂級的父成員的值,有些數(shù)據(jù)庫/、支持null,那么也可以使用0'或'-1'等,這就表示頂級的成員的父ID為0'或?yàn)?1。type數(shù)據(jù)類型,默認(rèn)值為stringo當(dāng)然還可以是Numeric、nteger、Boolean、Date等。uniqueMembers1該屬性用于優(yōu)化產(chǎn)生的SQL,如果你知道這個(gè)級別和其父級別交叉后的值或者是維度表中給定的級別所有的值是唯一的,那么就可以設(shè)置該值為true,否則為false。在最頂
9、層的級別中,一直都應(yīng)該設(shè)置為UniqueMembers=true,因?yàn)檫@里沒有父級別evelType該Level的類型,默認(rèn)為regular(正常的),如果你在其Dimension屬性type里選擇了TimeDimension那么這里就可以選擇TimeYears、TimeQuarters、TimeMonth、TimeWeeds、TimeDays。hideMemberIf在什么時(shí)候不隱藏該成員,可選的值肩二個(gè):Never、fBlankName、IfParentNamehighCardinality111局基數(shù)屬性,是用于通知Mondiran這里的維度兀素的值很大而且沒有定義,可以選擇該屬性的值為
10、true或false(默認(rèn)值),當(dāng)highCardinality=true的時(shí)候,對超出維度兀素的操作將不會被執(zhí)行。approxRowCount11該屬性可以用來提高性能,可以通過指廿個(gè)數(shù)值以減少判斷級別、層次、維度基數(shù)的時(shí)間,該屬性在通過使用XMLA連接Mondrian很有用處。caption標(biāo)題,在表小層顯小的captionColumn用來顯示標(biāo)題的列formatter該屬性定義了Member.getCaption()方法返回的動作值,這里需要是一個(gè)實(shí)現(xiàn)了mondrian.olap.MemberFormatter接口的類,用來對Caption地值進(jìn)行格式化。MeasureMeasure就是
11、我們要計(jì)算的數(shù)值,操作的核心。它的屬性如下:屬性名含義name名稱aggregator要采用的計(jì)算函數(shù)column要計(jì)算的列名formatString計(jì)算結(jié)果的顯示格式。visible是否可見datatype數(shù)據(jù)類型,默認(rèn)為Numericformatter米用類來對該Measure的值進(jìn)仃格式,具體參考Level的formatter屬性。caption標(biāo)題,用來顯示時(shí)使用。Join對于一個(gè)Hierarchy來說,有兩種方式為其指定:一種是直接通過一個(gè)Table標(biāo)簽指定;一種是通過Join將若干張表連接起來指定。一旦采用Join的話,那么就要在Hierarchy里的primaryKeyTable
12、屬性指定主表。進(jìn)行Mondrian的MDX§法檢查2009-08-0622:27主要是通過mondrian.olap包中的一些核心類來進(jìn)行MDX§法的檢查。首先,通過mondrian.olap.DriverManager來獲取一個(gè)鏈接對象mondrian.olap.Connection.Connectionconnection=DriverManager.getConnection("Provider=mondrian;Jdbc=jdbc:oracle:thin:xxx.xxx.xxx.xxx:1521:dbname;JdbcUser=dbuser;JdbcPas
13、sword=dbpasswd;Catalog=file:/c:/Tomcat4.1/webapps/mywebapp/WEB-INF/mondriantest.xml;JdbcDrivers=oracle.jdbc.driver.OracleDriver;",null,false);再對查詢的MDX§句進(jìn)行處理,使其轉(zhuǎn)化為一個(gè)可查詢的Query對象。StringqueryStr="selectMeasures.SalaryONCOLUMNS,Employee.employeeId.MembersONROWSfromCubeTest"Queryquery=
14、connection.parseQuery(queryStr);到此為止,如果query不為空,并且parseQuery沒有出現(xiàn)異常的話,就算是語法檢查通過了。當(dāng)然,如果要進(jìn)行查詢結(jié)果輸出的話,就顯示很簡單了,先查詢得到Result,再對Result進(jìn)行處理就可以了。Resultresult=connection.execute(query);mondrian中的Element描述2009-08-0622:54根元素<Schema>CollectionofCubes,Virtualcubes,Shareddimensions,andRoles.邏輯元素<Cube>Aco
15、llectionofdimensionsandmeasures,allcenteredonafacttable.<VirtualCube>Acubedefinedbycombiningthedimensionsandmeasuresofoneormorecubes.<Dimension><DimensionUsage>Usageofashareddimensionbyacube.<Hierarchy><Level><Property><Measure>物理元素<Table>Fact-ordimens
16、iontable.<View>Definesa'table'usingaSQLquery,whichcanhavedifferentvariantsfordifferentunderlyingdatabases.<Join>Definesa'table'byjoiningasetofqueries.存取控制<Role>Anaccess-controlprofile.<SchemaGrant>Asetofrightstoaschema.<CubeGrant>Asetofrightstoacube.<
17、HierarchyGrant>Asetofrightstoahierarchyandlevelswithinthathierarchy.<MemberGrant>Asetofrightstoamemberanditschildren.其他<Parameter><Table><Table>mondrian中的父子層次關(guān)系2009-08-0623:01父子層次一個(gè)使用方便的層次有一個(gè)嚴(yán)格的層的集合,成員與層緊密的聯(lián)系.比如,在Product層次中,任何產(chǎn)品名稱層的成員在商標(biāo)層上都有一個(gè)父親,商標(biāo)層上的成員在產(chǎn)品子目錄層也都有一個(gè)父親.這種結(jié)構(gòu)對
18、于現(xiàn)實(shí)世界中的數(shù)據(jù)有時(shí)候太嚴(yán)格了.一個(gè)父子層次只有一層(不計(jì)算'all'層),但是任何成員可以在同一層上有父親成員.一個(gè)典型的例子是Employees層次:<Dimensionname="Employees"foreignKey="employee_id"><HierarchyhasAll="true"allMemberName="AllEmployees"primaryKey="employee_id"><Tablename="emplo
19、yee"/><Levelname="EmployeeId"uniqueMembers="true"type="Numeric"column="employee_id"nameColumn="full_name"parentColumn="supervisor_id"nullParentValue="0"><Propertyname="MaritalStatus"column="marital_
20、status"/><Propertyname="PositionTitle"column="position_title"/><Propertyname="Gender"column="gender"/><Propertyname="Salary"column="salary"/><Propertyname="EducationLevel"column="education_level&q
21、uot;/><Propertyname="ManagementRole"column="management_role"/></Level></Hierarchy></Dimension>這里parentColumn和nullParentValue是重要的屬性:屬性parentColumn是一個(gè)成員連接到它父親成員的列名。在這種t#況下,它是指向雇員經(jīng)理的外鍵。元素<Level>的子元素<ParentExpression>是與屬性parentColumn有相同作用的,但是元素允
22、許定義任意的SQ達(dá)達(dá)式,就像元素<Expression>.屬性parentColumn(或者元素<ParentExpression>)是維一向Mondrian指出層次有父子結(jié)構(gòu)的。屬性nullParentValue是指明成員沒有父成員的值。缺省情況下nullParentValue="null",但是因?yàn)樵S多數(shù)據(jù)庫不支持null,建模時(shí)用其他值來代替空值,0和-1.mondrian的國際化2009-08-0623:11在Schema!的Dimension>Level、Measure標(biāo)簽者B有個(gè)caption屬性,在shecma里有個(gè)measure
23、sCaption屬性,Hierarchy里有個(gè)allMemberCaption屬性都是國際化顯示用的。格式為:caption="%。"通過以下幾個(gè)步驟便可實(shí)現(xiàn)國際化一、修改Schem破口下<DimensionforeignKey="TIME_ID"name="TIME"><HierarchyhasAll="true"allMemberName="Alltime"primaryKey="TIME_ID“allMemberCaption="%compensati
24、on.dimension.time.allmember.caption”><Tablename="TIME_TO_MONTH"></Table><Levelname="YEAR"table="TIME_TO_MONTbolumn="YEAR"type="String"uniqueMembers="false"levelType="Regular"hideMemberIf="Never"></Leve
25、l><Levelname="QUARTER'able="TIME_TO_MONTbolumn="QUARTERype="String"uniqueMembers="false"levelType="Regular"hideMemberIf="Never"></Level><Levelname="MONTHtable="TIME_TO_MONTdolumn="MONTH"ype="String&
26、quot;uniqueMembers="false"levelType="Regular"hideMemberIf="Never"></Level></Hierarchy></Dimension><Measurename="UOT1"column="UOT1"caption="%compension.measure.uot1.caption"datatype="Numeric"formatstring=&qu
27、ot;#,#0.#"aggregator="sum"></Measure>二、在WEBApplication的classes里創(chuàng)建對應(yīng)的國際化文件,命名如下locale_zh_CN.propertiescompensation.dimension.time.allmember.caption=u5168u90e8u65f6u95f4compensation.dimension.position.allmember.caption=u5168u90e8u8d44u4f4dcompension.measure.uot1.caption=1.5u500du52a0u73edu65f6u6570compension.measure.uot2.caption=2u500du52a0u73edu65f6u6570compension.measure.uot3.caption=3u500du52a0u73edu65f6
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)備耗材儲備管理制度
- 設(shè)計(jì)公司費(fèi)用管理制度
- 證書補(bǔ)貼規(guī)定管理制度
- 診所醫(yī)患溝通管理制度
- 診所藥品儲存管理制度
- 試劑耗材存貨管理制度
- 財(cái)務(wù)統(tǒng)計(jì)制度管理制度
- 貨物交接環(huán)節(jié)管理制度
- 貨車出車日常管理制度
- 2025年中國單色眼影行業(yè)市場全景分析及前景機(jī)遇研判報(bào)告
- NY-T 3213-2023 植保無人駕駛航空器 質(zhì)量評價(jià)技術(shù)規(guī)范
- 2023年春季內(nèi)蒙古高一化學(xué)學(xué)業(yè)水平合格性考試卷真題
- 5A景區(qū)規(guī)劃方案
- 機(jī)械制圖教案(完整版)
- 工業(yè)互聯(lián)網(wǎng)與智能制造
- 司母戊鼎的介紹
- 肺炎衣原體醫(yī)學(xué)課件
- 2024年兒童童車行業(yè)分析報(bào)告及未來發(fā)展趨勢
- 23秋國家開放大學(xué)《漢語基礎(chǔ)》期末大作業(yè)(課程論文)參考答案
- 《公務(wù)接待》課件
- 中醫(yī)內(nèi)科學(xué)消渴課件
評論
0/150
提交評論