3

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

谢谢阅读

4

4 回答 4

6

取自Pentaho Mondrian 文档

  • 成员是由一组特定属性值确定的维度内的一个点。性别等级有两个成员“M”和“F”。“旧金山”、“加利福尼亚”和“美国”都是商店层次结构的成员。
  • 层次结构是组织成结构以便于分析的一组成员。例如,商店层次结构由商店名称、城市、州和国家组成。层次结构允许您形成中间小计:一个州的小计是该州所有城市小计的总和,每个城市的小计都是该州的商店小计的总和那个城市。- 级别是与层次结构的根具有相同距离的成员的集合。
  • 维度是区分同一事实表属性(例如,发生销售的日期)的层次结构的集合。
  • 出于统一的原因,措施被视为特殊维度的成员,称为“措施”。

一个例子 让我们看一个简单的维度。

<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”列包含两个值,“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>
于 2013-04-17T07:32:37.413 回答
3

维度是层次结构的列表(例如,具有日历和年份层次结构的时间维度)。

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

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

你可以看看这个解释主要概念的MDX 温和介绍。

于 2013-04-08T11:30:57.597 回答
1

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

维杰。

于 2013-04-08T09:33:23.387 回答
0

peantho Schema Workbench 是您可以说是 mondrian 的修改版本,因此请查看用于创建多维数据集的 pentaho 模式工作台的基本示例,以便在创建时您将自动以更轻松的方式了解您的问题。

于 2013-04-16T07:13:34.047 回答