SSAS OLAP 立方体动态安全。一个角色的多个维度

SSAS OLAP Cube Dynamic Security. Many dimensions in one role

设置多维数据集后,我被要求使用 table 的用户和他们可以看到的数据来添加动态安全性。

问题是我必须考虑 3 个不同的维度。 我决定使用事实 table 和 noneEmpty 函数 on count.

NonEmpty([Dimension].[Hierarchy].members,
    ([Measures].[Allowed Count],
     [Users].[User].&[UserName]
     )
)

设置角色后我得到的结果如下:

昏暗1 |昏暗2 |昏暗 3

1 |一个 | 300

1 |一个 | 320

1 |一个 | 340

1 |乙 | 300

1 |乙 | 320

1 |乙 | 340

它应该在哪里:

昏暗1 |昏暗2 |昏暗 3

1 |一个| 300

1 |一个| 320

1 |乙 | 340

允许用户访问的数据存储在 table 中,如

用户名 | Dim1Key |昏暗键 | Dim3Key

层次结构就像 每个 Dim1 包含每种类型的 Dim2,每个类型的 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]

这给了我想要的结果,但我无法将它放入 Role 的 Dimensiom Data 中。有没有办法改变它?

请尝试创建一个新的隐藏维度,其中键属性具有 key1、key2 和 key3 的复合键。您将不得不选择一些 NameColumn,但这并不重要。所以选择 key1 作为名称。除了维度键之外,您不需要维度上的任何内容。

在多维数据集设计器的维度使用中,确保将此新维度连接到所有事实表和提供 CC 计数度量的安全度量组。

然后仅在该维度上创建基于角色的安全性。用户将能够看到所有维度的所有成员,但这个新的复合键维度将确保他们看不到他们不应该看到的事实行。这应该比单元安全的替代方案表现得更好。