Как просмотреть значения первого и / или последнего элемента в иерархии

Есть ли способ просмотреть значение первого и / или последнего листа на уровне иерархии?

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

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

Чтобы помочь мне выполнить то, что я хочу, я включил в свое измерение член [Date In Past], который содержит 0, если дата в прошлом, и a, если нет.

Например, этот запрос, который возвращает вычисления по дате:

with member [Measures].[Year To Date] as
            Sum(
                 { IIF(strtovalue(
                        [Time Order Date].[Date In Past].Currentmember.membervalue
                                    ) = 0, null, [Measures].[Product Rev (with ship, no disc)]
                        ) } *
                   PeriodsToDate(
                                [Time Order Date].[Fiscal Date].[Fiscal Year Name],
                                [Time Order Date].[Fiscal Date].CurrentMember
                                 ) 
                )
select
{[Measures].[Product Rev (with ship, no disc)],
[Measures].[Year To Date]} on 0,
[Time Order Date].[Date].Children on 1
from [Sales Analysis]

возвращает значения NULL в мере [Year to Date] для всех дат в будущем.

Этот запрос, который возвращает расчеты по неделям:

with member [Measures].[Year To Date] as
            Sum(
                 { IIF(strtovalue(
                        [Time Order Date].[Date In Past].Currentmember.membervalue
                                    ) = 0, null, [Measures].[Product Rev (with ship, no disc)]
                        ) } *
                   PeriodsToDate(
                                [Time Order Date].[Fiscal Date].[Fiscal Year Name],
                                [Time Order Date].[Fiscal Date].CurrentMember
                                 ) 
                )
select
{[Measures].[Product Rev (with ship, no disc)],
[Measures].[Year To Date]} on 0,
[Time Order Date].[Fiscal Week Name].Children on 1
from [Sales Analysis]

возвращает ошибки для всех значений [Year To Date], как я предполагаю, потому что в неделе более одного члена.

Хочу сравнить с последним днем ​​недели. Как я могу это сделать?

Спасибо, --sw


person Scott Wood    schedule 18.11.2014    source источник


Ответы (1)


Чтобы ответить на ваш вопрос буквально: да, вы можете получить первого или последнего члена набора и, следовательно, уровня, используя _ 1_ и _2 _ методы. Просто обратите внимание, что они возвращают одноэлементный набор, поэтому вы часто будете использовать Tail(something).Item(0).Item(0) для получения члена.

Однако, насколько я понимаю ваш вопрос, вам действительно нужно знать, существует ли в текущем контексте член [Time Order Date].[Date In Past].[a]. В этом случае я бы использовал

with member [Measures].[Year To Date] as
            IIf(Intersect(EXISTING [Time Order Date].[Date In Past].[Date In Past].Members,
                          {[Time Order Date].[Date In Past].[a]}
                         ).Count = 1,
                NULL,
                Sum(PeriodsToDate([Time Order Date].[Fiscal Date].[Fiscal Year Name],
                                  [Time Order Date].[Fiscal Date].CurrentMember
                                 )
                    [Measures].[Product Rev (with ship, no disc)]
                   )
               )
select
{[Measures].[Product Rev (with ship, no disc)],
[Measures].[Year To Date]} on 0,
[Time Order Date].[Fiscal Week Name].Children on 1
from [Sales Analysis]

EXISTING получает набор всех Date In Past членов, существующих в текущем контексте. И пересечение этого с одноэлементным набором члена a имеет либо 1 элемент (если a является членом первого набора), либо 0 элементов (в случае, если a не содержится в наборе), что объясняет условие для IIf.

person FrankPl    schedule 18.11.2014
comment
Спасибо. Это было большим подспорьем! - person Scott Wood; 19.11.2014