MDX:随时间推移得出行数范围

时间:2017-02-08 08:53:51

标签: sum mdx average rows

我的时间维度有一天的水平。

我想输出所选天数的总和/平均值,如下面的语句所示:

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工作表。因此,时间范围设置是可变的。

2 个答案:

答案 0 :(得分:0)

要获取特定范围内的sum / avg行,您可以执行以下操作:

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];

答案 1 :(得分: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];