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

标签 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 领域,我的速度大幅放缓,因为我的层次结构的第 1 级有大约 10000 名成员 - SSAS 在扩展中出去吃午饭。

很明显,我遗漏了一些东西,但我还没有看到很多关于“正确”方法来执行不规则层次结构的示例。

感谢您的回答。

最佳答案

一般来说,“参差不齐的层次结构”对我来说是“父子”的直接翻译。你希望它像这样:

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

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

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

关于sql-server - 在 SSAS 中为 ROLAP 和 MOLAP 建模不规则层次结构的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1122979/

相关文章:

mysql - 如何将此查询从 MySQL 转换为 SQL Server?

c# - 如何选择轻版本数据库系统

c# - 如何在一定时间后自动删除sql server中的记录

ssas - 将 MDX 转换为 DAX 查询时的性能问题

sql-server - EF Core 替换所有相关子实体

metadata - 在 visual studio 中加载元数据时出错

ssas - SSAS将走向何方?

sql - OLAP Cube 部署问题

data-warehouse - 星型模式 [事实 1 :n dimension]. ..如何?

schema - 星型模式是非规范化模式吗?