我发现很难正确理解在 SQL Server Analysis Services 2008 R2 中实现维度属性之间的属性关系的最佳用例场景。
从我所阅读的内容来看,出于性能原因,应避免使用“非自然层次结构” ,而“自然”层次结构是首选的用户定义层次结构。
参考: http: //support.microsoft.com/kb/2131988
话虽如此,我想请教您对以下情况的看法:
我有一个具有以下属性的维度:
维度名称: DimReserveData
维度成员:
项目线
覆盖代码
覆盖类型
覆盖状态
我想将这些属性以相同的顺序放置在层次结构中,如下所示:
ReserveDataHierarchy
.........................
程序行
覆盖代码
覆盖类型
覆盖状态
。 ……………………………………………………………………………………………………………………………………
层次结构信息:
计划行是代表所提供的保险范围计划的代码。(例如:AA-23、BB-25、CC-78 等)
覆盖代码属性代表一个数字代码,代表为特定程序行提供的特定覆盖范围。(例如:123、456 等)
覆盖类型表示与特定覆盖代码相关的覆盖类型。(例如:车辆或身体)。
覆盖状态表示给定覆盖的状态(打开或关闭)。
因此,对于层次结构中的基数,我们可以说以下内容:
一个程序行可以包含许多覆盖代码。
一个覆盖率代码可以包含多种类型。
一种覆盖类型可以包含许多状态值。
因此,浏览层次结构将产生以下属性和相应的成员:
DimReserveData
.................................................. ..................................................... .*.................................
程序行 | 覆盖代码 | 覆盖类型 | 覆盖状态
.................................................. ..................................................... .....................
AA-12 ...... ........123........车辆......打开
BB-14 .. .............456.......................车辆...... ....封闭式
CC-23 ...................123 ....车辆 .... .............打开
DD-23 .............456................ ......身体............打开
我的问题是,在“自然”或“非自然”层次结构中对这些属性进行建模是否是一种好习惯。我想使用“自然”层次结构来提高性能。
显然,将此层次结构建模为“自然”需要使用属性关系。
回到我上面的示例层次结构,如果一个给定的覆盖代码属性属于多个程序行以及包含相同覆盖类型的多个覆盖代码,“自然”层次结构是否可能?
在这篇有用的帖子中:http ://sqlserverpedia.com/blog/sql-server-bloggers/idiots-guide-to-ssas-attribute-relationships/提到在一个城市属于多个州或省的情况下,可以修改属性键列,以便唯一定义层次结构中的每个属性。
这在我上面的例子中有效吗?
我在想我可以像这样对属性关系进行建模:(使用 SSAS 2008 R2)
[来自维度的代理键属性]--> 覆盖状态--> 覆盖类型--> 覆盖代码--> 程序行
上面的每个属性的键列设置如下:
.....................
覆盖状态:
...... .........................
承保状态
承保类型
.....................
覆盖类型:
...... .........................
保险类型
保险代码
.....................
覆盖代码:
...... .........................
覆盖代码
程序行
.....................
程序行:
...... .........................
程序行
这行得通吗?这种情况是否更适合“不自然”的层次结构?
非常感谢您花时间阅读我上面的帖子!
谢谢!