通过Openquery进行MDX查询不会返回预期数据

时间:2016-11-11 20:07:29

标签: ssas mdx

需要一个更好的问题标题,但这里有。我们从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调用返回此数据?

1 个答案:

答案 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]
);