如果我弄错了一些术语,请原谅,我是 MDX/OLAP 的新手。
我有一个维度来确定道德墙。维度看起来像这样:
Ethical Wall (dimension)
--> Matter ID (hierarchy)
--> Walled (hierarchy)
--> White Listed Initials (hierarchy)
--> Black Listed Initials (hierarchy)
[Walled]
层次结构包含 true 或 false,具体取决于事物是否应用了墙。
白名单和黑名单层次结构分别包含有权或无权访问某事项的用户姓名首字母。请注意,事物要么被列入白名单,要么被列入黑名单,绝不是两者的结合。
我已经能够相对轻松地解释无墙场景和白名单场景,但我在黑名单场景中遇到了很多问题。这是我到目前为止提出的 where 子句:
({
(
[Ethical Wall].[Walled].&[True]
,[Ethical Wall].[White Listed Initials].&[XXX]
,[Ethical Wall].[Black Listed Initials].&[]
)
,(
[Ethical Wall].[Walled].&[True]
,[Ethical Wall].[White Listed Initials].&[]
,-{[Ethical Wall].[Black Listed Initials].&[XXX]}
)
,(
[Ethical Wall].[Walled].&[False]
,[Ethical Wall].[White Listed Initials].&[]
,[Ethical Wall].[Black Listed Initials].&[]
)
})
剥离并在表格中表示我从中过滤的初始数据集,看起来像这样:
我只想选择首字母为 XXX 的用户有权访问的 Ids
。从上面应用过滤器我得到所有 3 个 Ids
。我要找的结果集只有Id
1
和2
。上面的文件管理器匹配如下:
我理解为什么我的过滤器正在检索所有 3 个 Id
,但我不明白如何修改过滤器的中间部分以排除 Id
正确。这是过滤器的违规部分:
,(
[Ethical Wall].[Walled].&[True]
,[Ethical Wall].[White Listed Initials].&[]
,-{[Ethical Wall].[Black Listed Initials].&[XXX]}
)
我如何修改我的过滤器以匹配这样的数据集?
最佳答案
为什么不能对此进行简化?
WHERE
({
(
[Ethical Wall].[Walled].&[True]
,[Ethical Wall].[White Listed Initials].&[XXX]
)
,(
[Ethical Wall].[Walled].&[False]
,[Ethical Wall].[White Listed Initials].&[]
)
});
关于ssas - MDX 排除层次结构中存在值的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44835658/