Элемент не был найден в кубе при разборе строки - PullRequest
0 голосов
/ 03 июля 2018

Я работаю в приложении, где у меня есть таблица базы данных со значениями элементов, но, возможно, в базе данных нет таких элементов, как в кубе. Например:

БАЗА ДАННЫХ:

  • Средняя скорость
  • Среднее время
  • AverageDistance

CUBE:

  • 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] не был найден в кубе, когда была проанализирована строка [Показатели]. [Среднее расстояние].

Я хочу вернуть ноль, если член не существует.

Я знаю, что могу использовать ISERROR (), но я просто хочу получить нулевое значение, если элемент не существует , если есть другая ошибка, я должен показать ее пользователю.

Есть ли способ добиться этого с помощью запроса MDX?

1 Ответ

0 голосов
/ 11 июля 2018

Если вы ограничены одним утверждением, то IsError, вероятно, лучшее, что вы можете достичь. Однако, если вы можете запустить другой оператор и затем сгенерировать ваш окончательный оператор MDX, вы можете сначала проверить, какие меры существуют, а затем сгенерировать ваш MDX соответствующим образом.

Простое утверждение, чтобы увидеть все меры было бы

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