MDX 你如何 return 几个月的平均值

MDX how do you return the Average over a number of months

我一直在查看 AVG(MDX) 并希望能够获得几个月的平均值。

将其用作简单的 MDX:

    SELECT NON EMPTY 
    {[Measures].[Freight]} ON COLUMNS
 ,NON EMPTY 
    {[Due Date].[Calendar Month].[Calendar Month].MEMBERS} ON ROWS
FROM [Adventure Works Cube];

会return:

是否可以return:

    Freight
August  108567.2463
February    208635.5203
July    103180.7446
March   209712.7297
November    103873.3682
Avg Freight 146793.9218

我试过:

WITH MEMBER [Measures].[Average Freight] AS
    AVG([Due Date].[Calendar Month].[All], 
        [Measure].[Sale])
SELECT NON EMPTY 
    {[Measures].[Freight],
    [Measures].[Average Freight]} ON COLUMNS
 ,NON EMPTY 
    {[Due Date].[Calendar Month].[Calendar Month].MEMBERS} ON ROWS
FROM [Adventure Works Cube];

只是 returns:

下面是 Adventure Works 的测试示例。 msdn Avg (MDX) link

 WITH  MEMBER [Measures].[Average Freight] AS
 AVG ([Measures].[Freight Cost]
)
SELECT
   [Measures].[Average Freight] ON COLUMNS,
  NON EMPTY   [Date].[Calendar].[Month].Members ON ROWS
FROM
   [Adventure Works];

结果

          Average Freight
July 2005       24067.9287
August 2005     51115.0148999999
September 2005  40996.0152
October 2005    33951.2746
....

如果你这样做,你不会得到平均值:

WITH 
  MEMBER [Measures].[Average Freight] AS 
    Avg([Measures].[Freight Cost]) 
SELECT 
  {
    [Measures].[Average Freight]
   ,[Measures].[Freight Cost]
  } ON COLUMNS
 ,NON EMPTY 
    [Date].[Calendar].[Month].MEMBERS ON ROWS
FROM [Adventure Works];

平均值与实测刚好相同:

要计算平均值,您需要一个 SET 来计算平均值:

WITH 
  MEMBER [Measures].[Average Freight] AS 
    Avg
    (
      [Date].[Calendar].CurrentMember.Children
     ,[Measures].[Freight Cost]
    ) 
SELECT 
  {
    [Measures].[Average Freight]
   ,[Measures].[Freight Cost]
  } ON COLUMNS
 ,NON EMPTY 
    [Date].[Calendar].[Month].MEMBERS ON ROWS
FROM [Adventure Works];

所以平均测量值现在有意义: