MDX查询和计算的成员在同一查询中的两个不同的平均值

时间:2014-01-25 18:15:55

标签: mdx average

我这里有MDX/calculated个会员问题。我已经做了一段时间并且已经忘记了很多。我有一个具有以下尺寸和级别的立方体:

网站

  • 网站名称

客户

  • 客户名称
  • 行业名称

我有一个措施

  • 产品数量

我想在MDX查询中显示/返回的内容如下:

Site | Prod Count | Avg Prod Count Across All Sites for Current Client | Avg Prod Count

当前客户行业的所有网站

示例数据:

Site      | Prod Count   | Avg 1          | Avg 2

Site 1    | 100          | 50             | 200  
Site 2    | 125          | 50             | 200  
Site 3    | 112          | 50             | 200

我想弄清楚的是我是如何使用2个不同的计算成员来计算上述平均数。

挑战在于查询必须采用以下格式,因为我正在使用报告工具并且它正在生成MDX。

`SELECT
{
[Measures].[Product Count],
[Measures].[Calc Avg 1],
[Measures].[Calc Avg 2]
} ON COLUMNS,
{[Sites].[Site Name].[Site Name].Members} ON ROWS
FROM [Cube]
where ([Clients].[Client Name].&[Client A])`

所以基本上,我的问题是:
使用计算成员定义我正在寻找的平均值的正确方法是什么?

每当我尝试时,我只能计算当前客户的所有网站的平均产品数量,但我无法获得当前客户行业中所有网站的平均值。

1 个答案:

答案 0 :(得分:0)

这是一个使用冒险作品开始的例子。计算的成员将需要移植到MDX脚本以与您的工具一起使用。这是映射:

City =“客户网站” 州=“客户” 国家=“客户行业”

WITH
    MEMBER Measures.ClientCitiesCount AS
        Exists(
             [Customer].[City].[City] // represents client sites
            ,[Customer].[State-Province].CurrentMember // represents client
        ).Count
    MEMBER Measures.ClientCitiesSales AS
        SUM(
             [Customer].[State-Province].CurrentMember
            ,[Measures].[Internet Sales Amount]
        )
    MEMBER Measures.AvgAcrossClientCities AS
        ClientCitiesSales/ClientCitiesCount

    MEMBER Measures.IndustryCitiesCount AS
        Exists(
             [Customer].[City].[City] // represents industry sites
            ,Exists(  
                 [Customer].[Country].[Country] // represents client's industry
                ,[Customer].[State-Province].CurrentMember // represents client
            )
        ).Count

    MEMBER Measures.IndustryCitiesSales AS
        SUM(
             Exists(
                 [Customer].[Country].[Country]
                ,[Customer].[State-Province].CurrentMember
             )
             ,[Measures].[Internet Sales Amount]
        )
    MEMBER Measures.AvgAcrossIndustryCities AS
        IndustryCitiesSales/IndustryCitiesCount
SELECT
    {
         [Measures].[Internet Sales Amount]
        ,ClientCitiesCount
        ,ClientCitiesSales
        ,AvgAcrossClientCities
        ,IndustryCitiesCount
        ,IndustryCitiesSales
        ,AvgAcrossIndustryCities
    } ON 0,
    {
        [Customer].[City].[City] // represents client sites
    } ON 1
FROM
    [Adventure Works]
WHERE
    [Customer].[State-Province].&[GA]&[US] // represents client

不要忘记添加一些边缘案例处理(例如,IIF客户端在上下文中有0个“站点”)并考虑在EXISTS函数中使用“measuregroup”参数。