2013-04-07 340 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架构工作台用于创建多维数据集的基本示例,以便创建时,您将自动以更简单的方式了解您的问题。