《分析服务从入门到精通读书笔记》第四章、创建父子维度(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

至此,一个父子维度我们创建完成,当然实际应用中,还有一些细节需要我们针对需求而更改,大部分都是些属性的设置,多练习下即可。

posted @ 2012-03-11 15:23  指尖流淌  阅读(1480)  评论(0编辑  收藏  举报