Проблема в вашей расчетной мере. Вы используете .CurrentMember и ClosingPeriod без специальной ссылки на член, которая подразумевает вызов .CurrentMember. Если вы задали в предложении WHERE, элемент «Текущий» отсутствует - имеется несколько текущих элементов. Перезапись вашего MDX в нечто вроде следующего должно позволить ему работать с несколькими членами в предложении WHERE.
CREATE
MEMBER CURRENTCUBE.[MEASURES].Ultimo AS NULL;
SCOPE ([MEASURES].Ultimo);
SCOPE ([Time].[Year - Month - Date].[All]);
this = IIF
(
(NOT
[Measures].[LagerStk] = 0)
,Sum
(
NULL:Tail(Existing [Time].[Year - Week - Date].[Date],1).item(0).item(0)
,[Measures].[LagerStk]
)
,NULL
);
END SCOPE;
SCOPE ([Time].[Year - Week - Date].[All]);
this = IIF
(
(NOT
[Measures].[LagerStk] = 0)
,Sum
(
NULL:Tail(Existing [Time].[Year - Month - Date].[Date],1).Item(0).Item(0)
,[Measures].[LagerStk]
)
,NULL
)
);
END SCOPE;
END SCOPE;
Я использую SCOPE для всех членов двух измерений, это должно быть быстрым, как выход из IIF, а также избегать одной ссылки на .CurrentMember. Затем я заменил вызов ClosingPeriod () на Tail (Существующий [Время]. [Год - Неделя - Дата]. [Дата], 1) .item (0) .item (0) что это делает, чтобы получить набор элементов даты, которые существуют в текущем контексте, то вызов Tail () затем получает последний из них как один набор элементов, а вызовы .Item (0) .Item (0) получить первого члена из первого набора этого набора.
Очевидно, что, не имея доступа к вашему кубу, я не могу ничего проверить. Проблема, о которой вы сообщили в своем комментарии, может быть связана с неверной ссылкой на всех участников (у меня может быть другой формат именования, чем в вашем кубе), или это может быть связано с оператором IIF (). Я не уверен, что проверка на 0 выполняется в правильном контексте
Вы можете попробовать тестировать без ИИФ ()
CREATE
ЧЛЕН CURRENTCUBE. [МЕРЫ] .Ultimo AS NULL;
ОБЛАСТЬ ПРИМЕНЕНИЯ ([ИЗМЕРЕНИЯ]. Ультимо);
ОБЛАСТЬ ПРИМЕНЕНИЯ ([Время]. [Год - Месяц - Дата]. [Все]);
это = сумма
(
NULL: Хвост (Существующий [Время]. [Год - Неделя - Дата]. [Дата], 1) .item (0) .item (0)
, [Меры]. [LagerStk]
);
КОНЕЦ ОБЛАСТИ;
SCOPE ([Time].[Year - Week - Date].[All]);
this = Sum
(
NULL:Tail(Existing [Time].[Year - Month - Date].[Date],1).Item(0).Item(0)
,[Measures].[LagerStk]
);
END SCOPE;
КОНЕЦ ОБЛАСТИ;