0

我发现很难正确理解在 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)

[来自维度的代理键属性]--> 覆盖状态--> 覆盖类型--> 覆盖代码--> 程序行

上面的每个属性的键列设置如下:

.....................
覆盖状态:
...... .........................
承保状态
承保类型

.....................
覆盖类型:
...... .........................
保险类型
保险代码

.....................
覆盖代码:
...... .........................
覆盖代码
程序行

.....................
程序行:
...... .........................
程序行

这行得通吗?这种情况是否更适合“不自然”的层次结构?

非常感谢您花时间阅读我上面的帖子!

谢谢!

4

2 回答 2

1

如果你必须在一个层次结构中拥有这些,强制它是一个自然的。与仅使用不自然的层次结构相比,您将付出更少的性能损失。强制自然层次结构的惩罚主要与键大小的增加有关(因为您将使用复合键来自然化层次结构)。

但是也许您应该考虑通过将这些属性强制为用户层次结构来实现什么?

是为了简化一些 MDX 查询吗?是不是维度太宽(与key直接相关的属性太多)导致处理时内存压力?

如果答案只是为用户界面(例如 Excel)对这些属性进行分组,您可能需要考虑简单地使用允许这些属性按您喜欢的顺序出现的命名约定......

于 2012-04-16T17:21:21.797 回答
0

Microsoft 删除了您引用的 KB(参考: http: //support.microsoft.com/kb/2131988

我对在那里管理 KB 内容的人感到非常沮丧。有人需要将手指从 DEL 键上移开!那是我的知识库,我可能花了一个多星期的时间帮助 MS 记录非自然层次结构中的意外问题(相对于属性的等效交叉连接)!!!

于 2018-08-03T01:07:18.697 回答