我希望能够使用字符串在[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]
答案 0 :(得分:1)
假设您使用Department
Department
维度,而Employee Department
位于名为Employee
的其他维度中,则您会得到一个交叉产品。 Analysis Services仅在同一维度中应用“autoexists”。跨维度,您必须明确地应用此逻辑:
ORDER(
Exists([Employee].[Department Name].[Department Name].members,
[Set_TargetEmp]
),
[Department].[Department].MEMBERVALUE
)
代码中的注释块应该提供您想要的内容。
如果您有多个与部门和员工维度相关的度量值组,则应说明度量值组的名称以用作Exists
的第三个参数。这是一个字符串参数,因此该名称应包含在引号中。