MDX不太正确..需要过滤父母和他们的兄弟姐妹

时间:2012-10-04 15:35:19

标签: sql reporting-services ssas mdx business-intelligence

目标:删除指定用户访问级别以上的所有级别。

示例:我在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]
)

Please refer to this image.

1 个答案:

答案 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