我这里有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])`
所以基本上,我的问题是:
使用计算成员定义我正在寻找的平均值的正确方法是什么?
每当我尝试时,我只能计算当前客户的所有网站的平均产品数量,但我无法获得当前客户行业中所有网站的平均值。
答案 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”参数。