目标:删除指定用户访问级别以上的所有级别。
示例:我在where子句中有一个用户可以访问3717区。在该区域内,部门很少(图中显示为黑色)。我正在尝试查询区域3717,区域3717下列出的部门以及该区域的兄弟姐妹(区域3701到3718)。
我现在拥有的资料:我的查询列出了3717区,3717区下列出的部门,以及该区域的兄弟姐妹(3701至3718区)。此外,它列出了该区域(区域3),区域3及其兄弟区域(区域3,4,5),公司,已删除,无效和全部的父母,所有区域。
我正在尝试修改查询的聚合部分,但没有到达任何地方。
屏幕截图中的突出显示是我感兴趣的唯一内容。如果用户有权访问Region 35,我希望结果集的区域为30到39,区域仅限于35区,以及仅在35区以下的所有地区的部门。 请参考图片。 请帮忙
WITH
MEMBER [Measures].[ParameterValue] AS
[Organization].[Organization Hierarchy].CurrentMember.UniqueName
MEMBER [Measures].[ParameterCaption] AS
iif([Organization].[Organization Hierarchy].CurrentMember.Level.Ordinal =1,"",[Organization].[Organization Hierarchy].CurrentMember.Properties( "Organization Id" ) + " - ") +
[Organization].[Organization Hierarchy].CurrentMember.Name
MEMBER [Measures].[ParameterLevel] AS
[Organization].[Organization Hierarchy].CurrentMember.Level.Ordinal
MEMBER [Measures].[User Count] AS
[Measures].[User Organization Count]
-
Aggregate(
{[Organization].[Organization Hierarchy].parent
,DESCENDANTS([Organization].[Organization Hierarchy])}
,[Measures].[User Organization Count]
)
SELECT
{
[Measures].[ParameterValue]
,[Measures].[ParameterCaption]
,[Measures].[ParameterLevel]
}
ON COLUMNS,
FILTER
(
DESCENDANTS([Organization].[Organization Hierarchy],5, SELF_AND_BEFORE)
,[Measures].[User Count]
)
ON ROWS
FROM [Cube]
WHERE
(
[Users].[User Name].& [User_with_access_to_district_level__this_user_is_assgined_to_district_3718],
[Organization].[Organization Hierarchy Name].&[typeofhierarchy]
)
答案 0 :(得分:2)
我相信您需要使用UNION构建所需的集合。
UNION
(
//This bit gets you the children (districts)
DESCENDANTS([Organization].[Organization Hierarchy].&[35],1, AFTER),
//This bit gets you the siblings, including self
[Organization].[Organization Hierarchy].&[35].SIBLINGS
)
ON ROWS