首页 > 解决方案 > 解析字符串时未在多维数据集中找到成员

问题描述

我正在一个应用程序中工作,其中我有一个包含成员值的数据库表,但可能是数据库中的成员与多维数据集中的成员不同。例如:

数据库:

立方体:

我的 MDX 是这样的:

WITH   MEMBER [IDENTIFIER] AS [Measures].[AverageDistance]
MEMBER [DateYear] AS 
'ANCESTOR( [DimDate].[All DimDate].CurrentMember,[DimDate].[All DimDate].CurrentMember.Level.Ordinal -1).Member_Key'
MEMBER [DateMonth] AS 
'ANCESTOR( [DimDate].[All DimDate].CurrentMember,[DimDate].[All DimDate].CurrentMember.Level.Ordinal -2).Member_Key'
MEMBER [DateDay] AS 
'ANCESTOR( [DimDate].[All DimDate].CurrentMember,[DimDate].[All DimFecha].CurrentMember.Level.Ordinal -3).Member_Key' 
SET [COLUMNS] as ' {[DateYear],[DateMonth],[DateDay],[DateDay]} '         
SET [IDENTIFIERS] as ' {[IDENTIFIER]} '                  
SELECT { [DimDate].[All DimDate].[All] } ON ROWS,                
{ [COLUMNS] + [IDENTIFIERS] } ON COLUMNS  
FROM ( select {[DimDate].[All DimDate].[Day].&[20100401]:[DimDate].[All DimDate].[Day].&[20180628] }      
on 0 from  [CUBE])         
WHERE ( [DimPlace].[Place].&[000001] )

当我执行查询时,它给了我下一个错误:

如果成员不存在,我想返回 null。

我知道我可以使用 ISERROR(),但如果成员不存在,我只想要 null 值,如果有其他错误,我必须将其显示给用户。

有没有办法从 MDX 查询中实现这一点?

标签: mdxolap

解决方案


如果您仅限于一种陈述,那么IsError可能是您可以达到的最佳效果。但是,如果您可以运行另一个语句然后生成最终的 MDX 语句,那么您可以首先检查存在哪些度量,然后适当地生成您的 MDX。

查看所有措施的简单声明是

SELECT {} on COLUMNS,
       Measures.AllMembers on ROWS
FROM [CUBE]

推荐阅读