用户尝试检查每个销售人员的销售额。样本数据:
Salesperson Sales Amount
001 1000
002 500
003 750
Grand Total: 2250
它看起来很好,但我们在多维数据集中有以下层次结构Company > Class > Group > Subgroup
,如果用户尝试在过滤器中使用此层次结构 - Grand Total失败(如果在此层次结构中未选中任何属性)。样品:
Salesperson Sales Amount
001 1000
002 500
003 750
Grand Total: 350
在我们尝试过滤Date属性之前,我注意到了同样的问题,如果不是每个月的每一天都被选中,那么它也显示错误的总计。
你知道它为什么会发生以及如何解决它吗?
销售额是物理量度(不是计算量度),它是从SQL视图中选择的(每个事实都是如此)。
我问了同样的问题here,但没人能回答。
我试图删除所有MDX计算(范围),但仍然是Grand Total不正确。
编辑
我注意到像这样过滤时会出现问题:
从层次结构的第一级中选择1个元素,从第2级中选择1个元素,从第3级层次结构中选择1个元素,如上图所示。
如果未过滤第3级,则显示良好的总计。
编辑2
我试图跟踪SSAS,它返回与Excel中完全相同的输出。在行上使用Salesperson维度时,它生成了以下MDX:
SELECT NON EMPTY { [Measures].[Sales Amount] } ON COLUMNS,
NON EMPTY { ([Salesperson].[Salesperson].[Salesperson].ALLMEMBERS ) }
DIMENSION PROPERTIES MEMBER_CAPTION,
MEMBER_UNIQUE_NAME ON ROWS FROM (
SELECT ( { [Item].[Class - Group - Subgroup].[Class].&[XXX]&[1.],
[Item].[Class - Group - Subgroup].[Group].&[XXX]&[2.]&[2.2.],
[Item].[Class - Group - Subgroup].[Subgroup].&[XXX]&[2.]&[2.3.]&[2.3.1.] }
) ON COLUMNS FROM ( SELECT ( { [Company].[Company].&[XXX] } ) ON COLUMNS
FROM [Sales]))
WHERE ( [Company].[Company].&[XXX], [Item].[Class - Group - Subgroup].CurrentMember ) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS
此MDX在没有Salesperson维度的情况下生成:
SELECT NON EMPTY { [Measures].[Sales Amount] } ON COLUMNS
FROM ( SELECT ( { [Item].[Class - Group - Subgroup].[Class].&[XXX]&[1.],
[Item].[Class - Group - Subgroup].[Group].&[XXX]&[2.]&[2.2.],
[Item].[Class - Group - Subgroup].[Subgroup].&[XXX]&[2.]&[2.3.]&[2.3.1.] } ) ON COLUMNS
FROM ( SELECT ( { [Company].[Company].&[XXX] } ) ON COLUMNS
FROM [Sales])) WHERE ( [Company].[Company].&[XXX], [Item].[Class - Group - Subgroup].CurrentMember ) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS
我注意到即使我没有在行上使用任何维度(在上面的示例中我使用了Salesperson维度)它显示错误的总计。
例如,它显示:
Sales Amount
350
在行上使用Salesperson维度时:
Salesperson Sales Amount
001 1000
002 500
003 750
Grand Total: 350
我怀疑你在销售额上设置了一个不寻常的聚合函数,例如ByAccount,AverageOfChildren。应该使用Sum。检查“销售额”度量的属性。
我想对另一个角度采取另一个角度,并建议不是SQL / SSAS,这是问题,而是Excel。在带有小计和总计的数据透视表中,总计不是由多维数据集计算的,而是由客户端应用程序计算的。我已经经历了几次,发现这是Excel的一个已知问题。解决方案通常涉及在Excel中创建新的计算字段以提供总计。这是令人沮丧的,特别是如果Excel是访问多维数据集的其他用户的首选客户端应用程序。如果有任何安慰,我在Tableau等其他工具中也经历了一两次,但由于不同的解决方案原因略有不同。
以下是Microsoft KB确认问题的链接。影响版本2003-2019 !!!