【发布时间】:2012-04-16 02:18:19
【问题描述】:
我发现很难正确理解在 SQL Server Analysis Services 2008 R2 中实现维度属性之间的属性关系的最佳用例场景。
根据我的阅读,出于性能原因,似乎应该避免“非自然层次结构”,而“自然”层次结构是首选的用户定义层次结构。
参考:http://support.microsoft.com/kb/2131988
话虽如此,我想问问你对以下场景的看法:
我有一个具有以下属性的维度:
维度名称: DimReserveData
维度成员:
节目线
覆盖代码
覆盖类型
覆盖状态
我想将这些属性按相同顺序放置在如下所示的层次结构中:
ReserveDataHierarchy
...................................
节目线
覆盖代码
覆盖类型
覆盖状态
.............................
层次结构信息:
计划行是代表所提供的保险范围计划的代码。 (例如:AA-23、BB-25、CC-78 等)
覆盖代码属性表示一个数字代码,代表为特定程序行提供的特定覆盖范围。 (例如:123、456 等)
覆盖类型表示与特定覆盖代码相关的覆盖类型。 (例如:车辆或身体)。
Coverage Status 表示给定 Coverage 的状态(打开或关闭)。
因此,关于层次结构中的基数,我们可以这样说:
一个程序行可以包含许多覆盖代码。
一个覆盖率代码可以包含多种类型。
一种覆盖类型可以包含许多状态值。
因此,浏览层次结构将产生以下属性和相应的成员:
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)
[来自维度的代理键属性]--> 覆盖状态--> 覆盖类型--> 覆盖代码--> 程序行
上面的每个属性的键列设置如下:
.......................
覆盖状态:
.....................
覆盖状态
覆盖类型
.......................
覆盖类型:
.....................
覆盖类型
覆盖代码
..................................
覆盖代码:
.....................
覆盖代码
节目单
..................................
节目线:
.....................
节目单
这行得通吗?这种情况是否更适合“不自然”层次结构?
非常感谢您花时间阅读我上面的帖子!
谢谢!
【问题讨论】:
-
覆盖状态可能需要定义为程序行、覆盖代码、覆盖类型和覆盖状态的组合。覆盖类型基于程序行、覆盖代码、覆盖类型。
标签: sql attributes ssas hierarchy relationship