Ssas 通过Openquery进行的MDX查询未返回预期数据

Ssas 通过Openquery进行的MDX查询未返回预期数据,ssas,mdx,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 ({

需要一个更好的问题标题,但现在开始。我们从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结果上没有列“header”,但即使从openquery(…)执行一个简单的
SELECT*,
也不会返回任何数据。如何通过openquery调用返回这些数据?

这是当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]
);

这是将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]
);

OPENQUERY的另一个替代方案是:我们现在从未使用OPENQUERY,因为这个插件的简单性和性能要好得多,所以我不能高度推荐它。当我们升级到sql server 2016时,该项目也进行了更新,因此得到了支持。OPENQUERY的另一个替代方案是:我们现在从未使用OPENQUERY,因为该加载项的简单性和性能要好得多,我对它的推荐度太高了。当我们升级到sql server 2016时,该项目也已更新,因此受到支持。