MDX使用IIF和SUM

时间:2015-08-06 11:21:00

标签: filter mdx exists iif

在以下MDX代码中,我想获取上次指定成员的度量聚合(如示例01/06/2015),否则我不想要它们。<登记/> 我尝试过现存但没有任何运气 我相信我必须使用IIF函数 像:

IIF DAYTIME, MEASURE D NOT NULL THEN AGGREGATE....

(如果特定月份,度量D大于0,则SUM测量D为特定时间范围)

ELSE NULL.

(否则不在输出上打印)

然后过滤E.members SUM测量D >1 ON ROWS。

WITH 
  MEMBER A AS 
    b + C 
  MEMBER [Measures].[Aggregate] AS 
    Aggregate
    (
        DAYTIME.[Month].&[2013-01-01T00:00:00]
      : 
        [DAYTIME].[Month].&[2015-06-01T00:00:00]
     ,[Measures].[D]
    ) 
SELECT 
  [Measures].[Aggregate] ON 0
 ,Filter
  (
    Exists
    (
      [E].MEMBERS
     ,[DAYTIME].[Month].&[2015-06-01T00:00:00]
    )
   ,
    [Measures].[Aggregate] > 1
  ) ON 1
FROM [CUBE];

2 个答案:

答案 0 :(得分:0)

来自MSDN论坛的人提醒我使用NONEMPTY。所以首先我使用NONEMPTY 非空([E],([DAYTIME]。[月]。&amp; [2015-06-01T00:00:00],[措施]。[D])) 为了在2015-06-01返回所有对于measure.D具有非null值的E.成员 然后我用另一个措施过滤这个

我没有得到正确的数据,但我相信BI解决方案存在问题。

答案 1 :(得分:0)

尝试使用Sum而不是Aggregate。另外,由于[DAYTIME].[Month].&[2015-06-01T00:00:00]是度量[Measures].[Aggregate]的一部分,您可以删除Exists函数:

WITH 
  MEMBER [Measures].[Aggregate] AS 
    Sum
    (
        DAYTIME.[Month].&[2013-01-01T00:00:00]
      : 
        [DAYTIME].[Month].&[2015-06-01T00:00:00]
     ,[Measures].[D]
    ) 
SELECT 
  [Measures].[Aggregate] ON 0
 ,Filter
  (
    [E].MEMBERS
   ,[Measures].[Aggregate] > 1
  ) ON 1
FROM [CUBE];

注意:[Measures].[D]与这些成员[E].MEMBERS

相关非常重要