在OLAP多维数据集中,筛选属性时错误的总计总数

时间:2019-04-19 10:27:50

标签: sql-server excel sql-server-2008-r2 pivot-table ssas

试图检查每个销售员的销售额的用户。样本数据:

Salesperson   Sales Amount    
001                   1000    
002                    500    
003                    750
Grand Total:          2250

看起来不错,但是多维数据集中具有以下层次结构Company > Class > Group > Subgroup,并且如果用户尝试在过滤器中使用此层次结构-总计总计会失败(如果未在此层次结构中选中任何属性)。样本:

Salesperson   Sales Amount    
001                   1000    
002                    500    
003                    750    
Grand Total:           350

在我们尝试过滤Date属性之前,我已经注意到了相同的问题,如果不是每月中的每一天都被选择,那么它也会显示错误的总计。

您知道它为什么会发生以及如何解决吗?

销售额是物理度量(不是计算得出的度量),是从SQL视图中选择的(每个事实都相同)。

Wrong Grand Total

我问了同样的问题here,但没人能回答。

我尝试删除所有MDX计算(范围),但总计总计仍然不正确。

Clean MDX Calculations

Wrong Grand Total

编辑

我注意到在进行这样的过滤时会出现问题:

Hierarchy filter

如上图所示,从层次结构的第一级中选择1个元素,从层次结构的第二级中选择1个元素,从层次结构的第三级中选择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

2 个答案:

答案 0 :(得分:0)

我怀疑您在销售金额上设置了异常的汇总功能,例如ByAccount,AverageOfChildren。它可能应该使用Sum。检查“销售额”度量的属性。

https://docs.microsoft.com/en-us/sql/analysis-services/multidimensional-models/use-aggregate-functions?view=sql-server-2017

答案 1 :(得分:0)

我想换一个角度,建议不是问题所在的是SQL / SSAS,而是Excel。在具有小计和总计的数据透视表中,总计不是由多维数据集计算,而是由客户端应用程序计算。我已经经历了几次,发现这是Excel的已知问题。该解决方案通常涉及在Excel中创建一个新的计算字段以提供总计。特别是在Excel是其他用户访问多维数据集的首选客户端应用程序的情况下,这尤其令人沮丧。如果可以安慰的话,我在Tableau等其他工具中也经历过一两次,但是出于不同的原因使用不同的解决方案。

此处是指向Microsoft KB的链接,用于确认该问题。影响版本2003-2019 !!!

https://support.microsoft.com/en-us/help/211470/calculated-field-returns-incorrect-grand-total-in-excel