Skip to main content

父子结构维度

传统的层次结构(Hierarchy)有一组严格的层级(Level),以及遵循这些层级的成员(Member). 例如, 在 Product 层次结构中, Product Name 的层级的任何成员都有一个 Brand Name 层级的父节点, 而此父节点又有 Product Subcategory 层级的父节点, 以此类推. 这种结构有时过于严格,无法对真实世界的数据进行建模(例如财务科目, 产品线分类等).

父子层次结构只有一个级别(不包括特殊的"All"级别),但任何成员都可以在同一级别拥有父级。一个经典的例子是员工 Employees 的主管报告上下级结构, 下面我们以Demo - FoodMart Model数据模型中的 employee 表创建 Employees 维度做演示.

创建员工父子结构维度

用数据表 employee 进行创建员工维度, 输入维度名称为 Employees, 标签为员工, 点击应用创建成功后转到员工维度界面.

  1. 点击导航栏员工页签上的更多按钮, 选择(编辑)层次结构, 会打开层次结构属性编辑界面, 将主键(PrimaryKey)设置为 employee_id;
  2. 打开 employee 表结构, 找到 employee_id列将其托至层级区域, 可以看到相应的数据预览;
  3. 选中 employee_id 层级, 打开层级属性编辑界面, 输入以下层级信息:
    1. 名称(Name): Employee Id
    2. 标签(Caption): 员工
    3. 字段(Column): employee_id
    4. 成员唯一: true
    5. 名称字段(Name Column): full_name
    6. 父级字段(Parent Column): supervisor_id
    7. 父字段空(nullParentValue): '0'
  4. 保存

添加到多维模型

以数据表salary创建薪资(Salary)模型, 并添加度量 salary_paid, 然后将员工维度添加到薪资模型, 更改其共享维度外键属性为 employee_id.

保存后即可使用员工维度上级关系对薪资的度量进行上下级统计.

添加属性

还可以为员工上下级层级添加属性, 打开层级属性编辑界面, 在属性区域点击添加, 新增如下属性:

  • // 格式 名称: 字段
  • Marital Status: marital_status
  • Position Title: position_title
  • Gender: gender
  • Salary: salary
  • Education Level: education_level
  • Management Role: management_role

Parent Child 层次结构不能设置 Caption 列, 有 bug 暂时没有解决.

闭合表

编辑 Employee Id 层级属性, 启用闭合表, 为其选择表为 employee_closure, 然后选择父级字段为 supervisor_id, 选择子字段为 employee_id.

创建科目父子层次结构

再以财务科目表 Account 维度为例创建父子层次结构.

  1. 使用数据表 account 创建科目维度
  2. 输入信息:
    1. 名称(Name): Account
    2. 标签(Caption): 科目
    3. 表(Table): account
  3. 点击应用, 转到维度页面
  4. 打开 层次结构 属性编辑页面, 输入信息:
    1. 主键(Primary Key): account_id
  5. 保存

创建费用模型

使用数据表 expense_fact 创建费用多维模型.

  1. 创建模型, 输入以下信息:
    1. 类型: Cube
    2. 名称: Expense
    3. 标签: 费用
  2. 点击应用
  3. 添加度量 amount
  4. 将科目维度添加到此模型
  5. 保存

验证数据.