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

Меня попросили предоставить нашему кубу вычисляемое поле со средним (взвешенное было бы хорошо, но невзвешенное приемлемо) количества поступлений за каждый финансовый период на дату этого года (скажем, период 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