Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server TSQL+;使用OPENQUERY()的MDX-列名不存在_Sql Server_Tsql_Ssas_Mdx - Fatal编程技术网

Sql server TSQL+;使用OPENQUERY()的MDX-列名不存在

Sql server TSQL+;使用OPENQUERY()的MDX-列名不存在,sql-server,tsql,ssas,mdx,Sql Server,Tsql,Ssas,Mdx,我有一个针对OPENQUERY()的视图,它从SSAS多维数据集获取数据。 MDX查询如下所示: WITH MEMBER [Measures].[Measure1] AS (--calculation) SELECT {[Measures].[Measure1]} ON 0, NON EMPTY ([Dim1].[Dim_key].[Dim_key], [Dim2].[Dim_key].[Dim_key]) ON 1 FROM [Cube] WHERE ([Dim3

我有一个针对OPENQUERY()的视图,它从SSAS多维数据集获取数据。 MDX查询如下所示:

WITH MEMBER [Measures].[Measure1] AS 
      (--calculation)
SELECT
    {[Measures].[Measure1]}
ON 0,
    NON EMPTY ([Dim1].[Dim_key].[Dim_key], [Dim2].[Dim_key].[Dim_key])
ON 1
FROM [Cube]
WHERE ([Dim3].[Hierarchy].[Level].[Member])
我的问题是,当WHERE筛选结果为0行时,视图不工作,出现错误:

Invalid column name '[Dim1].[Dim_key].[Dim_key].[MEMBER_CAPTION]'.
因为它使用列名作为分组依据

如何强制它返回至少一行?还是总是返回列名? 我无法删除非空的,因为整个集合需要大约1分钟才能加载

到目前为止,我已经尝试了以下解决方案:


但它似乎不起作用,因为我在另一个维度上有一个where条件。

设法找到了它。添加了此度量值,它实际上复制了行中返回的Dim1成员:

WITH MEMBER [Measures].[Measure1] AS 
        (--calculation)
     MEMBER [Measures].[Dim_Key] AS
        [Dim1].[Dim_key].CurrentMember.Member_Key
SELECT
    {[Measures].[Measure1]
     ,[Measures].[Dim_Key]}
ON 0,
    NON EMPTY ([Dim1].[Dim_key].[Dim_key], [Dim2].[Dim_key].[Dim_key])
ON 1
FROM [Cube]
WHERE ([Dim3].[Hierarchy].[Level].[Member])
因此,即使没有行,我也会将新度量值作为列之一返回。如果有行,我会得到两个额外的列(有行标记),但我只是不在视图中使用它们