如何在 mdx 中使用 avg 函数?

How to use avg function in mdx?

我有我的 mdx 查询:

SELECT 
  NON EMPTY 
    {[Measures].[Amount]} ON COLUMNS
 ,NON EMPTY 
    {[Dim Date].[Day Of Week].[Day Of Week].MEMBERS} ON ROWS
FROM 
(
  SELECT 
    [Dim Date].[Date Int].&[20140730] : [Dim Date].[Date Int].&[20150730] ON COLUMNS
  FROM [Cube]
  WHERE 
    [Dim Client].[Common Client UID].&[{some id}]
);

所以我有一个工作日的 dim,其中包含 1-7 的数字成员。查询找到每个工作日的 returns 金额,这是汇总的,但我想找出一个平均值,所以我需要以某种方式找出汇总了多少项目才能给我 [Measures].[Amount] 结果.我尝试过单独的成员函数,但没有用。

WITH MEMBER [Measures].[Avg] AS
    Avg(  
      ( [Dim Date].[Day Of Week].CURRENTMEMBER, [Measures].[Amount] )
   )

A​​vg return 完全相同的值。我如何在 mdx 中执行这样的请求?

这会给你一个平均 超过 1 个成员:

WITH MEMBER [Measures].[Avg] AS
    Avg(  
      ( [Dim Date].[Day Of Week].CURRENTMEMBER, [Measures].[Amount] )
   )

那是因为 CURRENTMEMBER 返回了 1 个成员。

如果您想要多个成员的平均值,则需要提供 set 作为 Avg 函数的第一个参数。这是一个例子:

WITH MEMBER [Measures].[Daily Avg] AS
    Avg(  
      Descedants(
         [Date].[Date - Calendar Month].CURRENTMEMBER
        ,[Date].[Date - Calendar Month].[Calendar Day]
    ,[Measures].[Amount] 
   )

尽管我怀疑类似以下内容的内容在您的上下文中应该有效:

WITH 
  MEMBER [Measures].[Avg] AS 
    Avg
    (
      (EXISTING 
        [Dim Date].[Date Int].MEMBERS)
     ,[Measures].[Amount]
    ) 
SELECT 
  NON EMPTY 
    {
      [Measures].[Amount]
     ,[Measures].[Avg]
    } ON COLUMNS
 ,NON EMPTY 
    {[Dim Date].[Day Of Week].[Day Of Week].MEMBERS} ON ROWS
FROM 
(
  SELECT 
    [Dim Date].[Date Int].&[20140730] : [Dim Date].[Date Int].&[20150730] ON COLUMNS
  FROM [Cube]
  WHERE 
    [Dim Client].[Common Client UID].&[{some id}]
);