我正在尝试基于层次结构级别执行一些条件逻辑。 在我的ssas cube中,我定义了以下层次结构:
我想创建一个计算成员“效率”
DIVIDE([Measures].[A], [Measures].[B])
但仅限于员工级别。对于所有其他级别,我需要将员工排除在哪里
[Measures].[c] = 1
我不确定如何实现这一点,我希望有人可以帮助我。
提前致谢!
编辑我当前的代码是这样的。问题是成员不会在子团队和团队级别上进行过滤
case when [Organigram].[Hierarchy].Currentmember.level IS [Organigram].[Hierarchy].[Employee]
then DIVIDE([Measures].[a] , [Measures].[b])
else
case when [Measures].[c] = 0
then DIVIDE([Measures].[a] , [Measures].[b])
else NULL
end
END,
答案 0 :(得分:0)
继续@whytheq的评论
使用WITH MEMBER
创建新度量,并在其中使用IIF
测试。在你将第二个IIF
嵌套在那里以检查[Measures].[c]
之前,首先正确地运行这样的工作......
WITH MEMBER [Measures].[Efficiency]
AS 'IIF(
[Organigram].[Hierarchy].Currentmember.level IS [Organigram].[Hierarchy].[Employee],
[Measures].[a] / [Measures].[b],
NULL
)'
SELECT
{[Organigram].[NameOfLevel].members} ON ROWS,
{[Measures].[Efficiency]} ON COLUMNS
FROM [CubeName]
一旦简单的查询工作,逐渐添加一点点就会变得更复杂。
您还可以使用.LevelName
和.LevelDepth
属性查看您所处的级别。这可能会使您的MDX更短,更易读,也可能不会。