MDX不同每日\每周聚合

时间:2017-01-04 12:28:33

标签: ssas aggregate mdx

我有一个事实表,每天记录员工的时间交易(每位员工每天多次交易)。我们每天还为每位员工制定每日目标。

我想要计算的是,每个工人每天是否达到了他们的每日目标(如果他们有= 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;

Timesheet Target Met

3 个答案:

答案 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';

但是,通过选择钻取它似乎工作缓慢。