我在一个名为Employees的维度中有一个员工父子层次结构,它显示了组织的管理结构。该层次结构是[Employees]。[Managerial]。 还有另一个层次结构列出了组织的所有员工。这是一个单级层次结构,它是[Employess]。[All Employees]。
我的查询看起来像这样:
With
Member measures.[FullTimeSalary] as measures.[Salary] * measures.[FullTimeFactor]
Select {measures.[FullTimeSalary]} on 0,
Non empty
{
[Employess].[All Employees].[All].Children
}
On 1
From MyCube
Where ([Time].[Month].&[201501])
现在,如果我扩展父子层次结构([Employees]。[Managerial]层次结构),我可以看到这个结构的每个不同层次([Level 02],[Level 03],[Level 04], ect)以及我现在需要做的是创建一个名为measure的新计算度量。[SupervisingManager]在层次结构的[Level 03]中返回当前成员值。
我已经尝试了
member measures.[SupervisingManager] as [Employees].[Managerial].[Level 03].currentmember.member_name
但这只是返回"#错误"并使用
member measures.[SupervisingManager] as [Employees].[Managerial].currentmember.member_name
返回当前成员。我也尝试了
measures.[SupervisingManager] as [Employees].[Managerial].currentmember.parent.member_name
但问题在于,当前成员可以位于层次结构中的任何成员。我能想到这样做的唯一方法是做一个大规模的case语句,获取当前成员的序数值并使用适当的.parent.parent逻辑。有没有更简洁的方法来做到这一点?
答案 0 :(得分:0)
也许这些方面的东西会有所帮助:
WITH
MEMBER measures.[FullTimeSalary] AS
measures.[Salary] * measures.[FullTimeFactor]
MEMBER measures.[SupervisingManager] AS
IIF
(
[Employees].CurrentMember.Parent.Level.Name = 'Level 03'
,[Employees].CurrentMember.Parent.Member_Caption
,'n/a'
)
SELECT
{
measures.[FullTimeSalary]
,measures.[SupervisingManager]
} ON 0
,NON EMPTY
{[Employess].[All Employees].[All].Children} ON 1
FROM MyCube
WHERE
[Time].[Month].&[201501];