【问题标题】:In OLAP cube wrong Grand Total when attribute is filtered过滤属性时在 OLAP 多维数据集中错误总计
【发布时间】:2019-09-09 15:22:09
【问题描述】:

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

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,但没人能回答。

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

编辑

我注意到这样过滤时会出现问题:

从层次结构的第一级选择一个元素,从第二级选择一个元素,从第三级层次结构选择一个元素,如上图所示。

如果未过滤第 3 级,则显示良好的总计。

编辑 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 生成时没有 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

我注意到,即使我没有在行上使用任何维度(在上面的示例中我使用了销售人员维度),它也会显示错误的总计。

例如它显示:

Sales Amount 
350

当在行上使用销售人员维度时:

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

【问题讨论】:

  • 您是否尝试过将“总计”(.ShowDetail) 的详细信息与Rows 进行比较来调试差异。这应该可以让您了解差异在哪里,从而增加您确定问题原因的机会。
  • @EEM 谢谢你的建议,但我不能那样调试。 ShowDetails 可以在过滤器列表中仅选择 1 个属性时使用。检查以下错误:i.ibb.co/QjRMgrT/Error.png 在过滤器中仅选择 1 个元素时,它显示正确的总计。当我检查层次结构(2-3 级)中的一些(但不是全部)元素时它失败了,示例:i.ibb.co/vDNCRZq/Sample-Of-Selection.png 所以这个调试不能解决这个问题。
  • 能否在 SSAS 上开始跟踪,捕获实际执行的 MDX 并使用 Management Studio 运行此 MDX?
  • 是否为此维度启用了行级安全性?
  • 我不知道。我有 Visual Studio(以前的 MSDN)订阅,其中包括一些票证,然后我们有企业协议。检查您的组织中是否有人拥有它。 docs.microsoft.com/en-us/visualstudio/subscriptions/…

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


【解决方案1】:

我怀疑您在销售额上设置了不寻常的聚合函数,例如ByAccount,AverageOfChildren。它可能应该使用 Sum。检查销售额度量的属性。

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

【讨论】:

  • 感谢您的回答,但已经是Sum。有截图:i.ibb.co/XV8BJvN/Sum.png
  • 您能否发布 Cube 的 Dimension Usage 选项卡(来自 Visual Studio)?希望里面有一些东西(例如多对多关系)。
  • 我看到了 M2M 与 Freezer 维度的关系。有没有涉及?如果是这样,则 SSAS 正在“按设计”工作,并且您有许多与单个销售事实行相关的 Freezer 成员。
  • 在这种情况下,我没有想法。它看起来像 M2M 关系的效果,但根据您的描述,没有涉及。祝你好运!
【解决方案2】:

我想从另一个角度来看这个问题,并建议这里的问题不是 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

【讨论】:

  • 感谢您的回答,但看起来我遇到的问题与您提供的链接中列出的问题不同。这是物理测量(不是计算字段),聚合函数设置为求和并且没有乘法,可能是 Excel 的错误,但看起来与此不同。
  • Excel 的已知问题是它不能为物理测量提供正确的总计。我的回答是解决方案(不是问题)是在 Excel 中创建一个计算字段。我知道很难相信这是一个持续存在且范围广泛的 Excel 错误,但遗憾的是! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
  • 2017-03-29
  • 1970-01-01
  • 1970-01-01
  • 2016-07-02
  • 1970-01-01
相关资源
最近更新 更多