用户尝试检查每个销售人员的销售额。样本数据:
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
当我们尝试过滤日期属性时,我之前注意到了同样的问题,如果没有选择该月的每一天,它也会显示错误的总计。
您知道为什么会发生这种情况以及如何解决它吗?
销售额是物理度量(不是计算度量),它是从 SQL 视图中选择的(每个事实都会发生同样的情况)。
我也问过同样的问题here https://social.msdn.microsoft.com/Forums/sqlserver/en-US/2761cc7c-eccb-4bca-8836-e655a22a53ab/wrong-grand-total-when-attribute-is-filtered?forum=sqlanalysisservices,但没有人能够回答。
我尝试删除所有 MDX 计算(范围),但总计仍然不正确。
EDIT
我注意到这样过滤时会出现问题:
从层次结构的第一级选择 1 个元素,从第二级选择 1 个元素,从层次结构的第三级选择 1 个元素,如上图所示。
如果未过滤第三级,则会显示良好的总计。
EDIT 2
我尝试在 SSAS 上进行跟踪,它返回与 Excel 中完全相同的输出。在行上使用销售人员维度时,它生成以下 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 没有销售人员维度:
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
我注意到,即使我没有在行上使用任何维度(在上面的示例中我使用了销售人员维度),它也会显示错误的总计。
例如它显示:
Sales Amount
350
当在行上使用销售人员维度时:
Salesperson Sales Amount
001 1000
002 500
003 750
Grand Total: 350