2013-04-07 403 views
3

我剛開始致力於蒙德里安。我很難理解層次和層次。 什麼是多維數據集中維度的級別和層次之間的區別?爲什麼我們需要在構建Mondrian架構時在層次結構中具有層次?層次與層次之間的區別

感謝您閱讀

回答

6

Pentaho Mondrian Documentation

  • 截取的部件是由一組特定的屬性值的所確定的尺寸範圍內的一個點。性別等級有兩個成員'M'和'F'。 '舊金山','加州'和'美國'都是商店層級的成員。
  • 層次結構是一組組成結構以便於分析的成員集合。例如,商店分層結構由商店名稱,城市,州和國家組成。該等級允許你形成中間小計:一個州的小計是該州所有城市的小計的總和,其中每個小計都是商店的小計總和那個城市。 -A等級是與層次結構的根具有相同距離的成員的集合。
  • 維度是區分同一事實表屬性(例如,銷售發生的那一天)的層次結構的集合。
  • 由於統一的原因,措施被視爲特殊維度的成員,稱爲「措施」。

舉例 讓我們來看一個簡單的維度。

<Dimension name="Gender" foreignKey="customer_id"> 
    <Hierarchy hasAll="true" primaryKey="customer_id"> 
    <Table name="customer"/> 
    <Level name="Gender" column="gender" uniqueMembers="true"/> 
    </Hierarchy> 
</Dimension> 

此維由一個層次結構組成,該層次結構由稱爲性別的單個層組成。

維度的值來自客戶表中的性別列。 「性別」列包含兩個值'F'和'M',所以Gender維包含成員[Gender]。[F]和[Gender]。[M]。

又如示出示例時間維度的:

這裏是一個時間維度的示例:

<Dimension name="Time" type="TimeDimension"> 
    <Hierarchy hasAll="true" allMemberName="All Periods" primaryKey="dateid"> 
    <Table name="datehierarchy"/> 
    <Level name="Year" column="year" uniqueMembers="true" levelType="TimeYears" type="Numeric"/> 
    <Level name="Quarter" column="quarter" uniqueMembers="false" levelType="TimeQuarters"/> 
    <Level name="Month" column="month" uniqueMembers="false" ordinalColumn="month" nameColumn="month_name" levelType="TimeMonths" type="Numeric"/> 
    <Level name="Week" column="week_in_month" uniqueMembers="false" levelType="TimeWeeks"/> 
    <Level name="Day" column="day_in_month" uniqueMembers="false" ordinalColumn="day_in_month" nameColumn="day_name" levelType="TimeDays" type="Numeric"/> 
    </Hierarchy> 
</Dimension> 

還要注意,尺寸可以有多於一個的層次結構:

的尺寸可以包含多個層次結構:

<Dimension name="Time" foreignKey="time_id"> 
    <Hierarchy hasAll="false" primaryKey="time_id"> 
    <Table name="time_by_day"/> 
    <Level name="Year" column="the_year" type="Numeric" uniqueMembers="true"/> 
    <Level name="Quarter" column="quarter" uniqueMembers="false"/> 
    <Level name="Month" column="month_of_year" type="Numeric" uniqueMembers="false"/> 
    </Hierarchy> 
    <Hierarchy name="Time Weekly" hasAll="false" primaryKey="time_id"> 
    <Table name="time_by_week"/> 
    <Level name="Year" column="the_year" type="Numeric" uniqueMembers="true"/> 
    <Level name="Week" column="week" uniqueMembers="false"/> 
    <Level name="Day" column="day_of_week" type="String" uniqueMembers="false"/> 
    </Hierarchy> 
</Dimension> 

我們可以在文檔中簡化簡單模式:

<Schema> 
<Cube> 
    <Dimension Gender> 
    <Hierarchy> 
     <Level Gender> 
    </Hierarchy> 
    </Dimension> 
    <Dimension Time> 
    <Hierarchy> 
     <Level Year/> 
     <Level Quarter/> 
     <Level Month/> 
    </Hierarchy> 
    <Hierarchy> 
     <Level Year/> 
     <Level Week/> 
     <Level Day/> 
    </Hierarchy> 
    </Dimension> 
    <Measure Unit Sales/> 
    <Measure Store Sales/> 
</Cube> 
</Schema> 
1

我們通常會創建維層次的數據向下鑽取到特定的層級。如果您有位置層次結構,我們通常會具有以下級別 - 國家,州,縣/區等。

Vijay。

+0

或者我們可以將位置定義爲維度,將國家,州,地區定爲層級? – cjava 2013-04-09 05:42:52

+0

我必須說,看看如何在pentaho shcema工作臺中創建模式(cube)的示例,您將自動清除疑惑。 – 2013-04-16 07:10:57

3

維度是層次結構的列表(例如,具有日曆和年度層次結構的時間維度)。

層次結構是一個層次列表(例如,具有年份和月份級別的日曆)。

級別是成員列表(最終成員被組織到級別中)。

您可能會看到這個解釋主要概念的MDX gentle introduction

+0

感謝您的回覆。我讀了一些關於時間維度和年月的立方體作爲層次結構的地方。哪一級可以忽略?我讀過一些關於它們之間有某種關係的地方(像父母的孩子),而層次結構之間沒有任何關係。雖然我不清楚這種關係。 – cjava 2013-04-09 05:49:29

+0

您不能'忽略'級別,因爲它們是成員的實際容器。 – 2013-04-09 09:14:08

0

peantho Schema Workbench是你可以說mondrian的修改版本,所以看看什麼是pentaho架構工作臺用於創建多維數據集的基本示例,以便創建時,您將自動以更簡單的方式瞭解您的問題。