Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / OLAP и DWH Новый топик    Ответить
 Средний остаток за произвольный период SSAS MDX  [new]
bideveloper
Member

Откуда:
Сообщений: 114
Добрый день!
У меня в кубе есть такая формула для расчета среднего остатка по месяцам:
sum(DESCENDANTS([Date].[Год - Квартал -Месяц - Дата].CURRENTMEMBER, [Date].[Год - Квартал -Месяц - Дата].[Месяц]), 
([Measures].[Остаток нач] + [Measures].[Остаток кон])/2)/ count(DESCENDANTS([Date].[Год - Квартал -Месяц - Дата].CURRENTMEMBER, [Date].[Год - Квартал -Месяц - Дата].[Месяц]))


Она отлично работает, если допустим, выбираем год, или квартал, или отдельный месяц.
Но если выбрать, например, только 2 месяца из квартала (февраль 2017 и март 2017), то показывает неверный результат.
А пользователи очень хотят выбирать произвольный период из месяцев.
Как можно доработать формулу?
30 май 17, 14:01    [20523416]     Ответить | Цитировать Сообщить модератору
 Re: Средний остаток за произвольный период SSAS MDX  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 1957
bideveloper,

пример, надеюсь, наведет на мысль:

with 
set [s_months] as descendants([Date].[Calendar].[All Periods], [Date].[Calendar].[Month])
member [c_months] as (existing [s_months]).count

select 
  [c_months] on columns,
  [Date].[Calendar Quarter].[Calendar Quarter] on rows
from
  (
    select 
	  {[Date].[Calendar].[Month].&[2006]&[5]:[Date].[Calendar].[Month].&[2007]&[1]} on columns 
	from [Adventure Works]
  )


если бы в AW была бы иерархия Months было бы проще и читалось бы легче, а так.. что есть.
30 май 17, 16:28    [20524321]     Ответить | Цитировать Сообщить модератору
 Re: Средний остаток за произвольный период SSAS MDX  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 1957
а, во, с датами...
with 
set [s_months] as descendants([Date].[Calendar].[All Periods], [Date].[Calendar].[Month])
set [s_days] as [Date].[Date].[Date]
member [c_months] as (existing [s_months]).count
member [c_days] as (existing [s_days]).count

select 
  {[c_months], [c_days]} on columns,
  [Date].[Calendar Quarter].[Calendar Quarter] on rows
from
  (
    select 
	  {[Date].[Calendar].[Date].&[20060520]:[Date].[Calendar].[Date].&[20070110]} on columns 
	from [Adventure Works]
  )
30 май 17, 16:33    [20524352]     Ответить | Цитировать Сообщить модератору
 Re: Средний остаток за произвольный период SSAS MDX  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 31059
Блог
1) сделать фиктивную null-меру c sum-агрегацией над остатком
2) сделать меру количества дней
3) сделать CM, где одно поделить на другое
30 май 17, 17:40    [20524684]     Ответить | Цитировать Сообщить модератору
 Re: Средний остаток за произвольный период SSAS MDX  [new]
bideveloper
Member

Откуда:
Сообщений: 114
Спасибо!
31 май 17, 00:58    [20525775]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить