层次结构子集总百分比的MDX
我有一些关于mdx的基本问题。我需要计算层次结构中总百分比,当我想要一个不包含完整层次结构的结果集时,我遇到了问题 我有一个相当基本的维度,看起来像层次结构子集总百分比的MDX,mdx,Mdx,我有一些关于mdx的基本问题。我需要计算层次结构中总百分比,当我想要一个不包含完整层次结构的结果集时,我遇到了问题 我有一个相当基本的维度,看起来像 Groups Group A Item 1 Item 2 Item 3 Group B Item 4 Item 5 Group C Item 6 Item 7 Item 8 我使用的是我在阅读资料
Groups
Group A
Item 1
Item 2
Item 3
Group B
Item 4
Item 5
Group C
Item 6
Item 7
Item 8
我使用的是我在阅读资料中发现的一种计算方法,如果我看的是完整的层次结构,这种方法很有效,但是当我想看一个子集时,它会崩溃
比如说,
WITH MEMBER [Measures].[Percent] AS iif([Measures].[Result Count] = 0,
NULL,
IIF(isempty( ([Measures].[Result Count], Axis(1)(0)( Axis(1)(0).Count - 1).Dimension.CurrentMember.Parent )),1,
[Measures].[Result Count] / ( [Measures].[Result Count], Axis(1)(0)( Axis(1)(0).Count - 1 ).Dimension.CurrentMember.Parent ))), FORMAT_STRING ="#,##0.00 %;-#,##0.00 %"
SELECT
{ [Measures].[Result Count],[Measures].[Percent] } ON COLUMNS,
{ [Groups].[Group Participation]} ON ROWS
FROM [Cube]
我得到以下信息:
Result Count Percent
Group A 1541 11.92 %
Group B 2300 17.79 %
Group C 9086 70.29 %
Result Count Percent
Group B 2300 17.79 %
Group C 9086 70.29 %
Result Count Percent
Item 4 103 4.48 %
Item 5 12 0.52 %
Item 6 455 19.78 %
这很有效。但是,如果我只想要B组和C组:
WITH MEMBER [Measures].[Percent] AS iif([Measures].[Result Count] = 0,
NULL,
IIF(isempty( ([Measures].[Result Count], Axis(1)(0)( Axis(1)(0).Count - 1 ).Dimension.CurrentMember.Parent )),1,
[Measures].[Result Count] / ( [Measures].[Result Count], Axis(1)(0)( Axis(1)(0).Count - 1 ).Dimension.CurrentMember.Parent ))), FORMAT_STRING ="#,##0.00 %;-#,##0.00 %"
SELECT
{ [Measures].[Result Count],[Measures].[Percent] } ON COLUMNS,
{ [Groups].[Group Participation].&[1],[Groups].[Group Participation].&[2]} ON ROWS
FROM [Cube]
我得到以下信息:
Result Count Percent
Group A 1541 11.92 %
Group B 2300 17.79 %
Group C 9086 70.29 %
Result Count Percent
Group B 2300 17.79 %
Group C 9086 70.29 %
Result Count Percent
Item 4 103 4.48 %
Item 5 12 0.52 %
Item 6 455 19.78 %
我想要
Result Count Percent
Group B 2300 20.20 %
Group C 9086 79.79 %
基本上,我需要百分之和加起来等于100
我还需要这个来处理叶节点。当我将状态更改为仅返回项目4、项目5、项目6时
WITH MEMBER [Measures].[Percent] AS iif([Measures].[Result Count] = 0,
NULL,
IIF(isempty( ([Measures].[Result Count], Axis(1)(0)( Axis(1)(0).Count - 1 ).Dimension.CurrentMember.Parent )),1,
[Measures].[Result Count] / ( [Measures].[Result Count], Axis(1)(0)( Axis(1)(0).Count - 1 ).Dimension.CurrentMember.Parent ))), FORMAT_STRING ="#,##0.00 %;-#,##0.00 %"
SELECT
{ [Measures].[Result Count],[Measures].[Percent] } ON COLUMNS,
{ [Groups].[Group].&[4],[Groups].[Group].&[5],[Groups].[Group].&[6]} ON ROWS
FROM [Cube]
我得到以下信息:
Result Count Percent
Group A 1541 11.92 %
Group B 2300 17.79 %
Group C 9086 70.29 %
Result Count Percent
Group B 2300 17.79 %
Group C 9086 70.29 %
Result Count Percent
Item 4 103 4.48 %
Item 5 12 0.52 %
Item 6 455 19.78 %
我想去
Result Count Percent
Item 4 103 18.07 %
Item 5 12 2.10 %
Item 6 455 79.82 %
我觉得我错过了一些非常基本的东西。我在计算的尺度上做错了什么
提前感谢。您不应再使用维度(父维度)的“自然”层次结构来获取合计,而应在计算成员中使用轴上的总和
WITH MEMBER [Measures].[Percent] AS [Measures].[Result Count] / Sum( Axis(1), [Measures].[Result Count]) , FORMAT_STRING = 'percent'
这应该得到你的“视觉”百分比 您不应再使用维度(父维度)的“自然”层次结构来获取合计,而应在计算成员中使用轴上的总和
WITH MEMBER [Measures].[Percent] AS [Measures].[Result Count] / Sum( Axis(1), [Measures].[Result Count]) , FORMAT_STRING = 'percent'
这应该得到你的“视觉”百分比 我通过在计算百分比成员中指定筛选视图的维度成员(叶节点),而不是使用
axis()
,解决了这个问题。在我正在开发的web应用程序中,MDX是动态生成的,因此很容易实现
在上面的示例中,这意味着对于叶节点(返回项目4、5和6的示例),它应该如下所示:
[Measures].[Result Count] / SUM( { [Groups].[Group].&[4],
[Groups].[Group].&[5],[Groups].[Group].&[6]}, [Measures].[Result Count] )
而不是:
[Measures].[Result Count] / ( [Measures].[Result Count],
Axis(1)(0)( Axis(1)(0).Count - 1 ).Dimension.CurrentMember.Parent )
我通过在计算的百分比成员中指定过滤视图的维度成员(叶节点),而不是使用
axis()
,解决了这个问题。在我正在开发的web应用程序中,MDX是动态生成的,因此很容易实现
在上面的示例中,这意味着对于叶节点(返回项目4、5和6的示例),它应该如下所示:
[Measures].[Result Count] / SUM( { [Groups].[Group].&[4],
[Groups].[Group].&[5],[Groups].[Group].&[6]}, [Measures].[Result Count] )
而不是:
[Measures].[Result Count] / ( [Measures].[Result Count],
Axis(1)(0)( Axis(1)(0).Count - 1 ).Dimension.CurrentMember.Parent )
公式不起作用,它返回的是总维度项的百分比,而不是筛选视图。公式不起作用,它返回的是总维度项的百分比,而不是筛选视图。