Таким образом, вам нужно запустить BottomCount (1 строка) для ваших [Меры]. [_ Еженедельный приток], чтобы получить последний кортеж с ненулевым значением _Weekly Inflow, это будет вычисляемая мера. Далее в YTDмера добавить случай, который проверяет текущее значение пользовательской иерархии [Конец периода]. [Конец периода] к единственному значению вышеуказанной меры.У меня нет образца куба под рукой, но структура запроса будет такой, как показано ниже.
with member Measures.[NewColumn]
as
(bottomcount(
nonempty(
existing
{([Date].[Date].[Date].members)}
,[Measures].[_Weekly Inflow]),
1
).item(0).Name
member
Measures.[YTD]
as
case when [Period End].[Period End].currentmember.name=Measures.[NewColumn] then
Aggregate ( PeriodsToDate ( [Period End].[Period End].[Year], [Period End].[Period End].CurrentMember ), [Measures].[_Weekly Inflow] )
else
null end
Редактировать
with member Measures.[NewColumn]
as
(bottomcount(
filter(
existing
{([Date].[Date].[Date].members)}
,[Measures].[_Weekly Inflow]>0),
1
).item(0).Name
member
Measures.[YTD]
as
case when [Period End].[Period End].currentmember.name=Measures.[NewColumn] then
Aggregate ( PeriodsToDate ( [Period End].[Period End].[Year], [Period End].[Period End].CurrentMember ), [Measures].[_Weekly Inflow] )
when
[Period End].[Period End].currentmember.name=[Period End].[Period End].defaultmember then Aggregate ( PeriodsToDate ( [Period End].[Period End].[Year], [Period End].[Period End].CurrentMember ), [Measures].[_Weekly Inflow] )
else
null end
Редактировать
member
Measures.[YTD]
as
case when [Period End].[Period End].currentmember.name=Measures.[NewColumn] then
Aggregate ( PeriodsToDate ( [Period End].[Period End].[Year], [Period End].[Period End].CurrentMember ), [Measures].[_Weekly Inflow] )
when
[Period End].[Period End].currentmember.name="Feburary 2018" then Aggregate ( PeriodsToDate ( [Period End].[Period End].[Year], [Period End].[Period End].CurrentMember ), [Measures].[_Weekly Inflow] )
else
null end