MDX, изчисляващ средната стойност за фискален период за текущия YTD, както и за две предходни години

Бях помолен да предоставя на нашия куб изчислено поле със средна стойност (претеглено би било добре, но непретеглено е приемливо) на броя допускания за всеки фискален период до момента на тази година (да речем период 7) плюс последните два пълни фискални години - така че останалите 26 периода от този диапазон).

Работя върху него от известно време, но числата са малко неточни и не съм сигурен, че използвам правилния метод:

Avg(
{
periodstodate(
[1_Time].[Hierarchy].[Fiscal Year],
[1_Time].[Hierarchy].currentmember)
,
Descendants(
[1_Time].[Hierarchy].prevmember.parent,
[1_Time].[Hierarchy].[Period]
)
,
Descendants(
[1_Time].[Hierarchy].prevmember.prevmember.parent,
[1_Time].[Hierarchy].[Period]
)
}

, [Measures].[admissions]
)

Йерархията 1_Time е доста проста: фискална година, период (1 до 13) и дати.

Тествах го с помощта на 2016 г. и получавам стойности, които са близки, но не са правилни.

Има ли друг начин да го направя?

Благодаря предварително.


person Frank Cote    schedule 01.03.2017    source източник


Отговори (1)


Тук може да бъдете по-лаконични:

AVG(
    {[1_Time].[Hierarchy].CurrentMember.Parent.Lag(2).Children.Item(0):
    [1_Time].[Hierarchy].CurrentMember},
    [Measures].[admissions]
)

Обяснение + примери:

[1_Time].[Hierarchy].CurrentMember -> 3 period 2017
.Parent -> 2017 year
.Lag(2) -> 2015 year
.Children -> set {1 period 2015 year : 13 period 2015 year)
.Item(0) -> 1 period 2015 year

{[1_Time].[Hierarchy].CurrentMember.Parent.Lag(2).Children.Item(0):
[1_Time].[Hierarchy].CurrentMember}
-> set {1 period 2015 year : 3 period 2017}

Какво имате предвид, като казвате среднопретеглена стойност? Ниво на ден?

person Danylo Korostil    schedule 02.03.2017
comment
Това е претеглена средна стойност или мащабирана... основно аномалните точки от данни не допринасят толкова много (или твърде високи, или твърде ниски), но правомощията, които се решават срещу това тази сутрин... което според мен е добре. Просто гледам да изчисля средна стойност за периодите през текущата фискална година (да кажем 3 през 2017 г.) и двете предходни фискални години (26 периода плюс 3-те през текущата година). - person Frank Cote; 02.03.2017
comment
Току-що опитахте вашия начин и числата съвпадат! Благодаря ви много за чудесното обяснение. - person Frank Cote; 02.03.2017
comment
Чудесно е да чуя! Моля, проверете го като отговорено, за да се убедят другите хора, че проблемът ви е разрешен. - person Danylo Korostil; 02.03.2017
comment
Няма проблем... Мислех, че имам! Благодаря отново! - person Frank Cote; 03.03.2017