解析字符串时在多维数据集中找不到成员

时间:2018-07-03 14:52:58

标签: mdx olap

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

数据库:

  • AverageSpeed
  • 平均时间
  • 平均距离

多维数据集:

  • 平均速度
  • 平均时间

我的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] )

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

  • 在多维数据集中找不到'[AverageDistance]'成员时, 字符串[Measures]。[AverageDistance]被解析。

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

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

有没有一种方法可以通过MDX查询来实现?

1 个答案:

答案 0 :(得分:1)

如果您只限于一个陈述,那么IsError可能是您可以实现的最佳选择。但是,如果可以运行另一条语句然后生成最终的MDX语句,则可以首先检查存在哪些度量,然后适当地生成MDX。

一个简单的声明可以看到所有措施

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