对于ROLAP和MOLAP,在SSAS中为不规则的层次结构建模的最佳方法是什么?

时间:2009-07-14 01:11:11

标签: sql-server ssas olap msas

我目前正试图在SSAS中模拟一个参差不齐的层次结构,但我陷入困境。

首先,我试图像这样建模:

ItemKey,Level0Key,Level1Key,Level2Key
Item1,Lvl0-1,Lvl1-1,Lvl2-1
Item2,Lvl0-1,Lvl1-1,Lvl2-1
Item3,Lvl0-1,Lvl1-1,Lvl2-2
**Item4,Lvl0-1, , ** 

此示例中的最后一行显示“缺失”级别的空白。

在这里,ROLAP成功地解释了层次结构,但MOLAP模式将事实表中的错误分类成员结束,因此汇总已关闭。

接下来,我根据AdventureWorksDW示例SalesTerritory维度将其更改为此,该维度是一个参差不齐的层次结构:

ItemKey,Level0Key,Level1Key,Level2Key
Item1,Lvl0-1,Lvl1-1,Lvl2-1
Item2,Lvl0-1,Lvl1-1,Lvl2-1
Item3,Lvl0-1,Lvl1-1,Lvl2-2
**Item4,Lvl0-1,Item4,Item4** 

我正在利用HideIfOnlyChildAndSameNameAsParent来隐藏成员。

现在MOLAP的数字排成一列,但在ROLAP的土地上,由于我的等级中的第一级有大约10000名成员,我的主要减速很慢 - SSAS在扩展时出去吃午餐。

所以很明显我错过了一些东西,但是我没有看到很多关于“正确”方式的例子来做一个粗糙的层次结构。

感谢您的回答。

1 个答案:

答案 0 :(得分:3)

一般来说,“衣衫褴褛的等级”是我对“父子”的直接翻译。你希望它如此:

ItemID    ItemKey    ParentID
1         Lvl0-1     null
2         Lvl1-1     1
3         Lvl2-1     2
4         Lvl2-2     2
5         Item1      3
6         Item2      3
7         Item3      4
8         Item4      1

一旦你告诉它ParentID是什么,SSAS会为你生成这个父/子。相当自动化。此外,在这里我使用ItemID作为代理键,并使用指向它的ParentID。使用整数有很多原因,但对于Parent / Child,您应该使用ID作为Key列,然后将ItemKey作为属性/关系添加到所述键列。然后,您可以Item订购Attribute Key(此架构中缺少)并选择ItemKey。您还可以选择是否向用户显示该属性。

默认情况下,SSAS假定null或自引用父键是根节点。我通常使用null,因为当我滚动浏览记录时,我更容易看到它们。但是,这是一个偏好的事情。