Как да видите първите и/или последните стойности на член в йерархия

Има ли начин да видя първата и/или последната листова стойност в ниво на йерархия?

Опитвам се да създам изчислителна величина в 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]

връща нули в мярката [Година до дата] за всички дати в бъдещето.

Тази заявка, която връща изчисления по седмица:

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]

връща грешки за всички стойности [от година до дата], предполагам, защото има повече от един член в седмицата.

Бих искал да го сравня с последния ден от седмицата. Как мога да направя това?

Благодаря, --sw


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


Отговори (1)


За да отговоря буквално на въпроса ви: Да, можете да получите първия или последния член на набор и следователно на ниво, като използвате Head и Tail методи. Само имайте предвид, че те връщат набор от един елемент, следователно често бихте използвали 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