SSAS OLAP 多维数据集动态安全性。一个角色中的多个维度
Posted
技术标签:
【中文标题】SSAS OLAP 多维数据集动态安全性。一个角色中的多个维度【英文标题】:SSAS OLAP Cube Dynamic Security. Many dimensions in one role 【发布时间】:2016-09-26 12:38:13 【问题描述】:设置多维数据集后,我被要求使用用户表和他们可以看到的数据添加动态安全性。
问题是我必须考虑 3 个不同的维度。 我决定在 count 上使用带有 noneEmpty 函数的事实表。
NonEmpty([Dimension].[Hierarchy].members,
([Measures].[Allowed Count],
[Users].[User].&[UserName]
)
)
设置角色后,我得到如下结果:
Dim1 |暗淡2 |昏暗3
1 |一个 | 300
1 |一个 | 320
1 |一个 | 340
1 |乙| 300
1 |乙| 320
1 |乙| 340
它应该在哪里:
Dim1 |暗淡2 |昏暗3
1 |一个 | 300
1 |一个 | 320
1 |乙| 340
允许用户访问的数据存储在类似的表中
用户名 | Dim1Key | Dim2Key |调暗键
层次结构就像 每个 Dim1 包含每种类型的 Dim2,又包含每种类型的 Dim3。
并且用户只能访问 Dim1 中 Dim2 中的 Dim3 的给定成员。
有没有办法在 MDX 中连接这个维度,所以每个 Dim 最终只有其各自的值
更新:
经过一些研究,我得到了这个查询:
SELECT [Measures].[CC Count] ON 0,
NonEmpty(
(
NonEmpty((Dim1.children),
([Measures].[CC Count],
[Users].[User].&[userName]
))
,
NonEmpty((Dim2.children),
([Measures].[CC Count],
[Users].[User].&[userName]
)),
NonEmpty((Dim3.children),
([Measures].[CC Count],
[Users].[User].&[userName]
))
)
,([Measures].[CC Count],
[Users].[User].&[userName]
))
ON 1
FROM [Cost Center]
这给了我想要的结果,但我无法将其放入角色中的维度数据中。有没有办法改变它?
【问题讨论】:
【参考方案1】:请尝试创建一个新的隐藏维度,其中 key 属性具有 key1、key2 和 key3 的复合键。您将不得不选择一些 NameColumn 但没关系。所以选择 key1 作为名称。除了维度键之外,您不需要维度上的任何内容。
在多维数据集设计器的维度用法中,确保将这个新维度连接到所有事实表以及提供 CC 计数度量的安全度量组。
然后仅在该维度上创建基于角色的安全性。用户将能够看到所有维度的所有成员,但这个新的复合键维度将确保他们看不到他们不应该看到的事实行。这应该比单元安全性的替代方案要好得多。
【讨论】:
感谢您的回复。我正在实施你的想法,有一个问题。这个新维度应该建立在安全表或主要事实表的基础上? @Zergister 嗯。如果它建立在所有 3 个键的交叉连接上,会不会太大?如果没有,那就这样做。如果是这样,您将需要至少存在于任何事实表中的任何组合。 好吧,我得出了同样的结论:D以上是关于SSAS OLAP 多维数据集动态安全性。一个角色中的多个维度的主要内容,如果未能解决你的问题,请参考以下文章