CurrentMember(MDX)忽略切片器维度

CurrentMember(MDX)忽略切片器维度,mdx,Mdx,我在角色的CellData表达式中使用CurrentMember函数来限制通过特定维度对多维数据集的访问。除了一个例外,这是正常工作的。即使切片器维度用于过滤角色无权查看的数据,字符串“#N/A”也会显示在所有单元格中 只有在轴中包含角色限制访问的维度后,单元格的值才会按预期显示 在我看来,CurrentMember函数似乎忽略了切片器维度。是这样吗?我应该如何解决这个问题?我的建议是,严肃地说,不要使用需要使用多维数据集值限制访问的多维数据集。在那里,这样做,浪费了太多的时间,仍然以一个不稳定

我在角色的CellData表达式中使用CurrentMember函数来限制通过特定维度对多维数据集的访问。除了一个例外,这是正常工作的。即使切片器维度用于过滤角色无权查看的数据,字符串“#N/A”也会显示在所有单元格中

只有在轴中包含角色限制访问的维度后,单元格的值才会按预期显示


在我看来,CurrentMember函数似乎忽略了切片器维度。是这样吗?我应该如何解决这个问题?

我的建议是,严肃地说,不要使用需要使用多维数据集值限制访问的多维数据集。在那里,这样做,浪费了太多的时间,仍然以一个不稳定的解决方案结束


绝对不要在OLAP中使用“角色”。

这取决于您如何使用过滤器进行查询。如果您正在生成子查询(使用SSMS或BIDS中的顶部过滤器区域),则currentMember将返回All成员-这是子查询的工作方式。如果您在SSMS或BIDS中使用较低的查询,它将使用WHERE子句,您应该可以看到预期的结果


如果只是按维度成员进行筛选,则最好使用维度数据选项卡而不是单元格数据。

我在MSDN管理的新闻组中发布了此问题,并得到了Microsoft代表的答复。。。我不确定在msdn论坛上发布的帖子发生了什么,但我上面评论中的链接不再有效。SQL Monster似乎已将其缓存在此处。。。我最终采纳了你的建议,并从我的解决方案中删除了角色。我不确定我是否完全理解你的解决方案,但我认为这意味着我的“安全性”只有在我将维度包括在查询中时才会生效。不,安全性角色始终有效,尽管重新阅读你原来的帖子,使用.CurrentMember有点不寻常,可能会导致问题。我不会说不使用角色,但我会尽量避免使用基于单元的安全性。如果您阅读了文档,则其设计为在值受到限制时显示#N/A。如果希望用户看不到某组成员,则应使用DimensionData选项卡(而不是CellData)进行保护。