将OR添加到FILTER功能中

时间:2014-01-20 17:53:18

标签: ssas mdx

我们在此 SO Post

中感谢@FrankPI
WITH 
   MEMBER [Measures].[LevelName] AS
       [Employee].[Employee Department].CurrentMember.Level.Name
   MEMBER [Measures].[LevelNumber] AS
       [Employee].[Employee Department].CurrentMember.Level.Ordinal
   MEMBER [Measures].[MemName] AS
       [Employee].[Employee Department].CurrentMember.Name
   SET [Set_TargetEmp] AS
        {
        FILTER(
            [Employee Department].AllMembers,
                (
                InStr(
                    1, 
                    [Employee].[Employee Department].currentmember.name, 
                    "WC4") <> 0
                ) 
            )
        }
SELECT
    {
    [Measures].[MemName], 
    [Measures].[LevelName],
    [Measures].[LevelNumber] 
    } ON 0,
    Hierarchize(
        Generate([Set_TargetEmp] as e,
            Ascendants(e.Current)
            +
            Descendants(e.Current, e.Current.Level, SELF_AND_AFTER)
        )
    )
    ON 1
FROM [Adventure Works] 

我想做一个小改动但是新成员(Reuben H. D'sa)是关键53,不会出现在结果集中。为什么呢?

WITH 
    MEMBER [Measures].[LevelName] AS
        [Employee].[Employee Department].CurrentMember.Level.Name
    MEMBER [Measures].[LevelNumber] AS
        [Employee].[Employee Department].CurrentMember.Level.Ordinal
    MEMBER [Measures].[MemName] AS
        [Employee].[Employee Department].CurrentMember.Name
    SET [Set_TargetEmp] AS
        {
        FILTER(
            [Employee Department].AllMembers,
                (
                InStr(
                    1, 
                    [Employee].[Employee Department].currentmember.name, 
                    "David P. Hamilton") <> 0
                ) 
            or
            [Employee].[Employee Department].currentmember.member_key = 53 //<<<<<<new bit
            )
        }
SELECT
    {
    [Measures].[MemName], 
    [Measures].[LevelName],
    [Measures].[LevelNumber] 
    } ON 0,
    Hierarchize(
        Generate([Set_TargetEmp] as e,
            Ascendants(e.Current)
            +
            Descendants(e.Current, e.Current.Level, SELF_AND_AFTER)
        )
    )
    ON 1
FROM [Adventure Works] 

1 个答案:

答案 0 :(得分:2)

currentmember.member_key = 53似乎没有返回任何匹配结果。我试过了currentmember.Properties("Key0", typed) = 53,这让两位员工都回来了。

有关详细信息,请参阅the documentation on the Properties methodthe documentation on intrinsic properties(向下滚动到“非上下文相关成员属性”)。

相关问题