当我在存储多维数据集本身的分析服务器上执行相同的MDX查询时,通过来自sql server的openrowset函数调用,我的输出结果明显不同。
--MDX query--
@sql = '--MDX query--'
exec(N'select * from openrowset
(''MSOLAP''
, ''Data Source= ANALYTIC SERVER; Catalog= CATALOG;''
,''' + @sql + ''');'
有没有办法在SQL端获得与直接查询分析服务器时相同的输出?
我正在做与this question类似的事情,其解决方案建议使用openquery和/或openrowset。
使用openrowset和分层MDX查询时,其他问题已经注意到了这个问题。
答案 0 :(得分:1)
我认为部分问题来自于在MDX中使用分层调用,这会导致使用openrowset时返回的值不同。
根据OLAPextensions add on的建议,我发现使用similar question的解决方案非常简单。与为openquery设置链接服务器相比,此解决方案更快更容易在本地服务器上运行。它返回的表与分析服务器中的表完全相同。
DECLARE @Server NVARCHAR(30) = 'ANALYTIC SERVER'
DECLARE @Database NVARCHAR(50) = 'CATALOG';
DECLARE @MDX NVARCHAR(MAX) = '--MDX query--'
EXEC ExecuteOLAP @Server, @Database, @MDX;
答案 1 :(得分:0)
只需选择相同的输出......
@sql = '--MDX query--'
exec(N'select "[Blah].[Blah 3].[Blah 3].[Table Code Level 2]" from openrowset
(''MSOLAP''
, ''Data Source= ANALYTIC SERVER; Catalog= CATALOG;''
,''' + @sql + ''');'