我们目前运行一个连接到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年修复的“错误”吗?或者是否有某些配置选项会影响返回的内容? (基本上我想避免对我们的前端做出改变以应对这种情况!)
感谢。
答案 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行的两件事。