【发布时间】: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