我有一个事实表,每天记录员工的时间交易(每位员工每天多次交易)。我们每天还为每位员工制定每日目标。
我想要计算的是,每个工人每天是否达到了他们的每日目标(如果他们有= 1,如果他们没有&t = 0 = 0),那么每天是每周\每周\每月我们想要一定数量达到目标的工人。
因此,在我的SSAS多维数据集中,我使用以下逻辑创建了一个每天限定在一名工作人员的计算度量,当您在每天的工作人员级别查看时,该逻辑会正确显示。但是,我不确定如何处理日级别以总结该子范围。在下面的示例屏幕截图中(请点击图像链接,因为我目前无法嵌入图像)我希望日级别的值为2(如图所示),因为有2个人达到了当天的目标
我目前正在使用MDX进行一些陡峭的学习曲线,所以对于经验丰富的MDX来说,这有点简单:)
TIA
CALCULATE;
CREATE MEMBER CURRENTCUBE.[Measures].[TimesheetTargetMet] AS NULL
, ASSOCIATED_MEASURE_GROUP = 'Worker Targets';
SCOPE([Measures].[TimesheetTargetMet]);
SCOPE([Ledger Date].[Financial Date].[Financial Date].MEMBERS,[Worker].[Personnel Number].[Personnel Number].MEMBERS);
THIS = IIF([Measures].[Target Timesheet Hours] > 0 AND [Measures].[Hours] > [Measures].[Target Timesheet Hours], 1,0);
END SCOPE;
END SCOPE;
答案 0 :(得分:0)
如果用SUM函数换行有帮助吗?
SUM(
(
[Ledger Date].[Financial Date].currentmember
,[Worker].[Personnel Number].currentmember
)
,IIF(
[Measures].[Target Timesheet Hours] > 0
AND
[Measures].[Hours] > [Measures].[Target Timesheet Hours]
,1
,NULL
)
)
答案 1 :(得分:0)
您的代码的问题是多维数据集脚本中定义的计算度量为NULL,因为它没有聚合。
要解决尝试在数据源视图的事实表中添加新的命名计算,并使用以下表达式:NULL
在您的多维数据集结构中,将命名计算列添加为事实的实际度量,并选择为聚合方法SUM。
SCOPE([Measures].[Your Measure]);
SCOPE([Ledger Date].[Financial Date].[Financial Date].MEMBERS);
SCOPE([Worker].[Personnel Number].[Personnel Number].MEMBERS);
THIS = IIF([Measures].[Target Timesheet Hours] > 0 AND [Measures].[Hours] > [Measures].[Target Timesheet Hours], 1,0);
END SCOPE;
END SCOPE;
END SCOPE;
答案 2 :(得分:0)
我的第一个猜测是:
CALCULATE;
CREATE MEMBER CURRENTCUBE.[Measures].[TimesheetTargetMet] AS
SUM(
NonEmpty(
existing [Ledger Date].[Financial Date].[Financial Date].Members * [Worker].[Personnel Number].[Personnel Number].Members,
[Measures].[Target Timesheet Hours]
),
IIF(
[Measures].[Hours] > [Measures].[Target Timesheet Hours],
1,
NULL
)
), ASSOCIATED_MEASURE_GROUP = 'Worker Targets';
但是,通过选择钻取它似乎工作缓慢。