【问题标题】:How to use avg function in mdx?如何在 mdx 中使用 avg 函数?
【发布时间】:2015-08-07 13:01:20
【问题描述】:

我有我的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}]
);

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

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

平均返回完全相同的值。我如何在 mdx 中执行这样的请求?

【问题讨论】:

  • average 是一个数字,对于一列来说它是唯一的。

标签: sql mdx business-intelligence


【解决方案1】:

这将使您平均超过 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}]
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-30
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多