需要一个更好的问题标题,但这里有。我们从SQL Server(2012)调用的一组查询使用来自OLAP多维数据集的数据。我们通过OPENQUERY
电话提取此数据:
SELECT "[Time Period].[Month Full Code].[Month Full Code].[MEMBER_CAPTION]" AS timestring
FROM openquery([SSAS_cube],'
SELECT { } ON 0,
NONEMPTY ({
DESCENDANTS({[Time Period].[Month Full Code].[Month Full Code]})
}) ON 1
FROM [thecube]
WHERE (
[Geography].[Geo County Area].&[1204000057]
);
')
这不返回任何数据。但是,如果我们直接在SSAS服务器上运行MDX,我们会获得数据:
SELECT { } ON 0,
NONEMPTY ({
DESCENDANTS({[Time Period].[Month Full Code].[Month Full Code]})
}) ON 1
FROM [thecube]
WHERE (
[Geography].[Geo County Area].&[1204000057]
);
此结果集是一列可用时间,其中包含给定区域的数据(其他参数可选)。我认为问题是MDX结果上没有列“标题”,但即使做一个简单的SELECT * FROM openquery(...)
也不会返回任何数据。如何通过openquery调用返回此数据?
答案 0 :(得分:3)
这是将MDX查询结果展平为表以便通过链接服务器返回时发生的展平的功能。 SSMS在显示查询结果时使用CellSet对象而不是表,因此它更灵活。
请确保您在列上有某些内容,它应该可以通过链接服务器正常工作。
SELECT { [Measures].CurrentMember } ON 0,
NONEMPTY ({
DESCENDANTS({[Time Period].[Month Full Code].[Month Full Code]})
}) ON 1
FROM [thecube]
WHERE (
[Geography].[Geo County Area].&[1204000057]
);