Analysis Server 2000和2008中的NON EMPTY行为不同

时间:2011-02-23 12:18:50

标签: mdx olap ssas

我们目前运行一个连接到SQL分析服务器的前端Manager信息工具,以提供灵活的报告。本质上,前端会构建一些MDX,然后在Analysis Services上执行,并将结果作为表格进行美化。

我们目前正在从SQL 2000升级到SQL 2008,并且在MDX中使用NON EMPTY时遇到了不同。

这是有问题的MDX查询

SELECT NON EMPTY {[Measures].allMembers} ON ROWS, NON EMPTY {} ON COLUMNS FROM Sales

在Analysis Server 2000上运行时,它会返回行的Measure成员名称列表,但在Analysis Server 2008中运行时,不会返回任何内容。

看看MDX我认为2008正在按预期工作,而2000是错误的,但它有点打破了我们的前端,因为在运行此MDX的情况下它没有显示任何内容(用户预计会在你看到之后拖动某些列,但没有任何显示,他们不能这样做。)

那么,是否存在差异的原因。这是2000年修复的“错误”吗?或者是否有某些配置选项会影响返回的内容? (基本上我想避免对我们的前端做出改变以应对这种情况!)

感谢。

1 个答案:

答案 0 :(得分:0)

自从我使用SSAS 2000之后已经足够长了,感觉就像昨天一样。我不记得看到像这样的突破性变化。但是,如果目的是仅为成员发出查询,那么列上的NON EMPTY会感到虚假。 (这完全有效,我发现UI比使用元数据对象更强大。)

NON EMPTY受隐式切片器的影响,您的多维数据集结构可能已在某处更改。如果所有非度量维度中的顶级/默认成员都为您提供了所有NULL单元格值,那么您将删除这些度量。

假设您运行与

相同的查询
SELECT NON EMPTY {[Measures].allMembers} ON  COLUMNS FROM Sales

SELECT  {[Measures].allMembers} ON COLUMNS FROM Sales

在SQL Server管理控制台中。你有价值吗?

如果这样做,请尝试在与用户完全相同的环境中运行它们(例如,应用程序的调试版本)。安全过滤器和默认成员设置是可以导致正确过滤NULL行的两件事。

相关问题