2017-02-08 69 views
0

我的时间维度中有一个日期级别。MDX:随时间变化的行数

我要输出的天像下面的语句选定范围的总和/平均:

WITH 
    MEMBER measures.[sum1] AS 
    Sum([Measures].[Menge_Artikel_Stk]) 
    MEMBER measures.[sum2] AS 
    Sum 
    (
     [D_Datum].[Datum].[Tag] 
    ,[Measures].[Menge_Artikel_Stk] 
    ) 
SELECT 
    { 
    [Measures].[stock] 
    ,[Measures].[sum1] 
    ,[Measures].[sum2] 
    } ON 0 
,NON EMPTY 
    CrossJoin 
    (
     {[D_item].[itemno].[itemno].MEMBERS} 
    ,{ 
     [D_Date].[Date].[day].[30.01.2017] : [D_Date].[Date].[Day].[05.02.2017] 
     } 
    ) ON 1 
FROM [Cube]; 

我的目标是展示沿过滤的行日期维总和/平均。 enter image description here

而不是40/1653我想总和显示250的总和或35,7的平均值。 (1653显然是全天的总和)。我想将此计算的成员添加到Excel表单。因此时间范围设置是可变的。

回答

0

要获得总和/平均行虽然在特定范围内,你可以做这样的事情:

WITH 
    MEMBER measures.[sum1] AS 
    Sum([Measures].[Menge_Artikel_Stk]) 
    MEMBER measures.[sum2] AS 
    Sum 
    (
     [D_Datum].[Datum].[Tag] 
    ,[Measures].[Menge_Artikel_Stk] 
    ) 
    MEMBER [D_Date].[Date].[All].[DaySum] AS 
    Sum 
    (
     [D_Date].[Date].[day].[30.01.2017] : [D_Date].[Date].[Day].[05.02.2017] 
    ) 
    MEMBER [D_Date].[Date].[All].[DayAvg] AS 
    Avg 
    (
     [D_Date].[Date].[day].[30.01.2017] : [D_Date].[Date].[Day].[05.02.2017] 
    ) 
SELECT 
    { 
    [Measures].[stock] 
    ,[Measures].[sum1] 
    ,[Measures].[sum2] 
    } ON 0 
,NON EMPTY 
    CrossJoin 
    (
     {[D_item].[itemno].[itemno].MEMBERS} 
    ,{ 
     { 
      [D_Date].[Date].[day].[30.01.2017] : [D_Date].[Date].[Day].[05.02.2017] 
     } 
     ,[D_Date].[Date].[All].[DaySum] 
     ,[D_Date].[Date].[All].[DayAvg] 
     } 
    ) ON 1 
FROM [Cube]; 
+0

感谢这篇文章。我认为这是行不通的,因为间隔会被固定,因此通过改变Excel-Filter没有传递给结果? – rasenkantenstein

+0

@rasenkantenstein正确 - 使这种动态我不确定。虽然解决方法是为RollingSum和RollingAvg添加自定义度量,而不是您正在使用的方法。 – whytheq

0

可以使用轴的功能来定义您轴电流设定:

WITH 
MEMBER measures.[sum] AS 
Sum(
    Axis(1), 
    [Measures].[Menge_Artikel_Stk] 
) 
MEMBER measures.[avg] AS 
AVG(
    Axis(1), 
    [Measures].[Menge_Artikel_Stk] 
) 

SELECT 
    {[Measures].[Menge_Artikel_Stk],[Measures].[sum],[Measures].[avg]} ON 0, 
    NON EMPTY {[D_Date].[Date].[day].[30.01.2017]:[D_Date].[Date].[Day].[05.02.2017]} ON 1 
FROM [Cube];