在单元集的上下文中添加更多信息

时间:2014-01-06 22:36:59

标签: ssas mdx

我希望能够使用字符串在[Employee Department] hierarchy内搜索任何级别:以下操作正常并找到与字符串“Control”相关的所有成员< / p>

现在我尝试添加交叉连接,以便始终可以看到每个行的部门名称,然后由部门查看ORDER。如果注释部分被取消注释,我很遗憾地得到一个完整的笛卡尔产品 - 我只想要过滤器找到的成员上下文中的部门 - 这可能吗?

WITH 
    MEMBER [Measures].[LevelName] AS
        [Employee].[Employee Department].Level.Name
    MEMBER [Measures].[LevelNumber] AS
        [Employee].[Employee Department].Level.Ordinal
   SET [Set_TargetEmp] AS
        {
        FILTER(
            [Employee Department].AllMembers,
                (
                InStr(
                    1, 
                    [Employee].[Employee Department].currentmember.name, 
                    "Control") <> 0
                ) 
            )
        }
SELECT
//  ORDER(
//      [Department].members,
//      [Department].[Department].MEMBERVALUE
//      ) 
//  *
    ORDER(
        DESCENDANTS(
            [Set_TargetEmp],
            [Employee].[Employee Department].[Department],
            SELF_BEFORE_AFTER
            ),
        [Measures].[LevelNumber],
        BASC
    ) as X
    ON 1,
    {
    [Measures].[LevelName],
    [Measures].[LevelNumber] 
    } ON 0
FROM [Adventure Works]

1 个答案:

答案 0 :(得分:1)

假设您使用Department Department维度,而Employee Department位于名为Employee的其他维度中,则您会得到一个交叉产品。 Analysis Services仅在同一维度中应用“autoexists”。跨维度,您必须明确地应用此逻辑:

   ORDER(
      Exists([Employee].[Department Name].[Department Name].members,
             [Set_TargetEmp]
            ),
      [Department].[Department].MEMBERVALUE
      )

代码中的注释块应该提供您想要的内容。

如果您有多个与部门和员工维度相关的度量值组,则应说明度量值组的名称以用作Exists的第三个参数。这是一个字符串参数,因此该名称应包含在引号中。