层次结构和级别之间的差异

时间:2013-04-07 11:59:44

标签: business-intelligence olap-cube mondrian

我刚刚开始研究蒙德里安。我很难理解层次结构和层次。 多维数据集中维度的级别和层次结构之间的区别是什么?为什么我们需要在构建Mondrian模式时在层次结构中包含级别?

感谢您阅读

4 个答案:

答案 0 :(得分: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>

此维度由单个层次结构组成,该层次结构由名为Gender的单个级别组成。

维度的值来自customer表中的gender列。 “性别”列包含两个值“F”和“M”,因此“性别”维度包含成员[性别]。[F]和[性别]。[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 :(得分:3)

维度是层次结构列表(例如,包含日历和年级层次结构的时间维度)。

层次结构是级别列表(例如,具有年级和月级的日历)。

级别是成员列表(最终成员被组织成级别)。

您可以查看解释主要概念的MDX gentle introduction

答案 2 :(得分:1)

我们通常创建维度层次结构以将数据向下钻取到特定的层次结构级别。如果您有位置层次结构,我们通常会有以下级别 - 国家,州,县/区等。

维杰。

答案 3 :(得分:0)

peantho Schema Workbench你可以说mondrian的修改版本,所以看一下用于创建Cubes的pentaho schema工作台的基本示例,这样在创建时你会自动以更容易的方式了解你的问题。