2013-07-18 3 views
1

Ниже приведена ошибка или ошибка просто возвращает пустой набор результатов.Применение MEMBER_CAPTION к возвращаемому значению ClosingPeriod

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

Почему это возвращение пустой?
Как мне изменить его, чтобы он вернулся вчера?

WITH MEMBER [Date].[Date - Calendar Month].[member_caption] AS 
    ClosingPeriod(
     [Date].[Date - Calendar Month].[Calendar Day] 
     ).MEMBER_CAPTION 
SELECT 
    NON EMPTY 
     [Date].[Date - Calendar Month].[member_caption] 
    ON COLUMNS 
FROM [OurCube] 

EDIT

документация MSDN для функции ClosingPeriod is here и заявляет:

• Если задано выражение уровня, функция ClosingPeriod использует в размер, который содержит указанный уровень и возвращает последний родной брат среди потомков члена по умолчанию на указанном уровне .

• Если указаны как выражение уровня, так и выражение члена, функция функция ClosingPeriod возвращает последний родственник среди потомков указанного элемента на указанном уровне.

ответ

2

Я думаю, это связано с тем, что член по умолчанию [Дата]. [Дата - Календарь Месяц] не находится на уровне [Календарного дня]; так что это эквивалентно:

ClosingPeriod([Date].[Date - Calendar Month].[Calendar Day], null) 

По-видимому, null не имеет потомков, а ClosingPeriod ничего не возвращает. Возможно, вы хотите что-то вроде:

ClosingPeriod( 
    [Date].[Date - Calendar Month].[Calendar Day], 
    [Date].[Date - Calendar Month].defaultMember 
) 
+0

+1 спасибо Marc - всегда рад видеть, что вы вносите свой вклад в мои вопросы о MDX! «DefaultMember» иерархии - «[Все даты]», поэтому имеет смысл, что она не существует в [Календарный день]. Я добавлю немного больше информации в OP, так как моя голова слегка скручена в документации 'MSDN'! – whytheq

+0

... хотя первая точка в MSDN говорит, что функция ClosingPeriod использует измерение, которое содержит указанный уровень, и возвращает последний родной состав среди потомков члена по умолчанию на указанном уровне. «Кажется, что моя попытка работала? – whytheq

+0

Да, документ не очень ясен, но он говорит «член по умолчанию на указанном уровне», и если вы проверите пример, заданный MS, вы увидите, что используется иерархия, содержащая один уровень, что означает член по умолчанию для иерархии в указанный уровень. –

Смежные вопросы