日期:2014-05-17  浏览次数:20725 次

BI SSAS如何创建维度层次结构
多维数据集建好了,其中有一个地理区域表(garea),大致字段如下:
AreaID varchar(20) Primary Key,
AreaName varchar(30),
RowID char(6),
ParentRowID char(6),
TreeControl varchar(36)

该表中AreaID是主键,RowID为一个六位唯一字段串用于唯一标志该行,ParentRowID是该行的上一级地区区域的ROWID值,treeControl也是一个唯一标志该行的字段,它有一个特性,同一层次的成员它的长度是一样的,而且Treecontrol的最后6位以前的文本就是上一级节点的Treecontrol,例如,广东省的TreeControl ACD123,广州市的Treecontrol可以为ACD123XYZ123,而番禺区(广州市的一个区)的Treecontrol可以为ACD123XYZ123EFG789。
现在的问题是,要如何在SSAS中创建一个地理区域的层次结构?

------解决方案--------------------
首先你的Dimension 表的设计有点问题:
1)在所有的 Dimension 表 PK 一般都是 Int 数据类型,很少有用 varchar 的,因为要考虑将来增加记录的方便。
2)如果你的这个 Dimension 表是个固定记录的表,将来不增加删除记录,RowID 和 AreaID 似乎是重复的

假如你的表结构设计没有问题了,那么你的这个要求叫做 Parent-child schema(的一部分), (不知道中文应该如何表达)。实现起来有好几个步骤需要做,不是一句话讲的清楚,类似的问题所有的SSAS 书籍或者帮助文件里都有详细的介绍。 如果你是使用SQL Server 2005 或者 2008,可以参考AdventureWorksDW 实例数据库里的 DimEmployee 表的设计和在SSAS Cube 里的实现方法,它就是一个典型的 Parent-Child schema.
------解决方案--------------------
RowID做KEY,Treecontrol做NAME,在维度向导里面就有父子维度。。如果还不满足就做代理键