《分析服务从入门到精通读书笔记》第四章、创建父子维度(7)
目的
父子维度的不同之处在于处于其包含了一个基于递归关系(Recursive relationship)的层次关系,比如,上级和下级雇员的层次结构关系是典型的递归关系。在一线工作的雇员会有一个主管,而该主管也是一名雇员。监督者之上会有一名同样的雇员的管理者,而管理者之上也会有一名同样的雇员的经理。经理会有一名行政助理,而行政助理没有下属。
组织中的递归雇员关系可以使用雇员(Emporee)维度表来模拟,其中每位雇员包含一条记录。表的主键是EmployeeKey列,包含了对应于每位雇员的唯一的ID。雇员的上级管理者所拥有的唯一的ID保存在ParentEmployeeKey列。也就说,ParentEmployee列和EmpoyeeKey列存在外键关系。这种在Employee表中两列间的自连接说明其父子维度。但需注意:组织的分支有不同数据的级别。经理和一线工人关系之间有4级,而经理和行政助理之间只有2级,这是一个不对称的层次结构。对于两列间存在递归关系而言,只能创建不同的层次结构。
内容
结合前几篇文章的介绍,这里过程是一样的,我们就不做介绍了,简单的贴图即可;
我们在DimPloyee表中新建一个命名空间:
添加维度
这里维度向导会检查数据源视图中的外键关系,会把DimSalesTeerritory表的也导入,这里我们为了保值维度简单,我们不添加这种表。
我们在可用属性栏目,将Emplyee Key属性重命名为:Emplyee;将Parent Employee Key改名为Employees
完成向导,并将维度的名称改为Employee。
在我们创建完Employee维度后,向导将识别出DimEmployee表中EmployeeKey和ParentEmployeeKey列之间的自连接关系,并使用这些列来创建父子维度层次。
下面我们来配置下这些层次
1、在“维度结构”中选项卡中的“属性”窗格中,右击Employee属性并选择“属性”
如图所示Employee属性用来创建该父子层次结构的子集。可以看到,其中Usages属性被设置为Key,父子关系层次结构的子级必须是维度的关键数。可以看到,向导将AttributeHierarchy属性设置为False,当然该属性是可选的。和父子关系没有关系。
2、同样,我们来查看下Employees属性,并选择"属性"。Employees属性用来创建该父子结构中的父级。
提示:每个有且只有一个属性的Usage属性,该值被设为Key。如果是一个父子维度那么有且只有一个属性的Usage属性的值被设置为Parent。所有其他属性的Usage属性值均被设置为Regular.
下面我们来更改下Employee属性,让它按照离职时间排序(End Date)
1、选择属性选项卡,我们可以看到他们已经存在了舒心关系;
2、在“维度结构”选项卡中,在属性窗口中,我们选择Employee,右击查看属性
3、在“属性”窗口中,分别将Order By和OrderByAttribute属性的值设置为AttributeName和End Date
这里的End Date就是为了排序而用,别的我们不需要将其显示,所以我们来把它隐藏
选择End Date右击属性,在“属性”窗口中,将AttributeHiserarchyEnable和AttributeHierarchyVisible属性都这设置为False
至此,一个父子维度我们创建完成,当然实际应用中,还有一些细节需要我们针对需求而更改,大部分都是些属性的设置,多练习下即可。